董昕 梁艳 龙灵 石欣漾
摘 要:双向无线数字对讲机中的客户事件代码表,提供了对讲机及其附属设备中使用的各种操作码的定义和分配。该代码表有超过400个事件,使用传统测试方法进行全面覆盖大约需要1个月。该文介绍了一种新的方法来提高测试效率,并开发了一套自动化测试用例及测试脚本。自动化的测试脚本可重复使用,易于回归测试。测试实践证明,该方法可以节省60%的工作量,并提高无线电、附属设备和第三方产品的生产效率。该方法可加快和简化代码表测试,已被证明是可行的,并且十分高效,值得推广和部署。
关键词:嵌入式设备;自动化测试;测试脚本;回归测试
中图分类号:TP311.56 文献标志码:A
0 引言
作为公共安全领域广泛使用的集群通信终端设备,双向无线数字对讲机支持即时通信、组呼通播、系统呼叫、机密呼叫等功能,不仅经济实用、运营成本低、不耗费通话费用,而且使用方便、保密性强,特别适用于紧急调度和集体协作的工作场景。客户事件代码表(Subscriber Event Code Table,SECT)操作码,为双向无线对讲机的事件集及其的相关状态提供通用定义。事件代码标识事件本身,状态码标识与事件关联的状态信息。通過一组公共的事件操作码,使各个对讲机用户之间具有更强的互操作性和兼容性。因此,我们需要确保对讲机和配件间具有通用的事件操作码集。
1 传统测试方法
对讲机有超过400个SECT操作码事件需要测试。传统的测试方法主要通过手动测试,完成全面覆盖测试大约需要熟练测试人员花费1个月的时间。
2 新的测试方法
2.1 自动化测试架构
2.1.1 自动化工具CCP Tester概述
自动化工具CCP Tester软件包含2个部分。1) 由Microsoft VC + +开发的主要应用程序。2)基于TCL脚本开发的一组测试脚本。它提供TCL以使用VC应用程序的任何功能。同样,VC应用程序可以调用TCL动态链接库中的任何函数。主要的应用程序、TCL测试脚本和通信组件组成了CCP Tester这个自动化工具,如图1所示。
CCP Tester的主要功能包括协议规范配置、通信链接管理、单指令测试、测试套件/项目配置、测试套件执行、测试进度监控、测试报告生成及设备仿真等。
2.1.2 CCP Tester脚本
在新方法中,使用测试套件执行方法进行自动化测试。也可以在CCP Tester的“脚本列表”窗口中选择选定的脚本来执行特定的测试脚本。测试套件执行是执行所选测试套件中的每个脚本,相对于每次单个测试用例执行来说效率更高[1]。
图2是测试脚本的示例。用TCL编码,不需要在执行前进行编译。TCL语言的可嵌入性和可扩展性,使VC应用程序可以与之无缝地协同工作[2]。TCL提供的所有功能使CCP Tester具有以下3个优点。1)便捷的测试脚本/测试套件管理环境。2)易于扩展测试脚本集以适应新需求。3) 用户易于理解和更新测试脚本[3]。
CCP Tester测试脚本按如图3所示的流程图的顺序运行。
为了更高效地测试一组SECT操作码,创建了一个测试套件以实现批量运行。由于批量运行测试,并且自动更新其结果,因此大大减少了测试执行的工作量和时间[4]。
2.2 辅助工具AT debug
但是,自动测试不能完全代替手动测试[5]。 在某些情况下,可以利用辅助工具AT debug手动检查对讲机的行为。AT debug工具是一种类似于telnet的应用程序,可在用户和对讲机之间提供CLI(命令行界面)交互。 它提供AT命令,方便开发人员与对讲机进行交互。为了支持新命令,需要进行以下更改。
2.2.1 通过以下方式向AT命令系统注册新命令
cmd_register(cmd_callback_functionA,
cmd_string,cmd_help_info);
2.2.2 实现命令回调函数用来解析用户输入的字符串
void cmd_callbback_functionA(char *cmd, UINT8 length)命令回调函数的示例如图4所示。用户输入将由AT命令系统过滤,只有当第一个命令部分与注册的的命令字符串匹配时,才会调用响应的回调函数。
下面以一个实例来具体说明AT debug命令回调函数的过程。对讲机利用调试器任务侦听和处理请求。当TCP客户端使用命令“telnet 192.168.10.1 8501”从PC启动连接时,AT debug将检索该请求并存储即将到来的连接。一旦AT debug认为用户完成了一条命令,命令解析器系统会被触发,用来以搜索第一部分是否匹配。如果与命令系统匹配,则会调用已注册的回调函数来执行相应的功能[6]。在回调函数中,开发人员可以调用AT debug接口以输出显示所需的信息。
AT debug命令实例如图5所示。该命令打开对讲机显示屏的背光。测试人员可以通过检查对讲机的背光灯是否点亮,来验证软件是否实现需求。
3 结语
该方法结合了自动测试和手动测试的优点,以此来提高软件的质量。经过实验统计,大约70%的测试用例是通过自动测试运行的,其他30%的测试用例是通过手动测试运行的,如图6所示。
测试实践证明,证明该方法可以节省大约60%的工作量,并提高对讲机、附属设备及第三方产品的开发效率,如图7所示。
通过新旧方法的比较,证明此方法具有一定的创新性,可加快和简化嵌入式设备的软件的回归测试。并且能有效提高软件开发及测试人员的工作效率,值得推广和部署。
参考文献
[1]夏佳佳,邹毅军,周江伟.嵌入式软件自动化测试系统研究[J].计算机测量与控制,2016,24(4):22-25.
[2]陈佐,张怀相,方景龙.嵌入式软件自动化测试技术[J].计算机工程与设计,2018,39(10):3125-3131.
[3]Garousi V,Mika M V.When and what to automate in software testing? A multi-vocal literature review[J].Information and Software Technology,2016,76(8):92-117.
[4]董昕,王杰.一种自动生成软件测试用例的新方法[J].计算机应用与软件,2017,34(10):46-50.
[5]Li X,Mutha C,Smidts CS.An automated software reliability prediction system for safety critical software[J].Empirical Software Engineering,2016,21(6):2413-2455.
[6]Marcel Bohme,Soumya Paul.A Probabilistic Analysis of the Efficiency of Automated Software Testing[J].IEEE Transactions on Software Engineering,2016,42(4):345-360.