代码覆盖分析工具在嵌入式软件测试中的应用

技术分类: 嵌入式系统  | 2008-05-13
来源:单片机及嵌入式系统应用 | 作者:苏华龙 陆松年

  4 嵌入式操作系统Nucleus的具体应用

  Nucleus PLUS嵌入式操作系统是目前最受欢迎的操作系统。Nucleus PLUS是为实时嵌入式应用而设计的一个抢先式多任务操作系统内核,其95%的代码是用ANSIC写成的,因此非常便于移植,并能够支持大多数类型的处理器。Nucleus PLUS最大的优势在于提供注释严格的C源代码给每一个用户。这样,用户能够深入地了解底层内核的运作方式,并可根据自己的特殊要求删减或改动系统软件,这对软件的规范化管理及系统软件的测试都有极大的帮助。

  基于时间效率的要求,在Nucleus嵌入式系统中实现代码覆盖分析采用的足内存存取操作的方式。具体实现过程如下:

  ①安装BullseyeCoverage,选择合适的编译器。由于使用PXA270作为开发平台,所以也选用了Intel C++编译器。安装完成后,从命令行输入命令“SET COVFILE="XXX"”来设定覆盖分析文件的输出地点和具体名称。默认的名称是test.cov。

  ②修改Makefile,将编译器的路径设置到Bullseye-Coverage的bin目录下。

  ③使用命令“cov01-1”打开覆盖编译选项。然后编译代码,需要在编译过程中确定调用了BullseycCoverage的拦截器,可以通过查看编泽记录中是否含有“BullseyeCoverage Compile C++version platform”的信息确定。通常会在编译结束时发现链接错误,这是由于需要调用的函数实现体并没有编译、链接进来。

  ④进入到BullseyeCoverage的run目录下,根据系统平台要求修改libcov-user.h、atomic-user.h和Makefik文件,用-DSYS_user区编译BullseyeCoverage运行库文件。通过这个选项可以使编译器选择用户自定义的平台文件,在这些文件中就含有需要封装的一些函数,如write、read、open等。编译完的库文件可以命名为libeov-user.a或libcov-user.lib。

  ⑤修改要测试系统的编译文件,在Makefile的链接过程中加入libcov-user.a或libcov-user.lib。再次重新编译,应该没有任何错误。

  ⑥根据BullseyeCoverage的要求,将libcov-user.h中带有REQUIRED标识的函数根据具体情况实现。在这个过程中,建议首先实现error_write_screen,这样在后续过程中可以将错误信息打印到屏幕或者输出到测试日志中,然后逐步实现其他函数。

  ⑦实现了所有必需的函数后,重新编译一遍确定没有任何编译、链接问题。最终会生成2个文件,一个是要运行的二进制文件(如rfs.bin),另外一个是覆盖分析文件test.cov。

  ⑧将ffs.bin和覆盖文件文件分别下载到系统中。其中,将ffs.bin下载到Flash存储器中,通过Nucleus的调试命令download将test.cov下载到系统内存中。

  ⑨运行二进制代码,在这个过程中,系统内存结构如图2所示。

系统内存结构

  ⑩二进制代码运行完毕后,用Nucleus的调试命令upload将test.cov上载到PC机中。

  ⑾用Coverage Brozrset打开test.cov,覆盖分析结果就得到了。

  通过实验,在投有使用BullseyeCoverage时,一般测试方式的测试覆盖率大致是55%~70%;而通过使用BullseyeCoverage重新设计测试用例,测试覆盖率提高到了85%~90%,其中7%的测试用例直接影响到产品的质量。使用测试覆盖分析工具BullseyeCoverage可以使测试更有针对性,减少冗余测试用例测试,提高测试团队的工作效率,能够在开发过程中尽早地发现Bug。

  5 总 结

  测试覆盖分析是一种对测试阶段度量及测试工作情况进行分析的很好的方法,可以使测试程度更为明确,阶段进度一目了然,其统计值也便于管理部门对当前测试状态进行了解与把握。

1】【2
加载中

对文章的评论

更多评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销