代码覆盖率分析 [中文翻译0.1版]

发表于:2008-5-06 13:47

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:AlexanderIII    来源:51Testing论坛

分享:

If a And b Then
...

        多条件覆盖需要4个测试用例来覆盖每一种A和B的组合真和假值。与路径覆盖一样(?),它每增加一个逻辑操作符,测试用例所需要的数量就要增加一倍。

条件/判定覆盖

        条件/判定覆盖是一种由条件覆盖和判定覆盖混在一起度量的方法。它简单,没有组成它的两种度量的缺点。BullseyeCoverage量度的就是条件/判定覆盖。

改进型条件/判定覆盖

        这种覆盖也被叫为MC/DC和MCDC覆盖。它需要足够多的测试用例去验证每个条件是可以影响到它所包括的判定结果。这种度量是由波音公司建立的,以及根据RCTA/DO-178B来开发航空软件。

        对于C,C++,和JAVA来说,这种度量需要的测试用例与条件/判定覆盖相同。改进型的条件/判定覆盖是为了有逻辑操作符但不是short-circuit的语言而设计的。当在C,C++和JAVA中的short circuit 逻辑操作符的结果可以影响到它所包含的判定时,它们仅仅起评估条件的作用。

        在定义了这种度量的论文[Chilenski1994]中,章节"3.3 Extensions for short-circuit operators" 讲了,"short-circuit操作符的使用,使得所有固定条件的需求与对不同条件影响的关系更加和谐"[***] 这篇论文里使用的编程语言是ADA,它有非short circuit的逻辑操作符,也有shortcircuit的操作符。[***]

路径覆盖

        这种度量报告的是每个FUNCTION里面的每一个可能的路径是否已经被走过了。路径指的是从FUNCTION入口到出口的分支序列。
        它的另外一种叫法是断言覆盖。断言覆盖是把路径看做逻辑条件的可能组合[Beizer1990 p.98]。

        由于循环覆盖介绍了无限制路径数目的方法,所以这种度量只考虑有限次数循环的可能性。这种度量有很多种变化来应对多种循环。内部边界值路径测试考虑了循环的两种可能性:0次重复,以及多于0次的重复[Ntafos1988]。对于DO-WHILE循环,就是一次循环与多于一次循环。

        路径覆盖的优点是需要非常彻底的测试。但它具有两个非常严重的缺点。第一个,路径的个数为分支数目的指数倍。比如,如果一个有10个IF语句的函数,它就有1024条路径去测试。

        当加了一条IF语句时,它的路径数就翻倍到了2048。第二个缺点就是,由于数据间的关系,它有很多的路径是不可能被测试的。比如下面的C/C++代码例子:


if (success)
statement1;
statement2;
if (success)
statement3;

        从路径测试的角度来看这段代码,它就有四条路径。但事实上,它只有两个是可行的:SUCCESS等于假和SUCCESS等于真。

        研究学者已经研究出多种路径覆盖来对付数目具大的路径。比如说,N长度子路径覆盖报告了你是否测试过了长度为N分支的每一个路径。其它的衍变各类包括了线性代码序列及跳转[***]LCSAJ覆盖, 数据流覆盖。

其它度量

        下面描述的是一些基本度量的变种和一些用得比较少的度量。

功能覆盖

        这个度量报告了你是否调用了每一个函数或者过程。它在初步测试中可以至少保证软件的所有功能都得到一些覆盖。主要简单的测试可以快速的找出一些不足之处。BullseyeCoverage量度的是功能覆盖。

调用覆盖

        这种度量报告的是你是否执行了每个函数的调用。这里的假设是Bugs通常发生在模块之间的接口处,它又叫做调用对覆盖[***]。

LCSAJ覆盖

        这种是路径覆盖的一种变种,它考虑的是那些容易在程序代码里表现出来及不需要流图的子路径[Woodward1980]。一个LCSAJ是指一序列的源代码按顺序执行。
        这里说的“linear”序列可以包含判定,只要在运行时控制流真的是从这一条语句到那一条语句断续执行。子路径是由这些连接着的LCSAJ们所构建的。研究学者
        通常把这种长度N的LCSAJ的路径覆盖比率叫做测试效力比率(TER)N+2。

        这种度量的好处就是它比判定覆盖更加彻底,但避免了路径覆盖的测试用例的指数级数量问题。不好的方面就是它也不能够避免那些不可行的路径。

53/5<12345>
100家互联网大公司java笔试题汇总,填问卷领取~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号