单元测试的主要目的是获取应用程序中可测试软件的最小片段,将其同代码的其余部分隔离开来,然后确定它的行为是否与预期的一样。单元测试并不能保证程序是完美无缺的,但是在所有的测试中,单元测试是第一个环节,也是最重要的一个环节。单元测试的对象是软件设计中的最小单位--模块,它是一种程序员对自己的代码进行自测试的工作,其测试依据就是软件模块的详细设计文档。单元测试通常采用白盒测试的方式,白盒测试也称结构测试或逻辑驱动测试,已知产品内部工作过程,通过测试来检测内部动作是否正常。测试按照程序内部结构进行,检验程序中的每条通路是否正确工作,而不顾它的功能。测试是从代码的路径结构和内部逻辑信息设计测试用例并覆盖全部代码、分支、路径、条件。 所以,单元测试的一个很重要的指标就是代码覆盖率,很多软件开发标准化组织都对单元测试的代码覆盖率有很明确的要求,低于标准就意味着单元测试不通过。
目前有很多单元测试工具都支持程序覆盖率的自动统计,应用较广的分析覆盖率的工具有 Logiscope TestChecker、 TrueCoverage 、 PureCoverage 等,本文主要是介绍如何使用Rational公司的PureCoverage工具统计测试代码覆盖率。PureCoverage是Rational公司的单元测试工具PurifyPlus三套件之一,PurifyPlus的另外两个套件分别是内存检查工具purify和代码效率分析工具pureQuantity。本文主要介绍如何使用PureCoverage配合Microsoft的开发工具Visual C++统计单元测试的代码覆盖率。PureCoverage通过记录执行过的代码,生成代码覆盖分析报告,其代码覆盖分析可以详细到语句级,技术上的原理就是使用目标码插入OCI(Object Code Insertion)技术。所谓的目标对象插入技术,就是直接对目标码进行分析,并插入相应的汇编代码,不过源代码插入SCI(Source Code Instrumentation)和执行码替换ECI(Executable Code Interception)都需要源代码或编译环境的支持,并且会引起程序运行缓慢和系统资源占用过多的问题。但是瑕不掩瑜,PureCoverage凭借着与Visual Studio集成开发环境的无缝连接,依然是单元测试工具的首选利器。
PureCoverage有两种运行界面,一种是应用程序界面,可以脱离开发环境独立运行;另一种是嵌入式界面,可以集成到Visual Studio的集成开发环境中,不过两种运行方式的基本功能是相同的。下面用一个简单的例子作个演示,使大家对PureCoverage有一个感性的认识,这个例子就是PureCoverage自带的一个例子hello.exe。
首先运行PureCoverage,然后选择“File”菜单的“Run”命令,在弹出的“Run Program”对话框中选择hello.exe程序:
图1. 选择程序
文章来源于领测软件测试网 https://www.ltesting.net/