分享

常用嵌入式软件测试方法分析和对比

 昵称28319554 2015-10-15

在嵌入式领域目标系统的应用系统日趋复杂,而由于竞争要求产品快速上市,开发技术日新月异,同时硬件发展的日益稳定,而软件故障却日益突出,软件的重要性 逐渐引起人们的重视,越来越多的人认识到嵌入式系统的测试势在必行。

由于嵌入式系统的自身特点,如实时性(Real-timing),内存不丰富,I/O通道少,开发工具昂贵,并且与硬件紧密相关CPU种类繁多,等等。嵌入式软件的开发和测试也就与一般商用软件的开发和测试策略有了很大的不同,可以说嵌入式软件是最难测试的一种软件。嵌入式软件测试使用有效的测试策略是唯一的出路,它可以使开发的效率最大化,避免目标系统的瓶颈,使用在线仿真器节省昂贵的目标资源。

通过多年来前人的不断努力,我们已经掌握了一些专门针对嵌入式软件特性的测试方法和技术,经过对现有的这些测试方法和技术的总结和分析,我们可以把嵌入式软件的测试分为软件测试方法,硬件测试方式和软硬件结合的测试方法。由于嵌入式系统资源有限,很难提供软件开发、调试所需要的相关资源和工具,因此嵌入式系统的这个特点也限制了嵌入式软件的测试。所以对于嵌入式软件测试来说,也有基于宿主机的测试和基于目标机的测试之分。本文将对几种常用的嵌入式测试方法进行分析和对比。

软件测试方法

软件测试方法的目的就是尽量减少嵌入式软件在目标环境下测试的时间,不需要为了完成测试工作而建立专用的硬件测试环境,降低测试的成本。软件测试方法一般是通过在宿主平台上建立一个软件方针测试环境来完成对被测软件的测试。按照仿真环境和仿真方式的不同,基于软件仿真的测试方法可以分为两类:一类为了实现仿真支持,要求用户改写代码,使用测试环境提供的输入/输出函数代替被测程序中的I/O访问。Pmsoft公司的ESIM就是这类测试工具的典型代表,它通过在宿主机上运行C语言编写的嵌入式软件来完成测试过程。被测软件经过C编译器编译后被连接到ESIM环境的库中,不但有指令的仿真,还包括输入/输出操作的仿真。其特点是仿真环境构造相对简单,仿真速度快,因为无需使用指令仿真器。

另一类是完全以软件仿真的方式实现嵌入式软件的测试,不需要任何目标设备的支持。例如SDS公司的SingleSTEP。它允许用户在没有目标机和I/O设备、并且无需修改被测程序的情况下完成对被测软件的测试工作。这样的工具还有Ready公司的RTAda-SIM等。这类方法构造软件仿真测试环境费时费力,而且仿真速度较慢。

硬件测试方法

常用的硬件测试方法主要包括总线监视器、仿真存储器、在线仿真器ICE和逻辑分析仪等。总线监视器通过观察总线上的数据和指令来获得程序执行的可视性,在对流经总线的数据进行分析时完成一些相关的测试工作。

仿真存储器的工作原理开发商在存储器中包含覆盖位,当访问到某个内存地址的同时设置覆盖位。程序运行结束后,就可以看到仿真存储器被“命中”的部位,并从中推算出测试覆盖率的百分比。通过连续把系统内存“映射”到仿真存储器就可以得到测试覆盖率的统计结果。

在线仿真器ICE是用来仿真CPU核心的设备,它可以在不干扰运算器的正常运行情况下,实时的检测CPU的内部工作情况。当ICE停止时它内部的寄存器内容可以被读出,还允许用户设定断点、检测和修改CPU状态。ICE的不足之处在于它对特定的微处理器来说是专用的。

逻辑分析仪则是通过设置各种的逻辑条件,实时记录下内存访问的活动,所以也可以把它作为测试覆盖率的工具。由于逻辑分析仪是用在“触发捕获”模式下的,所以把跟踪的数据转化为覆盖率数据是比较困难的。因此一般用在逻辑分析仪进行测试时,采用统计采样的方法。

上述的这些硬件测试方法对被测软件的运行影响很少,但是它只能获得被测程序较低层次的信息,需要测试人员来完成从这些低级的信息到被测软件高层结构的映射,测试效率比较低。

软硬件结合的测试方法

AMC公司的CodeTEST是一种软硬件结合的实时嵌入式软件测试工具,它仍然采用了传统的软件插桩方法,但由于硬件采集的存在可以使得插入的额外代码减少,对目标系统的影响降低,同时也克服了逻辑分析仪不能长时间连续进行采集的缺点。由于一些额外代码的存在也会对被测程序的执行行为产生一定的影响,从而使得干扰的存在,在一定程度上影响测试的结果。根据AMC提供的分析数据,这种干涉效应为1%-15%。

为了解决实时软件测试过程中引入额外的代码而产生的探针效应问题,也有人研究软硬件相结合的实时嵌入式软件测试方法。在这些方法中,为了解决某个特定应用中嵌入式软件的实时性测试问题,需要开发专门的硬件设备和上层分析软件。因此通用性不好,而且实现困难,测试成本高。

codetest

基于宿主机的测试

基于宿主机的测试是指完全利用宿主平台上丰富的资源和工具来对嵌入式软件进行测试,不需要依赖目标系统的支持。基于宿主机的测试极大地提高了被测软件执行可视性和可控性。因此测试过程中我们能够以较少代价、较高的效率发现和定位软件设计中的错误。另外,基于宿主机的测试在完全脱离目标平台的情况下完成对嵌入式软件的测试工作,可以尽早发现软件设计中的错误,避免了在软硬件集成时才来发现和定位问题。从而减少了软件的测试成本、降低了开发风险。目前,已经有很多的研究工作是把嵌入式软件的测试转移到宿主平台环境中进行。

基于目标机的测试

无论在宿主机上进行的测试如何完善,基于目标系统的测试仍然不可替代。因为有些问题只有在目标机上测试时在能够发现,例如软硬件接口。当然,基于目标机的测试并不能仅仅依靠目标系统来完成全部的测试。为了解决目标机平台测试时可视性和可控性有限、测试效率低的问题,基于目标机的测试一般都是采用宿主机/目标机(Host/Target)交叉的测试模式。被测软件运行在目标系统中,宿主机负责控制目标系统的运行并且反馈目标系统的状态来实现测试。这样一方面实现了软件在真实的目标环境下的测试,而且又充分利用宿主机上丰富的资源和工具,高效、低成本的完成嵌入式软件的测试工作。

基于目标机的测试


本文转自慧都控件网

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多