凯云科技软件测评中心于2022年7月底参加了中国航天科技集团有限公司软件评测中心组织的嵌入式软件功能测试和接口测试能力验证计划PT008,取得满意成绩并顺利通过能力验证。本次验证计划共计74家实验室参加,其中不乏国内知名大型测试机构,包括我中心共计22家检测出14个及以上的缺陷,约占30%。
图1:CNAS-STEC-PT008
嵌入式软件功能测试和接口测试能力验证
01
前言
本次测试要求根据GJB/Z 141-2004《军用软件测试指南》中的功能测试和接口测试条款对被测件进行测试。被测系统是一个模拟的天线伺服控制软件,为典型的控制系统嵌入式软件,主要功能是接收上位机指令发送的遥控指令,通过伺服控制算法,向天线座驱动发送控制量,并与上位机通过串口进行通信回传执行结果与状态。所有测试要求在10个工作日内完成,这是对所有参试测评中心嵌入式软件测试手段、测试人员能力的一次全面考验。我中心经对测试需求的认真分析,决定采用公司自主研发的测试管理系统STM和嵌入式软件半实物仿真测试集成开发环境ETest开展本次能力验证的软件测试工作。
能力验证结果发布后,公司对参与此次能力验证的有关单位进行了调研,在本次能力验证工作中应用了ETest测试工具及STM管理系统的测评中心均取得较满意成绩。我们分别从协议信息包的生成、测试用例的设计、人力投入、测试占用时间、文档资料准备、缺陷发现结果等角度进行了对比分析。结果可以看出,无论是测试效率还是测试能力均提高了70%。
序号 | 对比项目 | 传统测试技术单位 | 工具应用单位(ETest、STM) | 效果 |
1 | 协议信息包生成手段 | 程序员编程、调试、测试 | ETest拖曳、简单脚本开发 | 能力要求降低,无需开发参与 |
2 | 测试用例及数据设计手段 | 人工设计数据,繁琐、容易遗漏 | 等价类、边界值、组合自动生成测试数据 | 测试充分性大幅提高 |
3 | 测试数据管理 | 使用Wrod、Excel等方式管理,结构化与可视化程度较差,需要大量的标准化工作 | STM进行需求分解、测试用例管理 | 结构化程度提高,省去繁琐的标准化共工作 |
4 | 人力投入(个) | 至少6人 | 3人 | 50% |
5 | 测试占用时间(人时) | 420人时以上 | 180人时 | 57% |
6 | 文档资料准备占用时间(人时) | 72人时 | 12人时 | 83% |
7 | 缺陷发现结果(14个及以上的缺陷) | 约占30% | 全部 | 70% |
结论 | “测试占用时间+文档资料准备占用时间”反映了测试的效率,“缺陷发现结果”反映了测试能力,测试效率和测试能力均提高了70%。 |
表1:与传统测试技术效果对比
02
被测软件概要介绍
天线伺服系统由上位机、天线控制器及天线座组成,伺服控制软件运行在天线控制器内部DSP芯片上,配合硬件平台和上位机软件共同控制天线座转动,使天线指向目标。上位机负责向天线控制器下达遥控指令,提供天线控制器所需的工作参数,查看天线伺服系统的状态信息。天线控制器是整个天线伺服系统的核心,负责处理遥控指令,计算目标指向角,计算并输出速度控制量。
图2:伺服控制软件系统结构
伺服控制软件与上位机的接口通信协议多达26种,通信协议中包含非整字节的字段,以及很多字段是需要根据比例因子换算为实际的变量值,要求协议数据包用十六进制从模拟的软件界面中输入。上位机与伺服控制软件通信的基本协议帧如下:
同步字 | 帧长度 | 方式字 | 帧信息 | 校验字 |
2字节 | 2字节 | 4字节 | n字节 | 2字节 |
◆ 同步字:2 字节。固定内容为:0xEB90。
◆ 帧长度:2 字节。帧长度为方式字和帧信息所占用的字节数。
◆ 方式字:4 字节。所有的帧数据都必须遵循下表的格式。
格式 | 标识 | 字节 | 描述 |
方式字 | T | 1 | 信息帧类型 |
C | 1 | 信息代号 | |
SEQ | 2 | 信息帧序号 |
◆ 帧信息
帧信息长度可变。
◆ 校验字:2 字节。从“同步字”至“帧信息”,将字节内容依次进行累加。计 16 位,不计进位。
帧信息字段的内容是根据方式字中的T来定义的,以设置矢量参数包指令的帧信息说明为例(见下表),帧信息组成比较复杂,包含有无符号整型、单精度浮点、双精度浮点、有符号整型(添加比例因子),时间要换算成毫秒计数等。
设置矢量参数包(帧信息)
序号 | 参数 | 数据长度 | 取值说明 | 备注 |
1 | 矢量参考时刻T0 | 40bit | 无符号整型 | 有效范围:[0,240-1],单位:ms。表示从 2022 年 1 月 1 日 0 时 0分0 秒开始的毫秒计数。 |
2 | 天线位置矢量X | 64bit | 双精度浮点 | 单位:m |
3 | 天线位置矢量Y | 64bit | 双精度浮点 | 单位:m |
4 | 天线位置矢量 Z | 64bit | 双精度浮点 | 单位:m |
5 | 天线速度矢量VX | 32bit | 单精度浮点 | 单位:m/s |
6 | 天线速度矢量VY | 32bit | 单精度浮点 | 单位:m/s |
7 | 天线速度矢量VZ | 32bit | 单精度浮点 | 单位:m/s |
8 | 目标位置矢量X | 64bit | 双精度浮点 | 单位:m |
9 | 目标位置矢量Y | 64bit | 双精度浮点 | 单位:m |
10 | 目标位置矢量 Z | 64bit | 双精度浮点 | 单位:m |
11 | 目标速度矢量VX | 32bit | 有符号整型 比例因子: 5×2 -23 | 有效范围:[-1200,1200],单位: km/s |
12 | 目标速度矢量VY | 32bit | 有符号整型 比例因子:5×2 -23 | 有效范围:[-1200,1200],单位: km/s |
13 | 目标速度矢量VZ | 32bit | 有符号整型 比例因子:5×2 -23 | 有效范围:[-1200,1200],单位: km/s |
14 | 保留 | 8bit | / | / |
15 | 目标位置矢量Y | 64bit | 双精度浮点 | 单位:m |
03
测试方法的分析
对于伺服控制软件来说,要测试其伺服控制功能,需要通过设置矢量参数包、设置天线指向模式、设置修正矩阵、发送时间校准指令等一系列信息帧通信才能使得其进入到伺服控制功能,这个过程涉及到多个串行通信信息帧的发送,如何快速生成满足格式要求的信息帧就显得尤为重要。如何产生帧信息是摆在测评中心面前的一大难题,如果使用通用程序设计语言编写C/C++程序产生这些信息帧,不仅效率不高,而且极易出错。如果使用人工编写这些信息帧,则不仅工作量巨大,而且难以根据测试数据设计很快做出信息帧。
为顺利完成该项能力验证,我们的思路是用公司自主研发的测试管理系统STM设计测试用例以及测试数据,只需要关注测试数据的设计,无需关注信息帧报文如何组包;我们使用嵌入式软件半实物仿真测试集成开发环境ETest开发协议帧格式以及协议帧数据生成脚本,并将生成的协议信息帧直接填入到测试管理系统STM的测试用例中,从而有条不紊地完成软件测试工作,达到较高的测试覆盖率。
04
半实物仿真测试系统集成开发环境ETest之开发
本次验证计划基于ETest开发主要工作有:协议定义、脚本开发、设计用例、数据生成。
1.协议定义
1)在ETest图形界面通过拖拽方式定义各协议,设置字段类型;
2)根据协议要求设置字段的字节序、最大值与最小值、默认值;
3)选择校验算法,设置校验字段。
通过上述几步很快完成全部26个协议的定义。
图3:ETest协议定义
2.脚本开发
通过测试脚本的编写,完成比例尺以及数组等的特殊处理,就可以按照任意要求形成所需要的协议信息包了。我们针对不同的通信协议分别开发出对应的测试程序。例如t13程序就是对矢量数据信息帧的处理程序,在这段处理程序中对矢量参考时刻T0完成从日期时刻到2022年1月1日0时0分0秒开始的毫秒计数的转换,同时完成目标速度矢量VX、Vy、Vz的比例因子代入。我们还通过for循环生成批量的天线初始矢量设置信息帧。
图4:ETest脚本开发
3.设计用例
在ETest中,实现了测试程序开发与测试数据设计的分离,ETest中将测试数据简单地抽象为用例,我们可以直接在用例节点设计测试数据,测试数据可以用类似AntZPos:[10000,0,10,300,10000]这样的表达式进行描述,这就代表设计了5个用例,取了AntZPos的5个值。
设置该用例所对应的程序,运行程序时自动关联用例。
图5:ETest设计用例
4.数据生成
通信协议、程序、用例均完成后,就可以用程序执行的方式,直接执行程序,程序会自动从关联的用例中取出测试数据生成数据帧。
图6:ETest数据生成
也可以不编写程序,直接用ETest快速测试的方法生成组包的界面。当然,这需要自己进行比例尺的变换,因此我们此次未采用。
图7:ETest快速测试
05
测试管理系统STM
为了保证测试能充分有序进行,本次测试工作基于测试管理系统STM进行测试需求分析、测试用例设计和测试文档生成,将ETest所生成的信息包直接填入测试用例的步骤描述中,对着测试步骤描述就可以让测试执行人员有序地开展测试执行工作。
通过使用测试管理系统STM,我们可以很容易地划分出测试项并能观察出测试项、测试子项是否通过。
图8:STM需求分析设计
在STM中测试用例设计可以采用参数的方式,用实例来直接进行测试数据设计,下图中<<<指令名称>>>、<<<方式字异常指令>>>均为步骤参数值。
图9:STM测试用例设计
参数值取值可以形成测试实例集,测试实例集可有效保证测试的充分性,如下图。
图10:STM测试用例集设计
完成测试用例数据设置后,即可按照步骤一步步执行测试,此时,已设置好各类指令报文,直接将其复制到被测件的协议输入区域就可以完成相应的测试工作。
图11:STM测试执行
完成全部测试工作后,测试管理系统STM自动快速生成能力验证所需要的各类文档,编写文档的工作量缩短为1天以内,减少70%的用时,有效保证测试人员集中精力于实际的测试工作中,最终确保测试通过。
图12:STM自动生成测试文档
06
总结
本次能力验证,按传统方式一般测试开发人员可能需要1个工作日甚至更长时间才能开发出所有协议信息包;我中心由于ETest的熟练应用,仅使用了1个多小时,生成协议组包的效率提高了80%以上。另外基于ETest在测试数据设计方面也有非常明显的效率提升并有效保证了测试质量。使用STM实现了测试需求分解、测试用例与测试数据设计、以及测试执行的测试过程管理,使得测试人员能够根据设计好的测试用例有条不紊的执行,发现软件中预埋的问题,也保证了软件问题、测试步骤、测试数据的良好追踪。
测试管理工具(STM)和嵌入式半实物仿真测试系统集成开发环境(ETest)的使用是我中心顺利取得本次能力验证满意结果的重要因素。公司将一如既往加紧突破自动化测试的相关技术瓶颈,为我国的软件质量发展事业贡献力量。