注:转载文章如涉及版权,请通知。原创作品如转载,请注明出处并保持完整。

Test Theory——Coverage Analyze 1: Line Coverage

上一篇 / 下一篇  2009-05-21 14:17:16 / 个人分类:Testing

这里提到的各种覆盖率分析全部指白盒测试的覆盖率。
其实,现在对于覆盖率的意义,覆盖率的标准都没有一个一致的说法。
这里暂且不讨论这方面的问题,而只涉及覆盖率的理论。
当然,如果大家对覆盖率有什么独特的看法可以提出来。

Line Coverage:即行覆盖率,也叫语句覆盖率(Statement Coverage)。广义一点的说法还可以叫段覆盖(SegmentCoverage),基本块覆盖(BasicBlockCoverage)。但在我这个系列里我将他们分开来说明。

Line Coverage是最常见的一种覆盖率,但也是最弱的一种覆盖率。它只是度量被测代码的可执行语句。因此它的优点在于往往只是针对目标代码而不会去考虑如何处理源代码。性能剖析通常执行这种覆盖率。同样,缺点也在于它对代码控制结构的不敏感。而这正好大大减弱了它的功效。比如它不会去管条件判断中是否产生了判断错误,而这可能会误导你认为代码达到了所需的标准。
Example:
int* p = NULL;
if (condition == TURE) // Ifconditionever evaluates false,this code fails.
{
p = &var;
}
*p = 10;
另外需要注意一点,Line Coverage会将注释,空行等不执行的因素忽略,而将{}计入在内。

再例如,假设一个if-else语句,if从句中只有1条语句,而else从句中有99条语句,如果单纯考虑这个if-else语句,Line Coverage可能给出两个极端的值:1%或者99%。显然,这是很不可靠的。


由于Line Coverage有比较大的缺陷,因此,对于一个严格的覆盖率分析,仅仅考虑Line Coverage是不够的。



TAG: dd 白盒 测试 覆盖率

 

评分:0

我来说两句

charlie.chow

charlie.chow

积极,乐观,淡定

日历

« 2024-04-16  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 8944
  • 日志数: 36
  • 建立时间: 2009-05-17
  • 更新时间: 2009-06-19

RSS订阅

Open Toolbar