头图

文章目录

  1. 概述
  2. 粗粒度的覆盖
  3. 细粒度的覆盖

1.概述

单元测试覆盖率是指业务代码被单测测试的比例和程度,它是衡量单元测试好坏的一个重要的指标。各类覆盖率指标从粗到细、从弱到强排列如下。

2.粗粒度的覆盖

  • 类覆盖
    指类中只要有方法或变量被测试用例调用或执行到,那么就说这个类被测试覆盖了。
  • 方法覆盖
    只要在测试用例执行过程中,某个方法被调用看了,则无论执行了该方法中的多少行代码,都可以认为该方法被覆盖了。

注意:类覆盖率和方法覆盖率达到100%。并不能说明测试用例写得很好了,因为这个标准远远不够。

3.细粒度的覆盖

  1. 行覆盖(Line Coverage)
    也称为语句覆盖,用来度量可执行的语句是否被执行到。
    行覆盖率 = 执行到的语句行数/总的可执行语句行数
    行覆盖率强度并不高(例子见码出高效P272)
  2. 分支覆盖(Branch Converage)
    也称为判定覆盖,用来度量程序中每一个判定分支是否都被执行到。
    分支覆盖率 = 代码中被执行到的分支数/代码中所有分支总数
  3. 条件判定覆盖(Condition Decision Coverage)
    其要求设计足够的测试用例,能够让判定中每个条件的所有可能情况至少被执行一次,同时每个判断本身的所有可能结果也至少被执行一次。
    例如:(a==1 && b==2 || c==3)这个判断包含了3种条件,即a==1、b==2和c==3.(例子见码出高效P272)

注意: 分支覆盖只要求覆盖分支所有可能的结果,可以看出它是条件判定覆盖的一个子集。

  1. 条件组合覆盖(Multiple Condition Converage)
    指判定中所有条件的各种组合情况都出现至少一次。
  2. 路径覆盖(Path Converage)
    路径覆盖要求能够测试到程序种所有可能的路径。(例子见码出高效P274)

小骄傲
1 声望0 粉丝