嵌入式软件测试平台的设计与实现

2022-05-06 01:08金成杰张焕欣
网络安全与数据管理 2022年4期
关键词:测试工具嵌入式软件子系统

金成杰 ,俎 涛 ,张焕欣

(1.上海中广核工程科技有限公司,上海 200241;2.北京火龙果网络技术有限公司,北京 100088)

0 引言

嵌入式软件常用于汽车、飞机、工业控制等领域,很多与人身安全密切相关,为了保证软件的质量,会做尽可能多的测试:代码检查、单元测试、集成测试、系统测试等。 这些测试都有相应的测试对象、工具、质量报告,而且不同的嵌入式软件常常具有不同的运行环境。 以上因素造成了嵌入式软件测试的复杂性和挑战性。 下面就对嵌入式软件测试存在的问题进行解读,并提出相应的解决方案。

1 嵌入式软件测试存在的问题

为建立完整的嵌入式软件测试工具方案,应全面分析其过程、角色、工具、数据,发现各环节存在的问题[1]。 目前嵌入式软件测试过程中存在以下问题:

(1)测试工作效率低:涉及多种测试工作,主要靠人工。

(2) 测试工具匮乏: 嵌入式软件的测试工具与测试环境密切相关,经常找不到特定的测试工具。

(3)难以获得完整的质量视图:不同测试工具输出的报告各不相同,没有一个综合的质量报告。

(4)测试工件缺乏管理:各种测试对象、测试环境、测试工具、测试脚本、测试报告,缺乏集中管理。

(5)复用率低:不同的测试项目具有类似的测试流程、工具、工件,但是需要重复搭建。

2 嵌入式软件测试解决方案

嵌入式软件测试的5 大问题是密切相关的,应该提供一个完整的嵌入式软件测试平台,目标如下:

(1)全周期流程建模:代码检查、单元测试、集成测试、系统测试[2];

(2)提供完整工具链:代码检查工具、单元测试工具、集成测试工具、系统测试工具;

(3)自动化执行全周期测试流程[3];

(4)把各测试工具输出的报告合成完整质量报告;

(5)建立测试工程仓库,集中管理各种被测程序、环境配置、测试用例、测试脚本、测试报告;

(6)提供项目级的整体测试资源复用能力。

嵌入式软件测试平台的方案概览如图1 所示。

图1 嵌入式软件测试平台的解决方案概览图

本研究项目在当前已有的嵌入式软件测试工具基础上,研发嵌入式软件测试平台,为测试工作提供集成解决方案。

3 嵌入式软件测试平台的架构设计

为将上述的方案转化并形成最终的产品,需进行完整的架构设计,嵌入式软件测试平台的架构设计包括功能架构和软件开发架构。

3.1 功能架构

嵌入式软件测试平台采用客户端和服务端的部署方式, 服务器分为管理服务器和测试服务器,相应的功能分配到各个部署节点,系统功能部署图如图 2 所示。

图2 嵌入式软件测试平台功能分配图

对应的子系统和功能分配如表1 所示。

表1 嵌入式软件测试平台的子系统和功能描述

3.2 软件开发架构

为了实现开发的复用和扩展,平台采用了基于组件和面向服务的架构模式。 根据可复用、可扩展的原则,把公共部分提炼为应用框架和公共组件、公共服务,并提供了定制部分的接口和配置参数文件。 如下是开发架构的简要说明:

(1)采用可扩展的应用框架,可以通过配置扩展功能;

(2)客户端和服务端的接口采用 Restful 微服务技术;

(3)基于GDI+开发工作流建模,支持工作流复用;

(4)工作流配置用XML 格式文件存储,易于维护。

下面详细列出了各个子系统的组件设计和功能说明。 客户端子系统的组件模型如图3 所示,组件说明如表2 所示。

表2 客户端子系统的组件说明

图3 客户端子系统的组件图

管理服务子系统的组件模型如图4 所示,组件说明如表 3 所示。

表3 管理服务子系统的组件说明

图4 管理服务子系统的组件图

测试服务子系统的组件模型如图5 所示,组件说明如表 4 所示。

表4 测试服务子系统的组件说明

图5 测试服务子系统的组件图

4 关键技术设计及实现

4.1 嵌入式软件测试工具链与运行环境

嵌入式软件主要是基于 C、C++进行开发,运行在嵌入式操作系统环境之上,而嵌入式操作系统类型众多,包括嵌入式 Linux、VxWorks、Android、RTOS等。 这就需要构建一套能够满足各种嵌入式软件运行环境的测试工具[4-5]。 为此,本文提供了如下工具链:

(1)源代码相关的检查与测试选择了支持C/C++的工具:代码对比工具Beyond Compare,代码检查工具 CppCheck,单元测试工具 Gtest、C++Test。

(2)运行环境有关的工具提供 2 种支持[6-8]:

①针对不同的操作系统,提供对应的运行容器。例如,对于 VxWorks 操作系统,提供 Simics 运行容器,虚拟软件运行环境。

②在操作系统之上,构建一个数据总线。 在测试的时候,模拟各种通信的数据,屏蔽运行环境。数据总线采用了DDS 技术框架,如图 6 所示。

图6 软件运行容器和数据分发服务总线(DDS)

根据实际工作需要,收集、整理并集成嵌入式软件测试工具链,如表 5 所示[9-11]。

表5 完整的嵌入式软件测试工具链

4.2 可扩展的工具适配接口

嵌入式软件测试平台需要集成各种测试工具:代码检查工具、单元测试工具、集成测试工具、系统测试工具,这就需要可扩展的适配接口,通过配置参数快速引入新的测试工具[12-13]。 测试平台的接口关系如图 7 所示。

图7 嵌入式软件测试平台接口关系图

各种测试工具有不同的工作界面、命令、参数和报告样式。平台为不同的接口建立一个统一的配置参数结构。 当出现新的工具的时候,用户只需为该工具配置对应的接口参数[14]。

工具的基本描述信息属于基本属性,各个工具的数据结构都是相同的,而输入输出参数具体到不同的工具会有所不同,用户可以根据工具类型自定义输入输出参数。输入和输出参数的定义采用自定义结构的XML 数据格式,每个job 的配置信息独立存储为一个job 的 XML 文件。

4.3 统一的质量报告

将各个测试工具输出的报告集成到一个质量报告需要具备 2 个功能[15]:

(1)配置报告:建立各个测试工具输出的测试报告到综合质量报告的映射关系;

(2)报告生成:能够根据配置文件,读取各工具的测试报告,解析其中的数据,根据配置生成质量报告。

质量报告的配置参数包含:

(1)来源报告:来源报告名称和来源URL;

(2)目标报告:目标报告名称和输出的URL;

(3)报告构造器:不同的质量报告需要不同的报告构造器,为此抽象一个构造器基类,实现可扩展框架。

统一的质量报告生成流程图如图8 所示。

图8 综合质量报告生成原理示意图

5 平台实现与验证

本测试平台软件开发完成后进行了多个嵌入式软件测试项目的验证。 用户在测试平台操作界面上建立测试工作流,配置各个job 的工具、质量报告的组合关系,然后启动工作流,依次调用各个job 的工具、执行测试、输出测试报告,当所有测试都完成后,合成一个综合质量报告。 用户可以对测试过程的状态进行监控, 浏览最终的质量测试报告。 各个测试工作的执行记录如表 6 所示。 表7是平台使用前后的工作效果对比。

表6 嵌入式软件测试平台应用实例

表7 嵌入式软件测试平台应用效果表

6 结论

嵌入式软件测试平台解决了嵌入式软件测试散乱的问题,提供了完整嵌入式软件测试方案:全周期测试过程建模、测试工具链、测试流程自动执行、合成质量报告,在嵌入式软件测试领域具有先进性和示范作用。 本测试平台经过多家企业的实际应用,有效地提升了嵌入式软件测试的效率和质量。同时本平台也发现存在下述待加强之处,例如:应支持更多的嵌入式测试工具,应能够支持更多嵌入式系统的测试环境,能够支持多个测试项目的并行执行。 针对以上的改进需求,笔者增强了平台的功能,部分需求已经完成改进,并计划持续提升完善,让测试平台具备更好的实用性和广泛的适用性。

猜你喜欢
测试工具嵌入式软件子系统
不对中转子系统耦合动力学特性研究
嵌入式软件测试数据传输稳定性检测方式分析
基于安全性分析的嵌入式软件测试
网络空间供应链中入侵检测及防御子系统的投资机制研究
网络空间供应链中入侵检测及防御子系统的投资机制研究
一种基于NB-IoT的公路雾灯自动指示系统
基于VPRS方法的汽车嵌入式软件品质评估
基于移动平台APP测试
手车式真空断路器回路电阻测试电流线接头研究
嵌入式软件在计算机软件开发过程中的运用