TM500 TMA 用户指南实战笔记:脚本编排、日志配置与远程自动化排障
简介:《TM500 LTE Test Mobile Application用户指南》是一份面向TD-LTE基站研发、生产和现场测试的官方手册,源于Aeroflex(艾法斯)TM500网络测试仪文档套件,适合设备厂商的研发工程师、测试工程师、质量保证及技术支持团队使用。手册围绕TM500 Test Mobile Application展开,重点讲解TMA主窗口与工具窗口的组织方法、测试场景的搭建与执行、配置示例、操作步骤以及常见问题排查,能够帮助用户模拟真实移动终端,对基站射频性能、协议栈功能和系统级行为进行高效验证。资源为单个docx文档,压缩包大小4.62MB,结构包含“关于本文档”“TMA入门”等章节,同时说明文本约定、技术支持和培训资源,便于快速定位所需功能。由于TM500已被华为、中兴、大唐、诺基亚-西门子、阿尔卡特-朗讯、爱立信等主流基站厂商广泛采用,本手册在LTE基站产品开发与现网测试中具有较强的参考价值。已有278人学习下载,适合需要系统掌握TM500操作流程并提升LTE基站测试效率的工程技术人员。
1. 从 TMA 到 TM500:LTE 测试脚本为什么绕不开这份用户指南
TD-LTE 基站测试里,最磨人的环节往往不是把 TM500 接到被测基站上,而是把脑子里那套「先配信道、再灌业务、最后抓层三信令」的流程,变成一条能重复执行、能稳定出数据的脚本。TM500 Test Mobile Application(TMA)就是 TM500 的桌面控制端,这份编号 46882/878、Issue 16 的《TM500 LTE Test Mobile Application User Guide》,讲的全是操作 TMA 的细节:Preferences 怎么配、Test Manager 怎么编排、Test Steps 和 Measurements 怎么用、远程自动化怎么连。TMA 这套软件在主流 TD-LTE 基站厂商的研发、生产和现场测试里出现频率很高,适合正在做基站研发测试、生产验证,或者准备把 TM500 接进自动化平台的工程师。现在搜「LTE TM500 用户手册」,常见能命中的资料大多源自这份指南。我按「搭环境、编脚本、抓数据、调远程、排故障」的顺序把手册拆了一遍,下面写的是带参数、带步骤的完整笔记。
2. 先搭测试环境:Preferences 与 Profile 的完整配置路径
2.1 启动 TMA 后的窗口体系:工具窗口决定你做事顺不顺
第一次打开 TMA 的人,多半会被满屏窗口吓到。手册的 Getting Started 部分专门花了一节讲主窗口和工具窗口:主窗口是承载测试对象的容器,工具窗口里放的是操作入口和结果展示,包括工程树、Test Step Library、测量视图、日志视图等。默认布局不一定顺手,但这些窗口都能拖拽停靠。我一般会先把常用测量面板拖到固定位置,这样比每次执行完再点菜单去翻日志快得多。
窗口布局里还有一个容易被忽略的入口:View 工具栏。它控制哪些工具窗口显示、哪些隐藏。窗口一多,隐藏不用的面板能减少误点。TMA 的任务入口也集中在这里,启动、连接、执行、停止,都是从这里下手。窗口体系本身不难,真正影响测试效率的是隐藏在后面的一整套 Preferences,也就是所有「默认行为」的总开关,下面按连接、日志、转换、排障的顺序逐个讲。
2.2 Connection 偏好:远程连上 TM500 的第一道关
TMA 是运行在 PC 上的控制端,TM500 是一台独立测试设备,两者之间走网络连接。Connection preferences 控制的就是这条链路怎么建立、超时多久、断线怎么处理。配错这里,后面所有功能都白搭,因为连不上设备,脚本、测量、日志全都无处谈起。
| 偏好项 | 关键参数 | 影响范围 |
|---|---|---|
| 目标设备地址 | 设备控制网口 IP | 决定 TMA 连到哪台 TM500 |
| 会话端口 | 控制端口号 | 决定通信通道是否可达 |
| 连接超时 | 超时秒数 | 影响自动化脚本失败判断的速度 |
注意:Connection 偏好里填的是 TM500 控制网口地址,不是被测基站的 IP。把基站地址填进来是最常见的错配,现象就是 TMA 一直转圈、连不上。我自己的习惯是先把 TM500 的控制 IP 固定下来,再在 Connection 偏好里填地址和端口,超时时间保留默认,等真出现断连再针对性调。
2.3 Data Log 与 Conversion 偏好:日志文件从哪来、往哪去
Data Log preferences 决定日志往哪个目录存、文件怎么命名、是否自动落盘;Conversion preferences 决定日志文件在转换时输出成什么格式。这两项不配好的后果很直接:测了半小时,回头发现日志根本没存下来,或者存下来了但格式不对,白跑一轮。
我一般会把日志输出目录固定到一个独立分区,避免系统盘写满之后 TMA 异常退出。文件命名尽量保留时间戳,这样归档时按日期排就能找到对应测试。Conversion 的默认格式够日常分析用,但如果后面要接自己写的解析脚本,就得提前确认输出格式是否兼容,换格式要趁早,不要等跑完几万条用例再回头转。
2.4 命令行、错误监控与性能选项:平时不起眼、排障时救命
Command Line preferences 影响从命令行启动 TMA 时的行为,比如启动后是否自动加载某个 Profile、是否自动打开日志窗口。Error Monitor preferences 管理错误监控的呈现方式,把 TMA 运行期的异常集中显示到一个面板里,排障时第一步应该看它,而不是去翻原始日志。
Performance tuning preferences 和 Performance charting priority preferences 解决的是大批量测试时的卡顿问题。默认配置在小流量场景下没问题,但长时间灌业务、多窗口刷新图表时,CPU 和内存占用会上去。我遇到过一次性能图表刷新把 TMA 界面拖到卡死的情况,后来把图表刷新优先级调低,测试执行就不受影响了。这些选项平时不起眼,批量回归时往往能救命。
2.5 Profile:把整套偏好固化成可切换的环境配置
Preferences 一项项配完,如果直接关窗口,下次换台机器、换个场景就得重新来一遍。手册第三章讲的 Profile 机制就是干这个的:一个 Profile 就是一套完整的环境配置快照,可以命名保存,换场景时直接加载。
具体的落地步骤我一般是这样走的:
- 打开 Preferences,逐页配好 Connection、Data Log、Conversion 等各项参数;
- 在 Profile 管理里把当前整套配置保存成一个命名的 Profile;
- 换测试场景时加载对应 Profile,而不是手动改参数;
- 发现行为异常时,对比两个 Profile 的差异,快速定位是哪条偏好导致的问题。
我长期维护三个 Profile:研发调试用、产线验证用、自动化回归用。三者的最大差别集中在 Data Log 落盘策略和日志详细级别上,研发调试要全量日志,产线验证只留关键信息。每次换 TM500 设备,记得核对 Profile 里 Connection 的地址是不是当前设备,这是 Profile 复用最容易踩的隐蔽坑。
3. 用 Test Manager 编排测试:从单条脚本到套件级复用
3.1 Test Manager 与 Test Step Library:先分清两个面板的角色
手册第四章叫 Working with the Test Manager,核心是两套东西:Test Manager 和 Test Step Library。Test Manager 管理测试套件、测试用例、测试脚本、命令这一整棵树的组织关系;Test Step Library 是可用测试步骤的素材库。前者是编排区,后者是素材池。
很多人一开始会把 Test Step Library 当成直接执行步骤的地方,其实不是。Test Step Library 里的步骤要拖进 Test Manager 里的脚本,成为脚本的一部分,才会被真正执行。分层设计的原因很直接:为了复用。步骤库拆成原子能力,脚本按需组合,套件批量调度,这样一套测试资产才能在不同项目里反复使用,而不是每个项目从零开始堆。
3.2 生成一个简单脚本:从右键新建到参数落地的完整路径
手册给了一条非常明确的路径,照做就能跑通:
- 打开 Test Manager,定位到测试套件节点;
- 右键新建测试用例,给用例起一个可识别的名字;
- 在用例下新建测试脚本,把脚本加入执行序列;
- 从 Test Step Library 拖拽或双击需要的测试步骤;
- 逐项填写步骤参数,配置信道、业务、测量相关字段;
- 保存脚本,把用例挂到套件下;
- 在 Test Manager 里选中用例,执行。
这里的第 5 步是新手最容易卡住的地方。Test Step 的参数是表格形式的,每一行一个参数,填错了脚本也能保存,但跑到那一步就会报错。我习惯在第一遍填参数时对照手册里的参数说明逐行确认,特别是信道相关的配置,填错一个 ID 后面全乱。
3.3 套件、用例、脚本、命令的层级:嵌套关系决定复用粒度
四个层级的定位需要先理清,因为它们直接决定你能复用到什么粒度:
| 层级 | 作用 | 例子 |
|---|---|---|
| 测试套件 | 一组用例的集合,按测试阶段组织 | 接入类回归、吞吐量验证 |
| 测试用例 | 一个完整测试场景 | 小区接入加业务建立 |
| 测试脚本 | 用例里的执行序列 | 按顺序执行信道配置、灌业务、测量 |
| 命令 | 脚本里的最小动作 | 一条信道配置命令、一次测量触发 |
实际使用中,套件是执行调度的单位,用例是结果统计的单位,脚本是逻辑复用的单位,命令是最小操作单位。一个用例可以被多个套件引用,一个脚本可以在多个用例里复用,这样才能避免同一段逻辑在不同用例里各写一份、改一处要动多处。
3.4 模板与快捷键:把高频操作从三次点击降到一次
模板(Templates)和快捷键(Shortcuts)是 Test Manager 里最容易被忽略的两个效率工具。模板可以把一套配置好的脚本结构保存下来,新用例从模板复制,而不是重新拖步骤、重新填参数。快捷键则把高频操作绑定到键盘上,减少鼠标在菜单和面板之间来回移动。
我一般会把「开始执行」「停止执行」「打开日志视图」这三个绑到顺手的位置。模板的收益更明显:产线验证用的脚本结构高度重复,我把「接入后灌业务再测量」的整套脚本存成模板,新项目直接用,省掉大量重复填参。参数差异只改模板里预留的几个字段,不用动整体结构。
3.5 注释与组织:半个月后还能看懂自己搭的套件
Test Manager 支持给套件、用例、脚本、命令加注释。注释不是写给同事看的,是写给两周后的自己看的。我见过太多测试脚本跑完一轮之后,作者自己都说不清里面每个步骤在干什么。
我现在每个用例的第一行都固定写三样东西:目的、前置条件、预期结果。组织上按功能模块划分套件目录,命名带前缀,比如接入类、移动性类、业务类。这样执行完一批用例,哪条挂了,打开注释就知道它的设计意图,能立刻判断是环境问题还是脚本问题,不用对着一条光秃秃的脚本猜。
4. Test Steps 与 Measurements:把测试意图变成信道配置与日志数据
4.1 Test Step 分类总览:十一个类别分别管什么
手册第五章给出了完整的 Test Step 列表,按功能分成十一个类别。这个分类就是整个 TM500 测试能力的目录,值得先整体看一遍:
| 类别 | 职责 |
|---|---|
| System Control | 系统级控制,复位、同步、上电 |
| Script Control | 脚本流程控制,循环、跳转、等待 |
| Measurement | 测量触发与配置 |
| Layers 1/2 | 层 1、层 2 行为控制 |
| Channel Configuration | 上下行信道配置 |
| Channel deletion | 删除已配置信道 |
| Test features | 测试专项功能 |
| Higher Layers | 高层协议流程 |
| NAS | NAS 信令流程 |
| APT | 专项自动化测试功能 |
| Data service generator | 用户面数据业务生成 |
| Override tables | 系统消息参数覆盖 |
想知道某个 step 具体做什么,不用死记手册。Test Step Library 里选中一个步骤,界面会显示它的描述和参数名,参数名本身就是线索。我判断一个 step 的用途,一般先看它的类别,再看参数列表里的关键字,比如信道相关的会带小区和带宽字段,业务相关的会带流量模板字段。
4.2 信道配置与信道删除:配了不删,下一个用例就得翻车
信道配置是 Test Step 里使用频率最高的一组,上下行信道、物理信道参数都在这里完成。与它配套的信道删除却经常被人忽略,手册专门把 Channel deletion 单独列了一类,说明删除是一个正式动作,不是顺手为之。
我自己翻车过一次:一条用例配置了下行信道跑完测试,没做删除,直接在下一个用例里继续配新的信道配置。结果新用例跑出来的结果始终不对,排查了半天,发现是上一条信道残留,新旧配置互相干扰。从那以后,我每条用例的最后一个步骤固定放「删除信道」或系统复位,形成闭环。信道残留不只是污染当前用例,严重时会影响 TM500 与基站之间的同步状态,后续用例全都白测。
4.3 数据业务生成器与覆盖表:灌业务和改系统消息的两个入口
Data service generator 用于生成用户面数据流,是测吞吐量、时延这类业务指标的核心入口。它模拟真实终端发起的业务,配置流量大小、持续时间、上下行比例这些参数。测吞吐量时,业务参数配得对不对,直接决定结果可不可信。
Override tables 则用来覆盖系统消息里的参数,是构造异常场景和边界条件的重要手段。比如想验证终端在某个非标准配置下怎么表现,不用改基站,直接通过覆盖表改下发参数。这两个功能配合使用,能模拟大量真实空口场景:灌上业务流量,同时覆盖系统消息参数,观察终端行为和测量结果的变化。
4.4 日志类型与 Layer 3 Status:先从日志决定能看到什么
手册第六章 Working with Measurements 内容很多,开头就讲 Logging types,也就是日志类型。日志类型决定你回看时能看到什么:Layer 3 Status 日志记录 RRC、NAS 的状态变化,适合信令流程排查;测量日志记录射频测量结果,适合指标分析;协议数据日志记录原始协议消息,适合深入定位。
选型逻辑很简单:日常信令排查优先开 Layer 3 Status 日志,射频指标分析用测量日志,要定位协议级异常才开完整协议数据日志。日志开得越全,对 TMA 的性能影响越大。批量跑测试时我一般只开当前分析需要的层级,全量日志留到单条用例复现问题时再开。
4.5 手动测量、自动测量与星座图:抓射频指标的正确姿势
测量日志又分手动测量和自动测量两类。手动测量在需要的时候抓一次,适合精确定位问题;自动测量按设定周期持续抓取,适合回归验证和大批量数据统计。两者不是替代关系,定位阶段用手动,回归阶段用自动。
星座图(constellation diagram)是射频指标分析里很有价值的视图,能直观反映调制质量。点开星座图看到发散明显,基本可以判断射频通道有异常,再结合 EVM 数值量化恶化程度。看测量结果时,先看整体数值是否落在正常范围,再打开星座图看分布形态,比只看单个指标更容易发现问题。
4.6 日志文件转换:原始日志到可分析数据的最后一公里
测量做完,数据落盘是原始格式,要转成可读的日志文件才能进入后续分析。这个转换动作在 Conversion 偏好里设定输出格式,再对原始日志执行转换。转换失败或者转出来内容为空时,不要急着怀疑转换工具,先看原始日志文件本身有没有数据。
我遇到过转出来空文件的情况,最后发现是原始日志里那个时间段根本没有打点。测量没触发,日志自然没有内容,转什么格式都是空的。所以现在的习惯是先确认原始日志大小非零、里面有对应时间点的记录,再执行转换,能省掉不少排查时间。
5. 常见问题排查:RCI 远程自动化与日志处理里的五个坑
5.1 排查顺序:连接层、配置层、数据层
TMA 支持远程自动化,远程控制接口(Remote Control Interface,RCI)是它暴露给自动化脚本的通道。自动化平台通过 RCI 建立远程连接,发送文本命令,TMA 执行后返回指示消息和响应。整个链路分三层:连接能否建立、配置是否正确下发、数据是否按预期产出。排查问题我固定按这个顺序走,跳过连接层直接查数据,大概率白费时间。
连接层问题表现为连不上、超时、断连;配置层问题表现为命令发出去了但没生效;数据层问题表现为日志有记录但内容不对。三层现象相互独立,先定位在哪一层,再动手查具体原因,效率高得多。
5.2 坑 1:远程连接老是超时
现象:自动化脚本连接 TMA 时反复超时,或者偶发成功、大部分失败。
原因:最常见是目标地址填错、TMA 没有启动、端口被占用,或防火墙拦截了通信端口。
解决:先确认 TMA 已经启动并能正常连接 TM500,再检查目标地址和端口,最后用命令验证链路:
ping 192.168.1.100 netstat -ano | grep 8080这里的地址和端口按实际环境替换。ping 能通说明网络链路没问题,netstat 能看到监听端口说明 TMA 这边在正常监听。如果 ping 通但端口没监听,重点看 TMA 配置里端口是否正确、是否有另一个 TMA 实例占用了端口。我遇到过一次端口被占导致远程全部超时,杀掉多余进程后恢复。
5.3 坑 2:日志文件压根没生成
现象:测试执行完了,去指定目录看,一个日志文件都没有。
原因:Data Log 偏好里自动落盘没有开启,或者保存目录不存在、没有写权限。
解决:打开 Preferences 里的 Data Log 页,确认自动落盘开关打开,保存目录改成实际存在且有写权限的路径。改完之后跑一条短用例验证,执行期间打开目录看文件是否在增长。文件在增长说明落盘正常,文件始终不存在就去检查偏好配置和磁盘空间。日志没落盘的排查成本很高,因为测完才发现,数据不可回溯,所以我现在跑长测试前一定会先确认日志文件已经在写。
5.4 坑 3:LC_GRP 配了日志组,数据里却什么都没有
现象:通过 RCI 发送了 LC_GRP 命令配置日志组,执行完日志数据里找不到对应内容。
原因:组 ID 和类别 ID 对不上,或者命令格式不对,导致配置没有落到实际生效的配置上。手册附录 A 有一张 Measurement Group and Category IDs 表,组和类别的对应关系都在里面,不看表直接猜 ID 很容易配错。
解决:先查附录 A 确认组 ID 和类别 ID 的对应关系,再按下面的形式整理命令:
LC_GRP 1,10,20 LC_CAT 1,3第一行的含义是:配置日志组 1,包含类别 10 和类别 20;第二行是在组 1 里细化类别配置。命令发出后要读返回的确认消息,确认生效了再开始跑任务。不要发完命令直接开跑,配置生效与否必须在执行前确认。LC_GRP 和 LC_CAT 属于 Logging configuration commands,TMA 收到后会返回结果,返回结果异常就要先检查 ID 再检查格式。
5.5 坑 4:测试脚本跑到一半停住不动
现象:用例执行到某个步骤卡住,不停也不报错,日志停在同一个位置。
原因:步骤在等待一个条件,比如测量完成事件或定时器触发,超时设置过短或结束条件设置不合理。
解决:打开卡住位置的步骤参数,重点看超时时间和结束条件。把超时调大、把「等待某一事件」改成固定延时,通常能绕过去。我遇到过一种情况是步骤等待一个永远不会来的事件,因为前置步骤实际没跑成功。这时候先检查前置步骤有没有真正执行完,再看等待条件本身是否合理,顺序不能反。
5.6 坑 5:日志转换成功,转出来却是空文件
现象:Conversion 执行成功,没报任何错误,但输出文件打开是空的。
原因:原始日志里没有包含所选转换层级的数据,或者原始日志本身就是空的。转换工具不会替你做数据甄别,它只是按格式把已有内容转出来。
解决:转换前先看原始日志文件的大小和内容,确认里面有对应测试时间段的数据。原始文件有数据、输出为空,再检查转换格式和过滤条件,比如是否只选了一个特定的测量类别,而这次测试根本没记录那个类别。先确认原始数据存在,再怀疑转换配置,能省掉大量无效操作。
6. 用 Session History 把手动测试变成可复现的回归基准
6.1 一次完整的存档动作:导出会话、生成命令日志、抽取数据
TMA 的 Session History 机制会把一次连接里的操作和事件记录下来。这个东西平时不起眼,但它是把「不可复现的手动测试」变成「可对比的回归基准」的唯一路径。我每次跑完一轮关键验证,都会做一套完整的存档动作:
| 存档动作 | 产物 | 用途 |
|---|---|---|
| 导出会话 | 会话存档文件 | 完整保存一次连接的过程状态 |
| 生成命令日志 | 文本命令序列 | 记录这次测试实际下发过哪些命令 |
| 生成数据文件 | 抽取后的数据文件 | 单独提取测量数据用于后续分析 |
操作上先用 Session Browser 查看会话,确认会话完整,再导出存档,然后用 Generate Command Log Files 生成命令日志,最后用 Generate Data Files 抽取需要的数据文件。这套动作大概多花五分钟,但换来的是整个测试过程可追溯。
6.2 用存档做回归验证:对比两次执行
有了存档,回归验证就变成一次对比操作。新版本固件上来后,跑相同的用例,把这次的命令日志和上次的存档逐条对比,哪条命令变了、哪个参数被改了,一目了然。
有一次我发现某条用例在新版本上偶发失败,把前后两周的会话存档翻出来对比,定位到信道配置里一个参数被默认值改差了一位,前后差异在命令序列里非常明显,比对着屏幕猜快得多。从那以后,我每次跑完一轮回归,都强制导出一份命令日志存档,按日期编号归档,宁可多存不可少存。这份手册给了完整的操作路径,但真正让它产生价值的,是你自己把它变成日常工作习惯。希望帮到你。
本文还有配套的精品资源,点击获取