基于目标机环境的嵌入式软件动态单元测试技术研究
尤中桐
生成PDF 清样下载 引用

复制成功

导出题录

参考文献( GB/T 7714-2015 ) 复制

尤中桐,. 基于目标机环境的嵌入式软件动态单元测试技术研究[J]. 软件工程研究,20244. DOI:10.12721/ccn.2024.157033.
摘要: 针对嵌入式软件基于目标机环境的动态单元测试问题,本文提出了一种测试解决方案,并从动态单元测试现状、优化方向、优化方案及其测试执行、优化方案优缺点分析、总结等六个方面,探讨了基于目标机环境的嵌入式软件动态单元测试技术。
关键词: 嵌入式软件;动态单元测试;目标机环境;测试技术
DOI:10.12721/ccn.2024.157033
基金资助:

0引言 

嵌入式技术蓬勃发展,嵌入式软件活跃在航空航天航海等军民用场景中,机载弹载星载舰载嵌入式软件高可靠性、高安全性、强实时性[1]的特点对嵌入式软件开发质量提出了更高要求。软件测试是保证软件质量的重要手段之一,嵌入式软件根据测试对象的不同可划分为四个测试级:单元测试、集成测试、配置项测试和系统测试[2],其中单元测试按照是否运行程序代码分为静态测试与动态测试。动态单元测试是针对软件设计说明中独立软件单元的测试,确保软件模块的代码覆盖率达到100%[3]。动态单元测试一般采用白盒测试方法[4],在宿主机上基于开发环境与测试工具搭建全数字仿真平台对目标机环境进行模拟,支撑单元测试程序运行。全数字仿真平台在实际应用过程中存在一些问题:1)虚拟仿真环境与真实目标机环境的差异导致单元测试的真实性与可信性存疑;2)测试工具不能批量执行单元测试用例,导致测试执行效率低下;3)测试工具一般仅支持用户界面输入用例,不支持自动生成、修改测试驱动。本文仅就以上问题对基于目标机环境的动态单元测试技术进行探讨,以期能对相关软件测试工作起到借鉴作用。

1正文

1.1动态单元测试优化方向

由现状中描述的全数字仿真平台在动态单元测试实际应用过程中存在的问题,可以总结得到动态单元测试改进优化目标:1)引入真实目标机作为待测代码运行环境;2)测试用例输入后,可以批量半自动甚至全自动执行。为达到上述改进优化目标,需要实现程序代码下载、程序执行结果上传、上下位机间的控制指令与状态交互。所以宿主机与目标机间的交互通信成为了如何实现目标机环境下动态单元测试的关键点。

1.2基于目标机环境的动态单元测试方案

在某软件项目测试工作中,基于Eclipse框架进行了目标机单元测试环境的搭建,主要包括三个模块,分别是测试驱动生成、测试程序执行及测试数据分析。各模块实现的主要功能如下:

测试驱动生成模块运行于宿主机,以待测源码及测试用例为输入,对源代码进行分析,为插桩及探针植入提供支撑,对测试用例输入值进行代码化处理,与分析后的源码进行联合编译,最终生成可执行目标码,供下载给目标机运行。

测试程序执行模块运行于目标机,接收宿主机传送过来的目标码及执行指令,运行目标码,对程序执行结果及探针状态进行收集记录并上传给宿主机。

测试数据分析模块运行于宿主机,负责接收目标机上传的测试数据,对代码的执行情况进行分析,更新源码语句、分支、MC/DC覆盖率,形成测试报告。

宿主机与目标机间通过以太网及离散量硬线连接。以太网负责可执行目标码下载及测试数据上传。硬线连接目标机指令开关及宿主机离散量板卡,负责执行指令传输。

1.3基于目标机环境的动态单元测试执行

基于目标机环境的动态单元测试执行步骤如下:

1)操作界面输入测试用例,包括输入值、桩函数设置、预期输出值等;

2)对被测软件单元进行分析处理,在软件单元入口、分支点、出口等位置植入探针以记录程序运行时是否运行到特定语句分支;

3)进行编译前预处理,将测试用例注入、桩函数设置、源码分析处理代码化,生成对应的源文件Drive.c、Stub.c、Suite.c;

4)对步骤3中生成的三个源文件进行编译、链接形成可执行目标码;

5)宿主机通过以太网向目标机发送下载指令并传输可执行目标码;

6)宿主机通过离散量硬线向目标机发送复位及执行指令,目标机运行可执行目标码并记录探针执行情况;

7)目标机通过以太网将测试数据上传给宿主机,宿主机对探针执行情况进行解析并更新被测软件单元执行情况及测试报告。

上述步骤1)-7)为针对一个软件单元执行一次测试用例的完整过程。若按照步骤1)-4)对一个或多个软件单元的全部测试用例进行处理,生成与测试用例一一对应的可执行目标码,而后按照步骤5)-7)逐一运行生成的全部可执行目标码,就实现了测试用例的批量执行。

1.4基于目标机环境的动态单元测试优缺点分析

在某软件项目测试工作中,基于目标机环境完成了动态单元测试,与以往采用全数字仿真平台TestBed进行动态单元测试相比,其优点在实践过程中表现明显:

1)提高动态单元测试可信度。全数字仿真平台如TestBed为使代码能运行在宿主机构建的仿真环境下,往往采用与真实环境不同的专用编译器,这就导致编译器和代码运行环境与真实情况产生差异,进而影响测试结果的可信性。以真实情况所用编译器及目标机为载体运行待测代码,消除了以上差异,使得测试结果更具说服力。

2)提升测试效率。使用TestBed进行动态单元测试只能逐个输入测试用例并执行该用例,人员精力主要花费在用例输入、等待执行等重复性工作上,影响对测试工作本身的关注度,导致测试效率低下。基于目标机环境的动态单元测试可批量半自动执行,人员精力主要投入到用例设计输入、结果分析,用例执行由机器批量完成,提升了测试效率。

3)易维护性。测试过程中的用例、源码、结果均被存储管理,代码回归测试时,仅对受影响的相关用例进行重新设置、执行即可,维护性较好。

基于目标机环境的动态单元测试也存在一些缺点:

1)平台通用性受限。不同嵌入式软件项目所用目标机的CPU及操作系统往往不同,而基于目标机的动态单元测试环境只能对应一种确定的目标机及操作系统,这就导致该平台使用范围较窄、通用性受限。

2)平台依赖目标机硬件。搭建基于目标机的动态单元测试环境至少需要目标机CPU板,而嵌入式项目开发过程中,硬件环境往往与软件处于并行开发设计阶段,无法交付使用,导致环境搭建及测试工作被压缩至软硬件开发完成之后,留给测试工作的时间不足,周期紧张。

3)使用经济性较差。硬件成本较为昂贵,尤其是涉及航空航天领域的嵌入式设备。又因为平台通用性受限,不同项目都需要一套硬件环境与之适配,导致条件建设成本增加,经济性差。

2.总结

嵌入式软件的蓬勃发展及广泛应用使软件质量的重要性达到了前所未有的高度,如何保证嵌入式软件的开发、测试质量成为了软件工程人员值得深思并攻克的难题。本文针对目标机环境下嵌入式软件动态单元测试问题,论述了其发展现状,针对性地提出了改进优化方向及相应的解决方案,介绍了目标机环境下动态单元测试执行过程,并与全数字仿真平台进行了优缺点对比。尽管目前的动态单元测试方法及测试工具仍有待继续完善,但随着测试理论与技术的进一步突破、发展,基于目标机环境的单元测试势必会克服自身存在的缺点与不足,在提升嵌入式软件质量方面发挥不可替代的作用。

3.参考文献

[1] 董金艳. 浅谈嵌入式软件测试[J].电子世界, 2019,23: 208-209. 

[2] 周平平. 军用嵌入式软件测试技术研究[J].教练机, 2021,2: 27-31.

[3] 胡丹. 基于目标机的嵌入式软件单元测试[J]. 电子测量技术, 2006,2: 33-35.

[4] 王轶辰. 软件测试从入门到精通[M]. 电子工业出版社, 2010.