软件测试覆盖率--白盒覆盖

117 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天,点击查看活动详情

软件测试覆盖率简介

1、定义:覆盖率是用来度量测试完整性的一个手段,同时也是测试技术有效性的一个度量。

2、计算:覆盖率=(至少被执行一次的item数)/item的总数。

3、特点:

通过覆盖率数据,可以检测我们的测试是否充分;

分析出测试的弱点在哪方面;

指导我们设计能够增加覆盖率的测试用例,有效提高测试质量,但是测试用例设计不能一味追 求覆盖率,因为测试成本随覆盖率的增加而增加。

覆盖率按照测试方法大体上可以划分为三大类,即白盒覆盖灰盒覆盖和黑盒覆盖。

今天我们讲一下白盒覆盖:

语句覆盖(Statement Coverage)

指在测试时运行被测程序后,程序中被执行到的可执行语句的的比率:

语句覆盖率=(至少被执行一次的语句数量)/(可执行的语句总数) 例:

case1:

(2,0,3)语句覆盖率=?

case2:(2,1,3)语句覆盖率=?

分析:案例中可执行的语句总数有2条:X=X/A和X=X+1

case1走ace路线,2条语句都被执行了,所以语句覆盖率为2/2,即1100%;

case1走abe路线,只执行了1条语句,所以语句覆盖率为1/2即50%;

判定覆盖/分支覆盖率

如果达到100%判定覆盖,则等价于分支覆盖 但这里计数的不是分支,而是判定的输出,判定覆盖在小于100%时,判定的覆盖率与分支的 覆盖率可能有所不同! 覆盖率: 判定覆盖=已执行的判定结果/所有的判定结果总数*100%

条件覆盖

条件覆盖是指设计足够多的测试用例,运行被测程序,使得每一判定语句中每个逻辑条件的可能取值至少满足一次。

条件覆盖率=被评价到的条件取值的数量/条件取值的总数*100%

条件组合覆盖

条件组合覆盖法:条件组合覆盖是指设计若干个测试用例a,运行被测程序,使得每个判定中条件的各种可能组合都至少执行一次。

假如:if(x>0&y>0)中的条件x,y都能取(真假)值,组合起来就是4种

(x真y真)

(x假y假)

(x真y假)

(x假y真)

路径覆盖

路径覆盖是覆盖率最高的覆盖方法,但是我们满足路径覆盖不一定能满足条件覆盖,所有不能满足条件组合覆盖。如果分支较多,那么工 作量极大。