《软件测试52讲》读书笔记(六) —— 测试覆盖率

测试覆盖率通常是被用来衡量测试的充分性和完整性,主要分为两大类:需求覆盖率代码覆盖率

需求覆盖率

通常采用需求管理工具(TestLink、tapd、ALM)来建立需求和测试关系,并以此来统计测试覆盖率

需求覆盖率的统计方法属于传统瀑布模式下的软件工程,追求的是自上而下地制定计划、分析需求、设计软件、编写代码、测试等,但对于敏捷开发的项目难以适应,因此通常都是直接将软件需求转换为测试点,在基于测试需求设计测试点

现在口中的测试覆盖率默认指代码覆盖率

代码覆盖率

代码覆盖率指描述程序中源代码被测试的比例和程度,所得比例;简单来说,至少被执行一次的条目数占整个条目数的百分比(如果条目数是语句,对应的就是代码行的覆盖率……)

代码覆盖深度:从程序覆盖的详尽程度分析,包含以下覆盖标准:语句覆盖率判断覆盖率条件覆盖率条件判断组合覆盖率多条件覆盖率路径覆盖率

最常用的三种指标:

  • 语句覆盖率:又称为行覆盖率,指已经被执行到的语句占总可执行语句的百分比,通常会和判断覆盖率或条件覆盖率一起使用
  • 判断覆盖率:又称分支覆盖率,用以度量程序中每一个判定的分支是否都被测试到了,即代码中每个判断的取真分支和取假分支是否各被覆盖至少各一次
  • 条件覆盖率:判定中的每个条件的可能取值至少满足一次,度量判定中的每个条件的结果TRUE和FALSE是否都被测试到

注意:统计代码覆盖率仅仅是手段,必须透过现象看到事物的本质,才能从根本上保证软件整体的质量

统计代码的根本目的是找出潜在的遗漏测试用例,并有针对性的补充,同时还能识别因需求变更等原因废弃的代码

代码覆盖率同时存在一定的局限性,高的代码覆盖率不一定能保证软件的质量,但是低的代码覆盖率一定不能保证软件的质量

代码覆盖率工具

JaCoCo是一款Java代码主流开源覆盖率工具,可以方便地嵌入到Ant、Maven中,且和很多主流的持续集成工具以及代码静态检查工具

1. 代码覆盖率统计报告:包含每个Java代码文件的行覆盖率以及分值覆盖率统计,并给出每个Java代码文件的行数、方法数、类数等信息

 

 2. 代码覆盖率统计报告实例:绿色表示已经被覆盖;红色表示尚未被覆盖;黄色表示部分覆盖;绿色菱形块表示该分支已被完全覆盖;黄色菱形块表示该分支仅部分覆盖

 

 代码覆盖率工具运行原理(了解)

实现代码覆盖率的统计,最基本的方法就是注入(instrumentation)——  在被测代码中自动插入用于覆盖率统计的探针(Probe)代码,并保证插入的探针代码不会给源代码带来任何影响

 

 根据注入目标分为两类:源代码(Source Code)注入字节码(Byte Code)注入,目前主流的工具基本都是使用字节码注入,注入的具体实现采用ASM(Java字节码操纵框架)技术

字节码注入又可以分为两大模式:On-The-Fly注入模式和Offline注入模式

Python可以使用Coverage代码覆盖工具

 

posted @ 2021-09-16 17:20  麥女孩的小火柴  阅读(188)  评论(0)    收藏  举报