1、语句覆盖法 C0
程序中的每个可执行语句至少被执行一次。
度量(覆盖率):
- 被执行的语句数/所有可能的语句数。
- 被执行的路径数/所有可能的路径数。
用例 a=2,b=1,c=6
用例对语句的覆盖率:100%
用例对路径的覆盖率:25%
语句覆盖能发现语句错误
语句覆盖不能发现逻辑错误/条件错误
2、分支/判定覆盖 C1
程序中的每个判定的取真分支和取假分支至少执行一次。
用例 a=2,b=1,c=6 a=-1,b=1,c=1
用例对语句的覆盖率:100%
用例对路径的覆盖率:50%
分支/判定覆盖能发现逻辑错误
分支/判定覆盖不能发现组合判断中的条件错误
3、条件覆盖 C2
程序每个判定中每个条件的可能取值至少满足一次。
未必比 C1 更全面。
不能发现逻辑错误。
4、判定-条件覆盖 C1+C2
每个条件中的所有可能取值至少执行一次,同时,每个判定的可能结果至少执 行一次。
可能会导致某些条件掩盖了另一些条件。
5、条件组合覆盖/多条件覆盖 C3
每个判定中的所有的条件取值组合至少执行一次。
比 C2 全面。
6、路径覆盖 C4
用例覆盖程序中的所有可能的执行路径。
不切实际
- 因为涉及到相当长和几乎无穷尽的路径数。
- 任何可能的循环在程序段中都被视为是可能的路径。
案例:
练习:
答案:
语句覆盖
要求:A<5 & B=5 & A=2 | X>2
用例:A=2,B=5,X=3
判定覆盖
要求:
A<5 & B=5 对一次,错一次
A=2 | X>2 对一次,错一次
用例:
A=2,B=5,X=3
A=6,B=6,X=1
条件覆盖
要求:
A<5 对错各一次
B=5 对错各一次
A=2 对错各一次
X>2 对错各一次
用例:
A=2,B=5,X=3
A=6,B=6,X=1
判定-条件覆盖
要求:
A<5 对错各一次
B=5 对错各一次
A<5 & B=5 对一次,错一次
A=2 对错各一次
X>2 对错各一次
A=2 | X>2 对一次,错一次
用例:
A=2,B=5,X=3
A=6,B=6,X=1
多条件覆盖
要求:
A<5对,B=5对
A<5对,B=5错
A<5错,B=5对
A<5错,B=5错
A=2对,X>2对
A=2对,X>2错
A=2错,X>2对
A=2错,X>2错
用例:
A=2,B=5,X=3
A=6,B=6,X=1
A=2,B=6,X=1
A=6,B=5,X=3
路径覆盖
要求:
A<5 & B=5 对,A=2 | X>2 对
A<5 & B=5 对,A=2 | X>2 错
A<5 & B=5 错,A=2 | X>2 对
A<5 & B=5 错,A=2 | X>2 错
用例:
A=2,B=5,X=3
A=6,B=6,X=1
A=2,B=6,X=1
A=4,B=5,X=1
最终的用例:
A=2,B=5,X=3
A=6,B=6,X=1
A=2,B=6,X=1
A=4,B=5,X=1
A=6,B=5,X=3