测试覆盖率

* 本页面主要介绍Go语言测试测试覆盖率的相关内容。

和上一节一样,本节内容为可选内容,简单了解即可,也可以直接跳过。

测试覆盖率(Test Coverage)是衡量软件测试完整性的一个重要指标。掌握测试覆盖率数据,有利于客观认识软件质量,正确了解测试状态,有效改进测试工作。从广义的角度来讲,主要分为两大类:

  • 面向项目的需求覆盖率:指测试对需求的覆盖程度,通常的做法是将每一条分解后的软件需求和对应的测试建立一对多的映射关系,最终目标是保证测试可以覆盖每个需求,以保证软件产品的质量
  • 更偏向技术的代码覆盖率:是指至少被执行了一次的条目数占整个条目数的百分比
需求覆盖率

在实际的开发场景中,需求覆盖率统计方法属于传统瀑布模型下的软件工程实践,在流程上是重量级的,已经很难适应当今互联网时代下的敏捷开发实践。所以,互联网测试项目中很少直接基于需求来衡量测试覆盖率,而是将软件需求转换成测试需求(测试用例),然后基于测试需求再来设计测试点。

代码覆盖率

代码覆盖率,是大家经常讲的测试覆盖率。代码覆盖率根据“条目数”的不同类型(一般有语句、函数、路径等),又可以细分为:

  • 行覆盖率(“条目数”是语句):又称为语句覆盖率,指已经被执行到的语句占总可执行语句(不包含类似 C++ 的头文件声明、代码注释、空行等等)的百分比。
  • 判定覆盖:又称分支覆盖,用以度量程序中每一个判定的分支是否都被测试到了,即代码中每个判断的取真分支和取假分支是否各被覆盖至少各一次。比如,对于 if(a>0 && b>0),就要求覆盖“a>0 && b>0”为 TURE 和 FALSE 各一次
  • 条件覆盖:指判定中的每个条件的可能取值至少满足一次,度量判定中的每个条件的结果 TRUE 和 FALSE 是否都被测试到了。比如,对于 if(a>0 && b>0),就要求“a>0”取 TRUE 和 FALSE 各一次,同时要求“b>0”取 TRUE 和 FALSE 各一次
关于使用和评估

总结来讲,高的代码覆盖率不一定能保证软件的质量,但是低的代码覆盖率一定不能能保证软件的质量。统计代码覆盖率的根本目的是找出潜在的遗漏测试用例,并有针对性的进行补充,同时还可以识别出代码中那些由于需求变更等原因造成的不可达的废弃代码。

好了,黑盒白盒测试就总结到这里,你学废了吗?


* 本页内容参考以下数据源:

  • 《Go程序设计语言》
  • https://www.jianshu.com/p/775442df2301
  • https://zhuanlan.zhihu.com/p/73521606

凯冰科技 · 代码改变世界,技术改变生活
Next Page→