测试覆盖率

1.测试覆盖率

用来衡量测试的充分性和完整性,从广义的角度来讲,测试覆盖率主要分为两大类:

(1)需求覆盖率

(2)代码覆盖率

需求覆盖率:

定义:指测试对需求的覆盖程度,通常做法是将一条分解后的软件需求和对应的测试用例建立一对多的映射关系,最终目标是保证测试可以覆盖每个需求。

现状:需求覆盖率统计方法属于传统瀑布模型下的软件工程实践,已经很难适应当下的敏捷开发实践了。

应对:所以现在很少直接基于需求来衡量测试覆盖率,而是将需求转换成测试需求,然后基于测试需求再来设计测试点。

 

代码覆盖率:

定义:至少被执行了一次的条目数占整个条目数的百分比。

语句覆盖:已经【被执行到的语句】占【总可执行语句】的百分比,要求最低的覆盖率指标。

判定覆盖:又称【分支覆盖】,度量程序中每一个判定的分支是否都被测试到,即每个判断的【取真分支】和【取假分支】都要覆盖一次;

     比如:if(a>0 && b > 0),要求覆盖 "a>0 && b>0" 为 True 和 False 各一次。

条件覆盖:判断中判断条件的结果 True 和 False 是否都被测试到了

     比如:if(a>0 && b>0),就要求 "a>0" 取 True 和 False 各一次,同时要求 "b>0" 取 True 和 False 各一次。

 

代码覆盖率的价值:

  统计代码覆盖率的根本目的:找出潜在的遗漏测试用例,并有针对性的进行补充,同时还可以识别出代码中哪些由于需求变更等原因造成的不可达的废弃代码。

  通常我们希望代码覆盖率越高越好,说明测试用例设计时充分且完备。实际情况是随着代码覆盖率提高,测试成本也会迅速增加,所以企业中一般只有单元测试阶段对代码覆盖率有较高的要求。

 

代码覆盖率的局限性:

  即使设计的测试用例已达到 100% 的代码覆盖率,软件产品的质量也是做不到万无一失的。

  根本原因:代码覆盖率的计算是基于现有代码的,并不能发现那些 【未考虑某些输入】以及 【未处理某些情况】形成的缺陷。显然,代码覆盖率反映的仅仅是已有代码的哪些逻辑被执行过,哪些逻辑未被执行;依此依据去补充用例,测试那些还未被覆盖到的执行路径。

参考:https://www.cnblogs.com/poloyy/p/12191627.html

  

posted @ 2024-06-27 15:44  努力的小测试  阅读(37)  评论(0编辑  收藏  举报