CODETEST|嵌入式软件|测试

来源:百度文库 编辑:神马文学网 时间:2024/04/28 22:47:40

CODETEST在嵌入式软件测试中的应用

作者:胡勤霞1刘庆峰2 来源:网络 时间:2010-5-11

 

摘  要:介绍了CODETEST 测试工具的特点及工作原理。详细阐述了利用这种工具进行软件测试的方法和内容。实践表明,该测试工具测试方法简单,测试效果好。

关键词:  CODETEST;嵌入式软件;测试

 

0 引 言

随着科技技术水平的发展,计算机技术以智能化、嵌入式为特点更方便、灵活的服务于人类,并存在于众多关键性运用中。嵌入式系统也越来越复杂,对系统性能要求不断提高,需要功能强大、运行稳定、性能卓越的应用软件与之相适应。目前,嵌入式软件主要应用于武器系统、战术系统、飞机、舰船、导弹、宇宙飞船、某些指挥与控制系统等之内的数据处理机。嵌入式软件就是指驻留运行在嵌入式计算机中的执行程序。对嵌入式软件的测试也面临巨大的挑战,其测试难点主要表现在以下几方面:1)响应时间快速而难以测试性能;2)结构紧凑而难以插装;3)操作系统多样而难以统一系统接口;4)CPU和硬件体系多样而难以使用固定测试设备;5)关键任务执行错误造成巨大损失,测试工作压力大;6)软件开发的模式不同于通用开发方法,测试工具必须同开发环境相配套。如何对嵌入式系统的软件进行测试,尤其是在关键性产品的嵌入式软件测试各阶段,采用何种方式和手段,开控制、辅助软件的质量控制,越来越成为一个急待解决的问题。本文提出了一种测试工具CODETEST,能够在保证系统真实性的前提下,在软件的单元测试阶段、集成测试阶段、系统测试阶段等各阶段对嵌入式系统的软件进行实时在线的测试与分析,保证了嵌入式系统的性能和可靠性。

 

1 CODETEST工作原理

CODETEST测试是实时在线的完全真实的测试。其测试的特点是用硬件测试软件;软件在实际情况下运行;通过打点方式工作;对真实硬件实时系统的在线交互式测量、精确、结果详尽;用软件开发者的角度观察嵌入式软件的执行;生成的数据和文档符合工业规范的要求。对硬件测试的条件是被测试系统提供测试点,接合测试头,适配器进行正常的测试。对硅片测试的条件是为其测试准备测试引脚和测试点,再对硅片进行测试。被测软件的下载、运行控制等,用CODETEST来实现。

 

CodeTest的嵌入式软件测试方案

用CODETEST进行测试的一个实例如下:在执行一项软件测试任务中,发现关键任务执行时间过长,使用逻辑分析仪未能判断原因。把CODETEST软件Trace的触发器设在进入函数X 的入口点,清楚的看出关键任务被其他函数或任务中断,发现被错误设置优先级的中断服务例程,开始发现主要的中断服务程序性能不满足要求,最终发现它被错误设置中断优先级的LED中断显示程序所中断。其他现象为:如果关闭所有中断,BUG就没有了,这种情况下软件DEBUG 无能为力。

CODETEST测试工具的主要功能是:动态显示覆盖率趋势;提高测试效率;通过覆盖率趋势,去除不必要的测试;通过覆盖率数据减少测试次数,测试更有效率;实时动态显示覆盖率,简化测试用例生成过程;提高产品质量;发现没有测量过的部分;产生更有效的测试用例;量化测试的进度。

 

2 嵌入式软件的主要性能参数及测试方法

嵌入式软件性能测试的主要技术参数指标有以下四项:1)性能分析;2)内存分析;3)代码跟踪;4)语句覆盖,决策覆盖,多条件决策覆盖。针对以上性能测试指标,CODETEST提供了嵌入式软件验证工具如下:

CODETEST / Performance    分析性能

CODETEST / Coverage      分析覆盖率

CODETEST / Memory       分析内存分配

CODETEST / Trace            分析软件执行流程

2.1  CODETEST/性能分析:

CODETEST的性能分析能实现的功能为能实时显示每个函数、任务的运行时间;能显示在某时间段中,每个函数和任务的被调用次数;发现占用时间多和调用频繁的代码,把它们 in-line,性能得到提高;可对占用CPU时间长的函数或任务有针对性的优化,从而使整个系统得到优化。通过这样的性能测试具有的优点是:性能符合要求;不用进行昂贵的硬件升级和重新设计;提高性能X%;发现瓶径和有缺陷的代码;发现哪一个软件子系统不符合性能要求;系统管理开销小。 性能分析包括任务和函数性能分析、调用关系跟踪。

2.2 CODETEST /覆盖率

CODETEST的覆盖率能实现的功能为一个页面就可以显示整个程序的覆盖率摘要信息;简单明了的当前测试进度信息显示;支持多次测试的数据合并。覆盖率测试的优点是通过覆盖率趋势,能够去除不必要的测试;通过覆盖率数据减少测试次数,测试更有效率;实时动态显示覆盖率,简化测试用例生成过程。能够发现没有测量过的部分;产生更有效的测试用例;量化测试的进度。覆盖率包括函数和源程序覆盖率、覆盖率趋势。

2.3 CODETEST /内存

CODETEST内存测试可测试内存的内容为了解程序内存分配的真实情况;测量内存使用情况,发现对内存的不正常使用;在系统崩溃前发现内存泄露错误;发现内存分配错误;精确显示发生错误时的上下文情况;指出发生错误的原由;无须做痛苦的代码跟踪,就可以发现错误;并在问题出现前发现征兆。

内存分配和分配错误显示测试主要内容为测量那些函数使用了较多或较少的内存;去除所有的内存错误;捕捉空指针和其他的错误情况;发现内存泄露。

2.4 CODETEST /分析软件执行流程

CODETEST/分析软件执行流程即对程序实际运行过程进行记录,以了解程序运行的实际情况。对于实时多任务系统,还要求对任务的执行与切换及对应时间进行记录,解决任务或中断优先级的问题。它把深度跟踪和便捷的运用特点结合起来。该工具可以从三个不同的抽象层次显示程序执行过程:1)高级,显示RTOS事件和函数执行的入口和出口;2)控制流程级,显示可执行函数中每一条分支语句;3)原码级,显示每条执行过的C或C++语句。具体内容如下:

1)高级显示方式

实现的功能如下:在任务或函数级别显示全部的程序运行流程;观察软件单元之间的交互过程(互相调用等);直观缩进方式显示程序的上下文执行过程。

2) 控制流方式

实现的功能如下:显示所有函数的所有分支点的决策执行情况;简化显示函数内部的执行流程;显示函数每一次调用的不同的内部执行路径。

3)源代码显示方式

实现的功能如下:在函数和任务上下文之间显示每一行执行过的原代码;以软件工程师的角度显示代码执行过程。

4)CODETEST /Trace - 触发

使用触发功能,只需根据确定一个任务中RTOS任务和函数等级来选择所需要跟踪的软件内容,包括内存分配错误触发。

3 CODETEST与其他测试工具的比较

CODETEST是硬件辅助软件测试工具,其特点在于实时、在线、精确,CODETEST与纯软件测试工具和纯硬件工具的对比见下表。

纯软件测试工具

CODETEST

硬件辅助软件测试工具

纯硬件工具

(仿真器,逻辑分析仪)

 

缺乏很好的性能分析

缺乏覆盖率分析

缺乏内存分配分析

对目标系统影响大(超过50%)

占用目标系统资源如,CPU 时间内存,通讯通道等

软件打点方式

比较便宜

可在CACHE打开下工作

精确度偏低

强大的性能分析

强大的覆盖率分析

强大的内存分配分析

对目标系统影响小(1-15%)

不占用目标系统资源

软件打点技术

价格较便宜

可在CACHE打开方式下工作

非常精确

 

有限或没有性能分析

有限的或没有覆盖率分析

没有内存分配分析

不影响目标系统(0%)

不占用系统资源

不用打点

价格昂贵

无法在CACHE打开方式下工作

精确性随情况变化

通过仿真存储器工作

支持读写内存数据

软件下载到目标系统

 

 

4 结束语

本文介绍的CODETEST测试工具的测试方法已经在3Com等大型嵌入式软件系统中得到应用。随着后PC时代的到来,嵌入式软件变得越来越复杂,越来越深入到生产线的各个部分,对软件的性能和稳定性提出了更高的要求。CODETEST测试工具为针对嵌入式软件分析测试提供了解决方案,为嵌入式软件的开发和测试者提供了新的技术手段,使人们能以全新的视角审视嵌入式软件的开发和测试过程。

              

 

参考文献:

[1]郑人杰   计算机软件测试技术   清华大学出版社   1992

[2]深圳市华唐科技有限公司     CodeTEST TM介绍      

[3]靳超   硬件辅助的软件在线测试和分析技术  奥吉通科技有限公司 2004.11.7