娄红
摘要:现阶段,嵌入式计算机技术不断得到快速发展,这在很大程度上促使其在社会生活各个领域内的应用也越来越广泛,且该系统中软件系统比重及软件架构呈现越来越复杂的趋势,引起业界不断提升对软件运行可靠性的高度关注。文章全面阐述了嵌入式计算机软件测试的基本概念,详细探讨嵌入式计算机软件测试的关键技术,以期能提升嵌入式软件测试的质量及应用性能,从而为软件测试工作的开展提供一定借鉴和参考价值。
关键词:嵌入式计算机;软件测试;宿主机;仿真机;目标机
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)13-0092-02
Abstract: In this stage, the embedded computer technology has been rapid development, prompting its application in various fields of social life are increasingly being used to a large extent, and the system software and software architecture presents the proportion the trend to more complex, causing great concern to the industry and improve the operational reliability of the software. Full article describes the basic concepts of embedded computer software testing, detailed discussion of key technologies for embedded computer software testing, with a view to enhance the quality and application performance for embedded software testing, to provide some reference for the development of software testing and the reference value .
Key words: embedded computer; software testing; host; simulator; target
现阶段,随着嵌入式计算机技术的不断革新,其在社会生活各个领域之内的应用越来越广泛,业界逐渐提升对软件的质量和应用性能的重视,以求其能满足当前日益增长的软件测试的需要[1]。软件质量的监测是嵌入式软件测试最主要的工作内容,对嵌入式软件的开发及应用有着非常重要的作用。
1 嵌入式软件测试
软件测试是为捕捉代码中得错误而对代码进行分析或执行的过程,这一测试在很大程度上能保证软件的质量及可靠性,为产品设计定型提供一定的依据[2]。同其他软件相比,嵌入式软件有着很强的专用性,强调必须在需求指定的专用硬件平台上进行运作。并且,嵌入式软件在自身的开发及运行环境上呈现出独特的交叉分离特点:通常在宿主机上运动编辑和编译这些开发工具,而常见的调试命令及数据传输则是建立在主机与下载好软件的目标机相互联立的通讯上。具体交叉开放方式如图1所示。除此之外,考虑到主机和目标机在操作系统、处理器体系结构上存在的差异,就在很大程度上赋予嵌入式软件开发过程以更为严密的复杂性。这里我们所涉及的宿主机主要是指微机、工作站此类的通用性计算机,而目标机的关键性作用便是对于嵌入式系统通讯的宿主机进行严格意义上的区分。
2 嵌入式软件测试关键技术
2.1 宿主机关键技术
对宿主机的测试通常是通过代码逻辑测试实现的,宿主机测试的关键技术可分为静态测试技术和动态测试技术。
1)静态测试技术
现阶段,最常用的软件查错方式仍是人工审议与走查,但基于软件规模的日益增大,往往需要大量的工程师人才资源,且源码在目录或机器上较为分散,难以进行软件的审议与走查[3]。针对这一问题,需利用必要手段获取整个软件系统框图,实现相关量的自动化链接,在很大程度上为软件的审议与走查提供较大便利。而利用静态测试分析技术能绘制程序逻辑图及控制流程、获取完整的软件系统逻辑框图、进行程序路径分析、可互相转换生成的逻辑图、流程图、框图等。以便设计出更为高效的测试用例来提升软件质量及测试覆盖率。
2)动态测试技术
动态测试技术的对象和重点是软件代码的动态执行能力,全面分析代码的覆盖率、内存分配使用信息。其中被测软件的代码在测试执行时出现的执行情况便是代码的覆盖率,对代码覆盖率的监控能提升软件测试的有效性,对测试完成力度进行全面掌控,并能快速识别被遗漏的测试数据,为测试人员科学掌握并控制测试进程提供数据参考。代码覆盖率的计算指标包括语句覆盖、分支/判定覆盖及MC/DC[4]。而内存分配信息则强调高度关注其中的每一个函数、内存分配点内存分配及释放情况,并及时监视动态内存分配中出现的错误信息。利用动态内存分配信息,能快速准确掌握内存遗漏问题,为内存分配优化提供策略依据。
2.2 仿真机关键技术
作为宿主机与目标机测试的中间性缓解,仿真机能在很大程度上超真实地模拟目标机的功能及性能,从而获取较目标机更为真实的物理性能测试结果。测试数据获取技术及仿真技术是仿真机测试的关键技术。
1)测试数据获取技术
如何利用仿真机获取测试过程中产生的数据是当前嵌入式软件测试的瓶颈之一,大多嵌入式软件测试功能都需利用源代码进行测试,这就需要采取积极有效的方式确保软件质量及性能,以获取准确的测试数据。现阶段,常用的测试数据获取方式包括实际物理通道取数、开发工具的虚拟IO指数以及内存取数。其中,实际物理通道取数是目标机与主机之间物理的具体通信方式,如串口、USB、并口等,利用实际物理通道取数能在很大程度上直接经由数据通信软件实现与主机之间的通讯,并在此基础上进行必要的测试数据上载,开发工具虚拟IO指数是一种更为高级的开发工具,为测试带来极大便利,如Tornado及TI CCS。假使目标系统没有上述两种获取方法,那么还能够通过内存读取数据的方式直接获取内存取数。换句话说,是在充分确保足够缓存的基础上,加之修改测试工具的库,在缓存中写入输出数据,测试进行或结束后,对缓存中记录的数据进行读取,并在此基础上以文件的形式保存到主机上。值得关注的是,这样的方式通常必须在测试前充分确保缓存的大小。但是从适用性上来说,这种方式有着较大的优越性,几乎可以说这种功能充分体现在所有的开发调试工具上。
2)仿真技术
嵌入式软件仿真是一种建立在局域网基础上的数据集中性管理、处理系统。其结构包括实时仿真机、I/O系统、软件测评控制模板、测试结果分析工具、总线仿真及总线监控模板、实时调度模板[5]。仿真测评控制技术及仿真技术是仿真测试常见的关键性技术。利用必要的仿真测试,能高度真实地模拟现场总线系统上的相关数据,除此之外,还能按照不同的测试对象,逐个分析研究各种电信号激励源仿真,但总线除外,从而实时检测并分析现场总线的运行状态,实现人机交互界面,控制实时在线测评平台各设备,完成软件测评等。
2.3 目标机关键技术
高度评估系统综合性能是当前目标机的测试重点,其具体功能是用来评估真实的物理目标机,最大限度对软件交互、可靠性及稳定性进行专门性获取。从关键技术上来说,故障注入、内存分析、性能分析为目标机测试常见的三种关键技术。其中故障注入技术能便于进行系统边界测试、容错性测试、鲁棒性测试、强度性测试等。内存分析技术主要用来对动态内存分配中存在的缺陷进行处理,当前主要有硬件和软件这两种内存分析手段。从硬件方面来说,在价格上基于硬件的内存分析工具较为昂贵,并且使用范围有限,仅仅能运作在工具指定的环境之中。而从软件方面来说,基于软件的内存分析方式会影响到代码性能,给实施操作带来干扰。性能分析技术能为开发人选择代码优化范围提供必要的参考数据,能准确分析并提供执行时间的消耗方式、消耗时间以及每个例程所需要使用的具体时间等,便于开发人正式决定通过何种方式对软件进行优化,能获得更高时间性能。此外,性能分析工具还能联合调试工具引导开发人员及时准确查看那些亟待优化的特定函数,能指导开发人员对系统调用中错误及程序结构上的缺陷进行必要的探讨和分析。
除此之外,还能在性能测试中,最大限度利用代码覆盖分析工具追踪那些被执行过的代码。测试人员总结测试结果数据,能准确发现被执行过的代码及被遗漏的代码。对嵌入式软件来说,代码覆盖分析工具有着对代码执行侵入的可能,会在一定程度上对代码运行过程产生影响。
3 结束语
当前嵌入式系统应用领域越来越广泛,其软件规模和复杂性日益提升,这就促使各个领域进一步提升对嵌入式系统的质量、可靠性、有效性的要求,从客观上来说,正是这些软件的质量决定了整个产品的质量。本文通过对嵌入式计算机软件测试关键技术的深入分析和研究,以期能为嵌入式软件测试研究和实践提供一定参考和借鉴作用。
参考文献:
[1] 高赛军.嵌入式武控计算机软件测试关键技术研究[D].上海:华东理工大学,2013.
[2] 施小敏.嵌入式IO控制器软件测试关键技术研究[D].上海:上海交通大学,2012.
[3]平婕,秦军,康建华,安元伟.嵌入式软件测试关键技术研究[J].有线电视技术,2010(8):45-47,50.
[4] 周凌云.嵌入式武控计算机软件测试关键技术的研究分析[J].科技展望,2015(4):136.
[5] 凌杨,邵培南,佟雷,李建军.基于数字化仿真环境的嵌入式软件测试方法[J].计算机工程,2011(S1):49-51.