凯云科技软件测评中心于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芯片上,配合硬件平台和上位机软件共同控制天线座转动,使天线指向目标。上位机负责向天线控制器下达遥控指令,提供天线控制器所需的工作参数,查看天线伺服系统的状态信息。天线控制器是整个天线伺服系统的核心,负责处理遥控指令,计算目标指向角,计算并输出速度控制量。

伺服控制软件与上位机的接口通信协议多达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个协议的定义。

格式 标识 字节 描述
方式字 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个协议的定义。

2.脚本开发

通过测试脚本的编写,完成比例尺以及数组等的特殊处理,就可以按照任意要求形成所需要的协议信息包了。我们针对不同的通信协议分别开发出对应的测试程序。例如t13程序就是对矢量数据信息帧的处理程序,在这段处理程序中对矢量参考时刻T0完成从日期时刻到2022年1月1日0时0分0秒开始的毫秒计数的转换,同时完成目标速度矢量VX、Vy、Vz的比例因子代入。我们还通过for循环生成批量的天线初始矢量设置信息帧。

3.设计用例

在ETest中,实现了测试程序开发与测试数据设计的分离,ETest中将测试数据简单地抽象为用例,我们可以直接在用例节点设计测试数据,测试数据可以用类似AntZPos:[10000,0,10,300,10000]这样的表达式进行描述,这就代表设计了5个用例,取了AntZPos的5个值。

设置该用例所对应的程序,运行程序时自动关联用例。

4.数据生成

通信协议、程序、用例均完成后,就可以用程序执行的方式,直接执行程序,程序会自动从关联的用例中取出测试数据生成数据帧。

也可以不编写程序,直接用ETest快速测试的方法生成组包的界面。当然,这需要自己进行比例尺的变换,因此我们此次未采用。

05、测试管理系统STM

为了保证测试能充分有序进行,本次测试工作基于测试管理系统STM进行测试需求分析、测试用例设计和测试文档生成,将ETest所生成的信息包直接填入测试用例的步骤描述中,对着测试步骤描述就可以让测试执行人员有序地开展测试执行工作。

通过使用测试管理系统STM,我们可以很容易地划分出测试项并能观察出测试项、测试子项是否通过。

图8:STM需求分析设计

在STM中测试用例设计可以采用参数的方式,用实例来直接进行测试数据设计,下图中<<<指令名称>>>、<<<方式字异常指令>>>均为步骤参数值。

图9:STM测试用例设计

参数值取值可以形成测试实例集,测试实例集可有效保证测试的充分性,如下图。

完成测试用例数据设置后,即可按照步骤一步步执行测试,此时,已设置好各类指令报文,直接将其复制到被测件的协议输入区域就可以完成相应的测试工作。

完成全部测试工作后,测试管理系统STM自动快速生成能力验证所需要的各类文档,编写文档的工作量缩短为1天以内,减少70%的用时,有效保证测试人员集中精力于实际的测试工作中,最终确保测试通过。

06、总结

本次能力验证,按传统方式一般测试开发人员可能需要1个工作日甚至更长时间才能开发出所有协议信息包;我中心由于ETest的熟练应用,仅使用了1个多小时,生成协议组包的效率提高了80%以上。另外基于ETest在测试数据设计方面也有非常明显的效率提升并有效保证了测试质量。使用STM实现了测试需求分解、测试用例与测试数据设计、以及测试执行的测试过程管理,使得测试人员能够根据设计好的测试用例有条不紊的执行,发现软件中预埋的问题,也保证了软件问题、测试步骤、测试数据的良好追踪。

测试管理工具(STM)和嵌入式半实物仿真测试系统集成开发环境(ETest)的使用是我中心顺利取得本次能力验证满意结果的重要因素。公司将一如既往加紧突破自动化测试的相关技术瓶颈,为我国的软件质量发展事业贡献力量。

ETest及STM应用案例:CNAS能力验证--嵌入式软件功能测试与接口测试(PT008)相关推荐

  1. 聊聊网络安全等级保护“能力验证”:配置核查(Linux系统)

    前言 作为测评机构一定会知道每年会举行"能力验证"活动,申请认可和获准认可的合格评定机构通过参加能力验证活动(包括 CNAS 组织实施或承认的能力验证计划.测评机构间比对和测量审核 ...

  2. CNAS能力认证查询篇之机构篇

    CNAS能力认证是CNAS要求机构积极参与的活动之一,是检验机构水平的途径之一.那么,我们如何知道哪些机构可以给我们做能力认证呢? 进入CNAS官网https://www.cnas.org.cn/in ...

  3. 性能测试的能力验证和规划能力

    一.能力验证 能力验证是性能测试中最简单也是最常见的一个应用领域.一个典型的能力验证的问题会采取这样的描述方式:某系统能否在A条件下具有B能力? 能力验证领域的特点与性能测试的特点非常接近: ①要求在 ...

  4. 正则表达式案例:用户名验证

    案例:用户名验证 功能需求: 如果用户名输入合法,则后面提示信息为 : 用户名合法,并且颜色为绿色. 如果用户名输入不合法, 则后面提示信息为: 用户名不符合规范,并且颜色为红色. 分析: 用户名只能 ...

  5. 软件工程--构建之法--功能测试 设计10个或者更多的测试案例完成对钉书钉的功能测试...

    设计10个或者更多的测试案例完成对钉书钉的功能测试 (1)使用不同的纸质材料厚度,使用相同规格钉书钉,查看钉书器是否正常工作 (2)使用不同规格的钉书钉,使用相同厚度的纸质材料,查看钉书器是否正常工作 ...

  6. [SRS+docker]实现直播服务器 2 SRS单机直播能力验证

    目录 1 前言 2 能力要求 3 基础环境 4 环境搭建 4.1 说明 4.1.1 知识储备 4.1.2 网络环境 4.2 SRS版本选型 4.2.1 SRS-github 4.3 搭建模式 4.4 ...

  7. JavaScript:综合案例-表单验证

    综合案例:表单验证 开发要求: 要求定义一个雇员信息的增加页面,例如页面名称为"emp_add.htmnl",而后在此页面中要提供有输入表单,此表单定义要求如下: .雇员编号:必须 ...

  8. Filter案例之登录验证

    一.登录验证,权限控制 1.需求分析 其中,登录有关的资源被访问时要直接放行,不然会死循环: 2.代码实现 转载于:https://www.cnblogs.com/wmqiang/p/11604621 ...

  9. java案例--根据规则验证身份证号码正确性

         import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner sc ...

最新文章

  1. java.lang.ClasNotFoundException:Didnt findclass on path:DexPathList[[zip file
  2. Arduino可穿戴教程Linux平台下安装Arduino IDE
  3. MySQL开启federated引擎实现数据库表映射
  4. python学习历程-安装篇(一)
  5. 在Editplus中搭建Ruby开发环境
  6. Linux内核模块(二)
  7. Django报错SocialApp matching query does not exist以及Django的SITE_ID = 1的含义
  8. H3C的DHCP中继配置命令
  9. c语言程序员算法题库,100个超级经典地C语言算法,程序员必须练习.doc
  10. [UESTC SC T4] Chika 的烦恼
  11. Windows下制作DOS启动U盘的方法
  12. 孙玄:微服务架构中分布式事务实现方案如何取舍
  13. linux的netperf测试,linux下Netperf使用详解
  14. 扫描枪无限连服务器,无线扫描枪连接电脑的3个步骤
  15. 使用正则表达式在Java中悬挂缩进段落
  16. server服务(hander传值)
  17. 非常快速的在ubuntu上搭建openvpn!
  18. 徐敏 计算机科学教育,计算机学院举办梦想公开课暨2019年暑期社会实践动员大会...
  19. 安装keil5出现you are not logged in as an 'Administrator'
  20. [春秋云镜] CVE-2022-32991 靶场详解

热门文章

  1. Ubuntu Linux环境搭建|系统篇
  2. 老年消费市场最新观察:变化/趋势/入局/未来,以人为核心,构建信任感
  3. mysql登陆错误2003(hy000)_mysql远程无法登陆出现ERROR 2003 (HY000)...解决方法_MySQL
  4. 如何用3个月零基础入门网络安全?
  5. Matlab播放音频文件(音乐)!
  6. 软件需求分析——需求的理论基础
  7. 2021年焊工(技师)考试资料及焊工(技师)模拟试题
  8. 【Linux云计算架构:第三阶段-Linux高级运维架构】第13章——redis
  9. strtol函数的用法
  10. 滚动轴承退化趋势预测