单元覆盖测试
覆盖测试是衡量软件质量的一个重要的指标,是一种”白合”测试方法,覆盖的标准有逻辑覆盖,循环覆盖,基本路径覆盖。其中逻辑测试包括语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,条件组合覆盖和路径覆盖。
覆盖测试必须拥有程序的规格说明书和程序清单,以程序的内部结构为清单设计测试用例。覆盖测试主要使用在具有高可靠性要求的软件领域(军工企业,航空航天软件,工业控制软件).覆盖测试需要借助一定的工具软件,工具软件具有的功能特点:
分析软件内部接口,帮助定制覆盖策略及设计测试用例
与适当的编译器结合,对被测软件实施自动插桩,以便在其运行过程中生成覆盖信息并收集这些覆盖信息
根据收集的覆盖信息计算覆盖率(Coverage),帮助测试人员找到未被覆盖的软件部分,以改进测试用例,提高覆盖率
对主流开发语言的支持,因为对不同的开发语言来说,测试工具的实现的方式和内容差别是较大的。目前测试工具主要支持的开发语言是:标准C,C++,Visual C++,Java等,
进行动态覆盖测试的三项任务:1.设计测试用例;2.对被测代码进行插桩;3.收集覆盖信息并进行分析。
2.1覆盖测试工具介绍
xUnit基本不支持覆盖测试(白盒测试中重要的内容)。覆盖测试工具实现的技术方式和具体的语言是紧耦合的。不同语言使用的覆盖测试的策略是不一样的。实例如下:
Java(EclEmma+JUnit,JCoverage)
NET(NCover+NUnit)
CppUnit框架很难提供覆盖测试的功能,c/c++测试覆盖测试是通过插桩实现的.C/C++覆盖测试工具:gcov
2.2JUnit下的覆盖工具EclEmma
时至今日,IT人士更加关注测试的重要性。 测试驱动开发(TDD)被证明是一种能有效提高软件质量的方法,测试优先原则,EclEmma2006年入围Eclipse Community Awards Winners 决赛
2.2.1EclEmma
Emma是Sourceforge上的开源项目,某种程度上,EclEmma是Emma的图形开发工具。
Eclipse,OpenJDK,JUnit,Ant,CVS或者Subversion,Emma -- java开发成套开源的解决方案。
Emma的同类产品:Coverlipse,Cobertura,Quilt,JCoverage.
EclEmma的特点:快速的开发和测试周期,非常丰富覆盖信息分析以及非入侵方式。
EclEmma:一个封装Emma覆盖工具的Eclipse的插件。Eclemma的官方地址:http://sourceforge.net/projects/eclemma
EclEmma使用不同颜色标识的源代码测试的情况,绿色-完整执行,红色-根本没有执行,黄色-部分被执行,其视图能够分层显示代码的覆盖测试率。
2.2.2EclEmma环境建立
EclEmma的安装是就是Eclipse插件的安装,共有这样三种方式安装.
1.Eclipse自身的Software Update机制.
选中菜单栏中Help/Install New Softeware,在如下图中对话框中填入插件的站点的信息。
本人是在Ubuntu12.04下使用eclipse的,如果是在windows下的话,具体操作可以参考[2]。
缺点是:当安装了许多插件之后,eclipse的plugins中会充满各种旧的或废弃的插件,不便于更新和管理
2.蛮力法安装
将插件的压缩包解压,然后将其中的plugins和features与eclipse安装包中的同名文件夹合并,这样就可以在Eclipse中使用新插件。实际上第一个方法自动安装也是使用的这种方法,只不过由机器自动改成了手动。缺点同上。