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

一、前言

凯云科技软件测评中心于2022年7月底参加了中国航天科技集团有限公司软件评测中心组织的嵌入式软件功能测试和接口测试能力验证计划PT008,取得满意成绩并顺利通过能力验证。本次验证计划共计74家实验室参加,其中不乏国内知名大型测试机构,包括我中心共计22家检测出14个及以上的缺陷,约占30%。

 

图1:CNAS-STEC-PT008嵌入式软件功能测试和接口测试能力验证

 

本次测试要求根据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:与传统测试技术效果对比

二、被测软件概要介绍

天线伺服系统由上位机、天线控制器及天线座组成,伺服控制软件运行在天线控制器内部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

 

三、测试方法的分析

对于伺服控制软件来说,要测试其伺服控制功能,需要通过设置矢量参数包、设置天线指向模式、设置修正矩阵、发送时间校准指令等一系列信息帧通信才能使得其进入到伺服控制功能,这个过程涉及到多个串行通信信息帧的发送,如何快速生成满足格式要求的信息帧就显得尤为重要。如何产生帧信息是摆在测评中心面前的一大难题,如果使用通用程序设计语言编写C/C++程序产生这些信息帧,不仅效率不高,而且极易出错。如果使用人工编写这些信息帧,则不仅工作量巨大,而且难以根据测试数据设计很快做出信息帧。

为顺利完成该项能力验证,我们的思路是用公司自主研发的测试管理系统STM设计测试用例以及测试数据,只需要关注测试数据的设计,无需关注信息帧报文如何组包;我们使用嵌入式软件半实物仿真测试集成开发环境ETest开发协议帧格式以及协议帧数据生成脚本,并将生成的协议信息帧直接填入到测试管理系统STM的测试用例中,从而有条不紊地完成软件测试工作,达到较高的测试覆盖率。

 

四、半实物仿真测试系统集成开发环境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快速测试

 

五、测试管理系统STM

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

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

 

图8:STM需求分析设计

 

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

 

图9:STM测试用例设计

 

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

 

图10:STM测试用例集设计

 

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

 

 

图11:STM测试执行

 

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

 

图12:STM自动生成测试文档

六、总结

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

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

  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值