嵌入式系统软件测试方法与应用
孙长发
生成PDF 清样下载 引用

复制成功

导出题录

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

孙长发,. 嵌入式系统软件测试方法与应用[J]. 软件工程研究,2022.5. DOI:10.12721/ccn.2022.157047.
摘要:
随着计算机硬件软件技术的不断进步,嵌入式系统广泛应用于各大领域,由于系统复杂性的增加,嵌入式软件的规模不断加大,为了保证软件质量,嵌入式软件测试技术成为了大家研究的热点。本文从工程经验出发,总结嵌入式软件测试方法,分享测试工具的使用和测试经验。
关键词: 嵌入式系统嵌入式软件测试方法
DOI:10.12721/ccn.2022.157047
基金资助:

1嵌入式系统与软件

嵌入式系统被描述为“以应用为中心,软件硬件可裁剪,满足应用系统对功能、可靠性、体积、成本、功耗等严格综合性要求的专用计算机系统”,一般由软件和硬件组成,可以细分为五部分:底层硬件、设备驱动层、操作系统层、中间件层和应用软件层。嵌入式软件作为嵌入式系统应用软件与硬件和嵌入式操作系统进行独立开发,无法在目标机上进行开发调试,只能在pc机上进行编码,使用调试工具进行软硬件模拟开发,最终加载到目标机上运行。

2 软件测试理论与方法

在工程实践中,根据测试是否执行,软件测试分为静态测试和动态测试。静态测试分为代码审查、文档审查和静态分析,动态测试则执行测试用例对软件进行验证。嵌入式软件按照测试级别可以划分为单元测试、部件测试、配置项测试和系统测试,考虑软件规模大小又可以对测试阶段进行裁剪与合并。

在软件开发过程中,测试工作同步开展。系统需求分析阶段,系统需求文档是系统测试用例的设计依据;在软件需求分析阶段,软件需求规格说明书是配置项测试用例的设计依据;在详细设计阶段,软件设计说明书是单元测试用例和部件测试用例的输入依据,软件开发过程中的上述文档在作为动态测试测试用例设计依据的同时,也是静态测试中文档审查的对象。

动态测试主要分为白盒测试技术和黑盒测试技术。白盒测试是把测试对象看做一个打开的白盒子,除了验证软件功能更加注重软件内部结构和处理过程;黑盒测试则注重于软件的功能性需求。

单元测试的对象是函数单元,针对函数内可能存在的漏洞,以白盒测试为主黑盒测试为辅进行测试。单元测试也称为基于覆盖率的测试,主要验证函数单元是否能够满足覆盖标准,即语句覆盖、分支覆盖、MCDC覆盖,使用函数插桩的方法高效设计测试用例。配置项测试和部件测试的对象是软件部件,以黑盒测试为主白盒测试为辅进行测试。多采用功能分解法、因果图法、等价类划分法、边界值法进行测试用例设计。系统测试的对象是软件本身,采用黑盒测试为主白盒测试为辅进行测试,除了关注软件系统功能外,还要对系统性能进行测试。

3 测试环境与测试工具

3.1静态测试

静态测试对环境没有特殊要求,只要能够对文档和代码进行阅读,并且支持静态分析工具的运行就能完成测试工作。常见的静态分析工具有LDRA,C++test,VectorCAST等,下面以LDRA TestBed为例介绍静态分析过程。

(1) 打开LDRA TestBed工具创建测试集,导入待测试工程源码。

(2) 根据软件要求在Quality Report Options中选择编码标准,如MISRA-C、GJB_8114等进行分析。值得一提的是LDRA TestBed工具支持如下图所示的编码规范裁剪定制方法,可以根据需要在现有编码标准进行添加裁剪。

(3) 打开Quality Review Report查看代码违背编码规范的具体情况,向开发人员提出修改意见,重复上述操作进行回归测试,直到源码满足编码规范或开发人员作出解释说明。

图片5png.png

3.2动态测试

与传统软件测试不同,由于嵌入式软件与硬件密不可分的关系以及软硬件独立开发的特点,测试环境要根据实际情况在仿真环境和真实环境中进行折衷选择。真实环境能够保证测试结果的可靠性,但缺点是硬件开销大,并且要在硬件设计完成后才能搭建环境,延长了嵌入式系统开发周期。在仿真环境进行测试虽然能够提高测试效率降低成本,但随着嵌入式系统的规模不断增大真实环境的复杂性难以100%模拟,但仿真环境下能够保证测试发现的缺陷一定是软件自身缺陷,从而提高嵌入式系统软硬件联试的效率。

对单元测试而言,仿真环境与真实环境的区别在于函数单元运行在pc机仿真操作系统还是运行在目标机真实cpu板卡上,其框架如下图所示(左:仿真环境,右:真实环境)。

图片6.png

仿真环境以LDRA TBrun为例介绍工具使用方法,其优点是用例执行快且每执行一个测试用例都可以直观的看到覆盖率的变化,能辅助测试用例设计,缺点是不能批量执行测试用例。

(1) 打开集成开发工具的仿真功能与TBurn建立连接。

(2) 导入待测试代码,以函数单元为单位创建测试序列,新建测试用例按照预先设计的函数输入输出及桩函数进行输入。

(3) 一键运行测试用例,TBurn将按照编译测试驱动、生成测试驱动、执行测试驱动、生成驱动输出的顺序执行,给出测试用例是否通过并生成被测函数单元的语句覆盖分支覆盖MCDC覆盖率。

真实环境以Lamdba Fast为例介绍工具使用方法,其优点是可以批量执行测试用例,将用例设计输入和用例执行分开,解放测试人员,缺点是与目标机交互用例执行慢。

(1) 用网线和串口将PC机和目标机进行连接。

(2) 在PC机上打开Lamdba Fast导入待测试代码,进行源码分析,工具将识别c文件及其函数组成并生成目录。

(3) 在对应函数单元文件夹下创建测试用例和测试桩,输入完成后生成测试驱动和测试桩并执行测试驱动。

(4) 进行覆盖分析,工具将生成HTML格式的测试报告,供测试人员查看各类覆盖率及未覆盖代码。

对配置项测试和部件测试而言,仿真环境与真实环境的区别和单元测试基本一致,在使用LDRA TBurn进行单元测试的基础上,在软部件内部不进行函数插桩,就可以完成部件测试,通过查看用例是否通过验证部件设计是否正确。真实环境的测试工具以Lamdba MIT为例介绍工具使用方法,其原理是通过断点直接在内存地址上对变量进行读写,支持多余度软件调试,将中间结果可视化,以脚本的形式进行测试用例设计,测试用例设计人员和执行人员可以同步开展工作。

(1) 用网线和串口将PC机和目标机进行连接,将编译后的目标码加载到目标机上。

(2) 打开工具进行构型分析,选择测试通道,导入测试脚本。

(3) 运行测试脚本,工具根据脚本设置的读取变量命令和预期值注释将变量真实值和预期值打印在交互窗口上供测试人员查看

对系统测试而言,一般将系统软件加载到目标机上进行测试,此时与目标机交联的硬件设备可以选择真件也可以选择模拟器模拟,在选择模拟器的情况下,进行环境差异性分析,确定所有测试用例都可以执行的同时保证执行结果的可靠性,如有模拟器不足以支持测试用例执行的情况需要在真实环境做补充测试。

4 测试经验总结

软件测试是贯穿整个软件生命周期的,对于测试人员不要认为动态测试的执行在软件设计之后就认为测试工作的就是对覆盖率功能性能的检测,静态测试同样重要,大部分程序问题都是在静态测试中发现的,测试人员要切记软件缺陷越早发现,解决软件缺陷的成本投入就越少。这就意味着作为测试人员在掌握测试技术的基础上,要熟悉被测系统的相关知识,将文档审查的工作做好,尽可能在需求阶段发现缺陷而不是单纯的对文档格式进行检查。一些不具有动态可测性或难以定量给出测试结果的软件功能,如同步、中断处理、任务调度等功能,可采用静态测试的方法分析代码。

在制定测试计划时,测试人员应协调系统资源,确定测试环境和测试工具,并且和开发人员一起确定编码规范,对典型的错误代码结构进行说明。如正确实现功能但存在空语句的不可达分支,在组合条件中一个条件出现不止一次,逻辑中存在运算时运算优先级和括号的使用等。

在测试用例设计方面,追求的是“尽可能少的用例覆盖尽可能多的需求”,而不是遍历式的全覆盖。嵌入式软件的交互设备少,在某些条件不允许的情况下,要灵活运用程序插桩技术变相实现软件输入输出。不仅要设计正常情况的用例,还要针对异常情况设计用例来验证软件的鲁棒性,例如使用等价类划分和边界值法相结合的方法对无效等价类进行用例设计。在单元测试中,往往会出现为了满足覆盖率而测试的情况,要明确覆盖率只是为了保证代码的所有情况和语句都可以被执行,并不是单元测试唯一的衡量指标。

测试工作与软件版本控制有着密不可分的关系,开展测试工作时,文档和代码的版本一定是可控的,而现在还有很多行业的软件开发过程不符合软件工程化要求处于半野蛮开发状态,这给测试工作带来了极大的挑战。当遇到代码在测试执行中进行改动的情况,要将测试所发现出的问题反馈给开发人员,并要求开发人员对问题进行修改或解释,重新确定文档和代码版本后,做好回归测试工作。

5 结束语

本文介绍了软件测试方法,结合工程经验对嵌入式系统软件测试环境的选择和测试工具的使用做了简要说明。随着嵌入式技术的发展和软件工程化的推进,对测试的要求水涨船高,对测试理论和测试方法的认知也在不断加深,未来自动化测试将是主流测试方向,也会有更多便捷的测试工具面向市场,嵌入式系统软件的质量和可靠性将会进一步得到提升。

6 参考文献

[1] 许洪山. 嵌入式软件单元测试研究[J]. 电子测试, 2020,6:82-83.

[2] 张新玉,李寅龙. TBurn在航天嵌入式汇编软件测试中的应用[J].测控技术,2016,35(11)103-107.

[3] 黄晨,董燕,于倩,虞砬琨. 基于目标码的测试覆盖不可达分析方法[J].测控技术2017,36(1)100-107.

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

[5] 吕文晶. 基于规则的嵌入式软件系统静态测试[D].天津大学,2012,11.

》在线投稿系统

*文章题目:
*作者姓名:
*电子邮箱:
*通讯地址:
*联系方式:

  备      注:

*上传稿件:

支持上传.doc,.docx,.pdf,.txt,.wps文件

投稿须知:

1、审稿结果将于1~7个工作日以邮件告知,请注意查收(包含录用通知书、审稿意见、知网CNKI查重报告)。

2、提交投稿后,若7个工作日之内未接到录用通知,则说明该文章未被录用,请另投他刊。

3、凡投寄本刊稿件,如在内容上有侵权行为或不妥之处,均应文责自负。本刊有权对来稿进行文字编辑、加工和修改,如不同意,请附说明,以便妥善处理。

4、多作者文稿署名时须征得其他作者同意,排好先后次序,通知用稿后不再改动。

5、凡投往本刊稿件一经录用发表,其版权归本刊所有。

6、本刊已全文录入中国知网、万方、维普等数据库,如作者不同意被收录,请提前申明,未申明者,本刊一律视为同意被收录。

7、请勿一稿多投。