基于DSP的嵌入式软件测试关键技术

2019-12-03 04:56赵燕
电子技术与软件工程 2019年21期
关键词:嵌入式软件静态代码

文/赵燕

近年来,基于DSP的嵌入式系统在各个领域中得到越来越广泛的应用,嵌入式软件作为系统的核心部分,其质量优劣直接决定整个系统的使用情况。为确保嵌入式软件的整体质量,在设计开发的过程中,需要采用有效的方法和技术,对软件进行测试,从而提高软件的可靠性。鉴于此,下面就基于DSP的嵌入式软件测试关键技术展开分析探讨。

1 嵌入式软件测试的特点

嵌入式软件开发具备特殊性,使其软件测试也带有一定的特殊性,具体表现为:

1.1 测试难度大

嵌入式软件的开发规模小,一般在几MB内开发。但是,嵌入式软件的开发难度却相对较大,需要开发板级初始化程序、应用程序、驱动程序、测试程序等多样化的程序,这些程序涉及到低层软件开发,需采用不同的开发技术手段,在桌面机上完成开发,并在目标机上运行程序。在这种情况下,增加了嵌入式软件测试的难度,需要对不同的程序进行测试。

1.2 测试启动速度快

大部分嵌入式软件会固化在主存中,如NorFlash等主存,由于主存具备启动速度快的特点,所以使得嵌入式软件也会在上电几十秒内进入到运行状态,既可以在内存、存储系统中运行,也可以在RAM中运行,要求软件测试必须同步快速启动,以提高测试准确性。

1.3 测试项目多

嵌入式软件测试要根据软件的功能要求确定测试项目,主要包括:测试软件的快速反应能力,确保软件在不受系统内部状态影响的情况下也能够快速应对事件;测试软件异步并发事件处理能力和容错能力,确保嵌入式软件在死机或出错的情况下也可以恢复到运行前的状态。

1.4 测试复杂性高

嵌入式软件的开发平台和运行平台不同,在宿主机上开发,但是却在目标机上运行,这就需要软件测试既要在宿主机上进行,也要在目标机上测试,以保证嵌入式软件达到应用程序和操作系统的运行要求。

2 基于DSP的嵌入式软件测试关键技术

目前,在对基于DSP的嵌入式软件进行测试时,关键的技术有两种,分别是静态测试技术和动态测试技术。

2.1 基于DSP的嵌入式软件静态测试

2.1.1 静态测试的基本原理

所谓的静态测试具体是指不对相关的程序进行执行,通过对代码中存在的错误和缺陷进行寻找,进而判断软件的安全性、可靠性、稳定性。该测试技术的最终目的是以代码作为标准,对软件的整体质量进行监控。由于静态测试无需运行程序,加之测试中对各方面条件的要求较低,从而使其成为基于DSP的嵌入式软件测试中的关键技术之一。对于静态测试而言,其中较为重要的一项功能是软件检查,通过检查能够发现软件的表示与描述是否一致,二者之间有无冲突,这是其它测试的执行前提。静态测试以检测分析为主,如可分析程序语法的词汇,检查独立语句的结构,该测试技术的主要步骤有对软件程序的代码进行检查、分析软件中独立语句的结构、度量代码的质量等。

2.1.2 静态测试类型

静态测试技术分为两种类型,一种是人工手动型,另一种是计算机自动型。前者是以人工的方式进行阅读分析,进而完成软件的测试。在基于DSP的嵌入式软件中,部分逻辑性错误无法在系统中显现出来,因此,需要通过人工复查的方式,找到这些错误,并进行优化。利用人工测试,最高能够检查出70%左右的逻辑错误;后者是借助计算机对测试过程进行辅助分析,以各种分析工具为依托,对被测软件进行静态分析,从分析结果中提取出有价值的信息,比如变量、参数的匹配程度、循环嵌套、无法执行的代码等等。

2.1.3 静态测试的应用优势

静态测试主要包括人工检测和计算机辅助测试两种技术方法。在人工检测中,可充分发挥人的优势,利用思维互补的方式通过人在软件开发中形成的思维逻辑去识别逻辑错误,检验出常见的逻辑错误,提高检验效果。在计算机辅助测试中,可利用Polyspace软件进行静态分析,具体检查内容包括:检查C和C++语言编码是否规范;检查C和C++语言代码中的潜在软件是否存在错误,包括程序、内存、嵌入式软件信息是否存在安全问题;对堆栈大小估计等软件代码进行质量度量和分析;检查软件代码的安全性,及时排除软件运行中可能存在的错误。利用计算机辅助测试,可证明代码的安全性,达到穷举式的测试效果。如果在适当流程中采用计算机辅助测试及时进行集成测试,可大幅度提高代码验证率,减少鲁棒性测试工作量20%以上,缩短人工代码检查时间40%以上。除此之外,还能够避免软件错误发布,及时修复已经发现的错误,节省错误修复时间。

2.1.4 静态测试技术的具体应用

(1)在静态测试中需要利用测试工具分析源代码语法是否存在错误,由于DSP嵌入式软件拥有多个文件,创建了不同属性集合Group,所以在软件测试中,可将多个文件视为一个整体,对整体进行测试,得到系统分析报告,验证编码规则和代码是否存在错误,并对程序质量进行评估。

(2)在测试中,利用指定的编码规则集可完成软件源代码检测,同时也可以满足用户的需求,自行制定编码规则集进行测试,验证编码规则是否存在错误。在程序质量评估中,利用LDRATestbed等测试工具收集软件代码的相关信息,检测软件是否满足质量要求,并且检测使用数组访问越界、空指针等软件是否存在代码错误。

(3)在静态测试中,根据测试要求选择测试项目,调用相应的静态函数,确保函数能够完成软件的复杂度分析。在分析用户编码规则中的源代码时,要检测是否存在违法编码规则的情况,分析代码的清晰性,获取全面的软件质量测试报告。同时,深入分析测试报告,判断软件是否仍然存在着错误程序。

2.2 基于DSP的嵌入式软件动态测试

2.2.1 动态测试

所谓的动态测试具体是指在真实或是仿真模拟环境中,使被测试的软件程序代码正常运行,通过观察的方法,对程序运行过程中表现出来的各种情况进行分析,如功能、逻辑、行为等等,从中找出错误,达到测试的目的。

2.2.2 动态测试方法

目前,动态测试比较常用的方法有以下两种,一种是黑盒测试,另一种是白盒测试。前者是以软件的具体用途及其外部特征作为主要依据,对其中存在的缺陷进行查找,该方法的优点在于不需要对软件程序的内部结构进行了解,从软件使用的角度出发进行测试,与软件的应用需求密切结合。采用黑盒测试对基于DSP的嵌入式软件进行测试的过程中,为判断软件是否达到预期中的应用要求,应当对如下几个方面进行测试:负载、性能、定时等等。后者以软件程序的内部逻辑结构为依据进行测试,利用源代码,对软件中存在的缺陷进行查找,从而达到测试的目的。对于白盒测试而言,其效果主要与代码覆盖率有关,是评价该方法的重要指标。白盒测试的覆盖分析工具能够提供如下信息:语句覆盖率、分支覆盖率以及条件覆盖率等等。

2.2.3 动态测试的具体应用

在运用动态测试技术对基于DSP的嵌入式软件进行测试的过程中,可使用相关的测试工具,对软件的实时运行情况进行记录,据此生成覆盖率报告,然后按照可度量覆盖标准,对软件已执行的语句行数进行确定,通过覆盖率判断,确定引起变化的条件数量。具体测试时,需要用到编译器和仿真模拟器,并以联协的方式搭建测试环境,选择开发板,将下载的测试程序导入模拟器中,从而使测试环境无限接近于真实的目标机,在此基础上对测试程序进行执行,进而获得测试结果。当测试环境搭建完毕后,程序设计人员应当按照测试需求,对相关的参数进行配置,执行动态测试,检测程序代码,确定覆盖率,根据测试结果找出软件中存在的缺陷,据此进行修补和优化。

3 结语

综上所述,随着基于DSP的嵌入式系统应用日益广泛,对其核心部分的嵌入式软件进行测试显得尤为必要。在具体测试的过程中,既可以采用静态测试技术,也可以采用动态测试技术,如果系统对嵌入式软件的整体质量要求较高,可将两种技术联合使用,由此能够提高测试结果的准确性。未来一段时期,应当加大对嵌入式软件测试技术的研究力度,除对现有的技术进行不断改进和完善之外,还应开发一些新的技术,从而更好地为嵌入式软件测试服务。

猜你喜欢
嵌入式软件静态代码
最新进展!中老铁路开始静态验收
猜猜他是谁
创世代码
创世代码
创世代码
创世代码
实时嵌入式软件的测试技术
全景相机遥控器嵌入式软件V1.0 相关操作分析
基于Eclipse的航天嵌入式软件集成开发环境设计与实现
航天嵌入式软件浮点运算误差分析与控制