几种典型的嵌入式软件测试方法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

几种典型的嵌入式软件测试方法

摘要:根据嵌入式软件的大量应用的实际情况,对不同类型的几种软件测试的测试方法进行简要介绍,针对不同方法的差异性和特点进行了分析,以指导设计人员开展软件的开发、分析与测试。

关键词:嵌入式软件测试

随着嵌入式技术的发展,嵌入式应用的日趋增多,嵌入式系统复杂度和软件规模也不断提高,其质量和可靠性对产品的实物质量起到重要作用。针对嵌入式软件应用的情况,本文提出了几种为嵌入式软件的开发、分析与测试设计的典型测试方法。

1 嵌入式软件分析与测试的重要性

目前,我们大多采用成熟的商用操作系统VxWorks,使系统运行在一个高性能的、可靠的软件平台上,这为实现各种大型的复杂应用打下了良好的基础。随着嵌入式系统开发应用软件的代码量也越来越大,系统要求日趋,软件的质量对产品的提高,如没有一个有效的科学的开发测试管理手段,开发的软件得不到很好的测试与分析,那些代码带着潜在的危险交付到客户手上,会给客户带来巨大的损失。嵌入式软件测试面临的技术挑战主要有:测试工具很原始或者说根本没有;有一些软件执行流程无法可视化;改正本来可以预防的问题时花费很多时间;无法得知测试的有效性。

随着嵌入式系统的发展,我们迫切需要一种工具能够在软件开发的单元阶段、集成阶段、系统阶段等对嵌入式系统的软件进行实时在线的测试与分析,以保证系统的性能和可靠性。目前流行的测试工具纯软件测试工具、纯硬件测试工具和硬件辅助软件测试工具。下面具体介绍几种实际测试工具及其特点。

2 纯软件的测试工具

纯软件的测试工具采用的是软件打点技术,在被测代码中插入一些函数,用这些函数来完成数据的生成,并上传数据到目标系统的共享内存中;同时在目标系统中运行一个预处理任务,完成这些数据的预处理,将处理后的数据通过目标处理器的网口或串口上传到主机平台。这一切都需要借助于用户的目标处理器完成。通过上述过程,测试者知道了程序当前的运行状态。纯软件测试工具的测试原理有两个必然的特点--插桩函数和预处理任务。

因插入插桩函数和预处理任务的存在,使系统的代码量加大,而这些增加的代码会对系统的运行效率有很大的影响。它们占用大量的系统资源,体现在函数本身要有它的实现过程,它要完成数据的生成和暂存,预处理任务需要占用CPU时间、共享内存和通信通道完成数据处理和上传。由于这些弊端的存在,用户目标系统是在一种不真实的环境下运行的,捕获的数据也是不够精确的。所以采用纯软件的测试工

具缺乏性能分析,也不能对内存的动态分配进行动态的观察。

3 纯硬件的测试工具

纯硬件的测试工具通常用于系统的硬件设计与测试工作,当它用于软件测试时,无法全部满足用户的基本需求。以逻辑分析仪为例,它是通过监控系统在运行时总线上的指令周期,并以一定的频率捕获这些信号,通过对捕获的信号进行分析来判断程序当前运行的状况。由于它使用采样的方式,难免会遗失一些重要的信号。同时,分析的范围也有限。而仿真器通常采用内存标记技术,它所关心的也是处理器从外存的代码段读取数据的情况。所以,也无法在Cache打开的方式下工作。而它的性能分析也是通过仿真器的时间系统以抽样的方式进行的,无法实时对系统进行真实的分析。所以,纯硬件工具也不具备对内存分配进行分析和检查的能力。下面介绍具有代表性的几个工具,通过对它们的特点和原理分析,来对比硬件辅助软件测试工具同纯软件和纯硬件测试工具的不同之处。

4 主要测试工具介绍

4.1 CodeTest嵌入式软件测试系统

CodeTest是AMC公司提供的在线实时测试系统,具有强大的分

析测试功能。它能同时对l28000个函数和1000个任务进行性能分析,可以精确地得出函数或任务执行的最大时间、最小时间和平均时间,能够显示各函数或任务之间的调用情况,帮助发现系统瓶颈,提升系统性能:帮助测试工程师掌握当前的测试覆盖率数据,指导测试用例的编写;它能动态追踪内存分配,报告内存出错和原始数据,提早发现动态内存泄漏;它具有强大的代码跟踪功能,通过设置触发器来追踪感兴趣的事件,显示运行中的实际情况,查找程序BUG所在。

4.2 嵌入式分析测试器GammaCP

GammaCP(Gamma Coverage&Profiler)是一套基于嵌入式应用的代码覆盖测试和性能分析工具。其主要技术特点是:支持语句、分支、决策、函数、文件五种基本的覆盖类型;支持分支覆盖,弥补了决策覆盖不能对goto语句、switch语句以及由函数调用产生的分支进行分析的不足;用纯软件的插桩方式,每个桩点只插入一条汇编语句,对被测程序的影响小(1%~l5%左右),可靠性高、通用性好;提供中断模式、任务模式两种目标机端代理模式;提供常规方式、简单方式两种使用方式,适用于不同的覆盖测试要求:以图形化的方式显示覆盖测试结果,直观、简单易用。

4.3 逻辑分析工具GammaProfiler

GammaProfiler是嵌入式实时应用程序的逻辑分析软件工具,开发人员使用GammaProfiler可以发现实时应用程序在运行时的逻辑错

误和性能缺陷,从而帮助开发人员改进应用程序的性能及可靠性。这个工具目前适用于基于嵌入式实时操作系统内核DeltaC0RE的应用程序。在开发比较大型的嵌入式实时系统时,这个工具非常有用。GammaProfiier工作于交叉开发环境中,具有宿主机端程序和目标机端程序;宿主机端程序用于对数据进行分析,而目标机端程序承担数据采集任务。

4.4 Logiscope软件测试工具

Logiscope是一组嵌入式软件测试工具集。它贯穿于软件开发、代码评审、单元/集成测试、系统测试,以及软件维护阶段,它面向源代码进行工作。它的重点是帮助代码评审和动态覆盖测试。

5 结语

在对嵌入式软件实际使用过程中,发现有很多错误和程序漏洞很难用简单的调试以及测试来发现,往往需要大量的时间和人力来无目的的查找,不仅浪费时间,效果也不好,如果有一个好的测试工具再加上好的设计方法,能加快工作的进度,并提高产品的质量。

参考文献

相关文档
最新文档