APP下载

关于嵌入式计算机软件测试关键技术的研究

2021-11-22齐齐乐

电子制作 2021年21期
关键词:嵌入式软件软件测试嵌入式

齐齐乐

(中国航空工业集团公司金城南京机电液压工程研究中心,江苏南京,211000)

0 引言

计算机软件在开发的过程中难免会存在BUG,而BUG的存在不仅会影响软件运行的速率,还会降低软件使用的体验感。为了解决计算机软件开发过程中遗留的BUG问题,需要采用嵌入式软件对原设计软件进行不足。由于嵌入式软件本身的意义在于不足原开发软件的不足,其设计需求也与原设计元件保持一致。嵌入式软件相对于一般的计算机软件的开发流程更加复杂,难度更高,需要综合考虑硬件和软件的条件,并结合二者的关系进行软件细节的优化。嵌入式软件作为计算机系统不可缺少的一部分,其本身要求有强实时性,且软件测试只能在计算机运行的特定目标机上进行测试,只能采用更底层的语言或汇编语言进行编写,因此测试和维护的难度极高。研究嵌入式计算机软件测试的关键技术对提升嵌入式计算机软件系统运行的稳定性有着重要的意义。

1 嵌入式软件及其测试特点

嵌入式软件指嵌入式计算机系统中的软件。它的运行建立在一定的硬件平台,对专用性及运行开的环境要求极高。嵌入式软件测试具有以下特点:(1)嵌入式软件测试包含几乎全部的专用计算机外部设备;(2)嵌入式元件运行平台及系统常因没有一般的外部设备而很难在测试古城中进行检测及观察,如没有显示、打印、键盘及存储设备等;(3)嵌入式软件的强实时性要求使输出仅在某个有限的时间内完成,且必须在该时间段内生效;(4)嵌入式软件可能存在以上交互因素,增加测试的难度。

2 嵌入式软件主要的测试方法

■2.1 静态测试法

静态测试法是宿主机测试技术常用的方法之一。这种测试方法方便测试人员明确及理解程序逻辑,也有利于帮助开发者审视开发过程。在讲述测试流程中易于帮助开发着发现问题。静态测试法的流程如下:静态测试的技术准备→编程人员向测试小组介绍UR案件思路及内容→测试人员查找缺陷→确定有无疑问。有疑问时测试人员与编程人员进行问题讨论及确认。当确定有问题存在时及时排除,没有问题时重新进入测试人员查找缺陷,重复以上流程。确定没有疑问时由测试人员提出严谨性建议→记录测试过程并更新软件文档→结束测试。

采用静态测试方法测试函数结构时,可以借助一系列规则从程序推导出流程模型图,再将其与设计文档流图对比,校验设计与源代码的一致性。通过对流图的走查,以及应用逻辑覆盖、分支覆盖、分支覆盖、路径覆盖的方法测试函数的健壮性,最后对函数结构做封闭性测试。

在采用静态方法测试细节及专项检查时,需凭借测试人员丰富的经验罗列错误清单,并依次执行清单所列问题错误的检查。常见的专项错误清单如下:(1)数组下表有无越界,变量值有无越界;(2)有无依赖程序设计语言中的缺省值代码;(3)除数有无可能为零;(4)浮点数运算有无分析检查;(5)栈有无溢出;(6)用过的内存有无释放;(7)函数的引用中变量类型与个数有无对应;(8)全局变量的使用有无必要;(9)代码有无包含无穷循环;(10)递归有无存在问题等等。

■2.2 动态测试法

动态测试法也是宿主机测试技术常用的方法之一。动态测试技术是以软件代码的动态执行能力为基础。它需要对代码的覆盖率、内存分配使用信息等进行全面的分析。测试软件代码在测试执行时的状态就是代码覆盖率。提升嵌入式软件测试的有效性就需要通过加强代码覆盖率的监控,以便全面及时的掌握测试力度及进度,精准的识别是否存在被遗漏的测试数据。代码覆盖率的计算指标包含语句覆盖、分支/判定覆盖及MC/DC。内存分配信息需要关注每个函数、内存分配点的内存分配及释放情况,并实时监控动态内存分配中的错误。动态法内存分配信息具有识别内存遗漏BUG的优点,它是内存分配优化的依据。

3 嵌入式软件测试的关键技术

■3.1 仿真机测试技术

仿真机测试技术能够通过真实仿真模拟目标机功能及性能,采集真实的物理性能监测结果。它是宿主机与目标测试机的纽带。其中的关键技术包含嵌入式仿真技术、测试数据获取技术。嵌入式仿真技术是以局域网为基础建立的数据集中性管理及处理系统。仿真系统由仿真机、软件测试控制模板、总线仿真及总线监控模板、测试结果分析工具、I/O系统、实时调度模板等。其中以仿真测评控制技术应用最为广泛。通过对计算机硬件及系统做仿真测试,模拟现场总线系统数据,依据测试主体分析电信号激励仿真源,测定和分析现场总线的运行情况。仿真分析利用了人机交互界面控制实时在线测评平台设备,用于对嵌入式软件进行测试。

■3.2 目测机测试技术

该技术以目标机测试为主,用于评估真实的物理目标机,从而对嵌入式软件及系统的交互性、可靠性、稳定性做专门的获取。该技术常用故障注入、内存分析、性能分析的方法分析物理目标测试机的性能。其中故障注入技术能便于进行系统边界测试、容错性测试、鲁棒性测试、强度性测试等。内存分析技术用于处理动态内存分配中存在的不足,常用分析手段有硬件分析、软件分析。以上测试技术各有优劣。基于硬件的内存分析方法测试的精准度更高,但测试价格较高。而基于软件的内存分析方法性价比更高,但代码性能在测试中易受操作干扰,测试执行中对性能分析是消耗的时间更长。性能分析工具联合调试工具,并引导开发人员进行函数结构优化,对系统调用错误等进行补足,更有利在执行测试过程中发现代码遗漏问题,提高嵌入式软件测试的精确度。

■3.3 宿主机测试技术

上文已提到,关于宿主机测试的两种方法。静态测试法需要优先对所有数据做分析,并通过监测实时追踪源代码,根据源代码绘制出程序逻辑图及嵌入式计算机系统软件对应的程序结构框图。它的优点在于逻辑图、框架图、流程图之间可随意转换,便于加强对遗漏代码的检测与及系统错误的识别,降低人工测试的错误率,同时还有利于提高嵌入式软件测试的效率。应用静态测试技术测试硬件设备及系统运行情况时,并不需要对媒体设备做测试,而知需要依据数据分析系统BUG即可。因此,静态测试技术还有利于缩短嵌入式计算机软件测试时间,便于执行操作的优势。动态测试法的借助软件代码,通过寻找软件代码中执行问题来确定嵌入式计算机软件系统中的问题及缺陷,并提供针对性的调整。在采用动态测试技术做嵌入式软件测试时,必须注意对源代码完整的分析,以确保嵌入式软件系统错误检测的完整性。此外,还可以配合对函数结构的分析,来确定函数结构中各元素的分配情况,并根据内存将函数元素的分配展示出来。

4 嵌入式软件测试难度大的原因及问题解决策略

■4.1 测试难度大的原因

嵌入式计算机软件测试难度大的主要原因在于一般的测试技术及测试工具的实施缺乏基本的条件。

■4.2 解决嵌入式软件测试难题问题的策略

(1)加强真实硬件运行情况的监测

在对嵌入式系统真实硬件运行情况进行监测时,可以采用某种对目标机及宿主机都适用的编译器高级语言,来生成宿主机代码在宿主机上进行目标程序的运行和测试。执行厕所时,需要认真评估目标机与宿主机的差异,并注意存在的问题,如算法字长等问题。宿主机上测试的正确运行智能作为测试在目标机上正确运行的参考依据。或采用指令仿真器加强对真实硬件运行情况的监测。使用指令仿真器监测的手段一般适用与没有目标机外围设备仿真,或没有实际外围设备及不涉及或少涉及时间的情况。

(2)采用实时性测试及交互式测试联用

执行嵌入式计算机软件系统测试时可采用实时性系统测试联用交互式测试的方式。实时系统测试先需确定功能是否正确,再确定时间师傅正确。通过对功能、时间正确性的判定,来解决嵌入式系统测试执行时间延长而不满满足实时性要求的问题。对目标机硬件测试,仍可借助指令仿真器或高级语言编译器来实现。单元和集成测试则不适用于在目标硬件上实行实时测试。在交互式软件测试时,可用文件模拟字符序列的输入,程序运行时从文件读入字符就如同从交互式硬件上输入一样。如键盘、鼠标测试。

(3)加强全数字仿真技术的应用

全数字仿真技术在解决综合嵌入式软件测试问题中环境带来的测试困扰中应用优势极为明显。采用计算机仿真技术构造全入市软件所需的硬件环境,即目标机。再仿真嵌入式软件运行时所需的数据源。根据数据源特性及变化就可以确定嵌入式软件的实际运行情况。

(4)专用设备问题及并发系统网络通信问题的解决

专用设备的测试需要根据实际情况额定,如果专用设备已经可用,并能用来测试,可用实际设备进行测试。专用设备不能用于测试的情况,可借助某种软件仿真所需要的设备来加速进程。在仿真困难的情况下,如传感器噪声特性、失效模式等情况下,需要考虑程序在仿真设备测试时运行的正确,以及在真实设备下运行时经常发生的错误。

5 结语

嵌入式计算机软件系统作为计算机系统的重要组成部分,其软件测试是必不可少的。通过本文研究,确定软如是计算机软件测试系统的复杂性和难度,其根本原因受一般测试技术及测试工具缺乏实施条件所影响。想要解决软件测试的难题,就必须测试技术及工具的研究,对原有的一般测试技术进行创新,并在原有的数据及系统基础上完善,融合仿真机测试技术、目测机测试技术、宿主机测试技术,加强硬件及系统运行的监测,加强全仿真技术的应用,结合实际情况对目标机硬件及系统性能进行改善,以提升嵌入式计算机软件系统在硬件及计算机系统下运行的流产性、可靠性及稳定性。

猜你喜欢

嵌入式软件软件测试嵌入式
基于IMX6ULL的嵌入式根文件系统构建
软件测试方向人才培养“1+X”融合研究
大数据背景下软件测试技术的发展
浅析嵌入式软件技术的现状与发展动向
关于 Web 应用系统的软件测试的研究
基于模型检查的嵌入式软件构件化分析与验证
嵌入式软件在计算机软件开发过程中的运用
软件测试发展现状及前景的探讨
高校图书馆开展嵌入式信息素质教育的思考
嵌入式组件技术的研究及应用