开启掘金成长之旅!这是我参与「掘金日新计划 · 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真)
路径覆盖
路径覆盖是覆盖率最高的覆盖方法,但是我们满足路径覆盖不一定能满足条件覆盖,所有不能满足条件组合覆盖。如果分支较多,那么工 作量极大。