aopstudio 的个人博客

记录精彩的程序人生

AOP=art of programming=编程的艺术=程艺
  menu
35 文章
0 浏览
1 当前访客
ღゝ◡╹)ノ❤️

搞懂逻辑覆盖

逻辑覆盖

逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖

分为以下几种

  • 语句覆盖 Statement coverage
  • 判定覆盖 Decision coverage
  • 条件覆盖 Condition coverage
  • 条件/判定覆盖 Condition/decision coverage
  • 条件组合覆盖 Condition combination coverage
  • 路径覆盖 Path coverage

例子

image.png

Path:

  • L1(a → c → e)
  • L2(a → b → d)
  • L3(a → b → e)
  • L4(a → c → d)

语句覆盖 Statement coverage

语句覆盖的要求是使所有可执行语句至少执行一次

以上图为例,所有的可执行语句都在L1上,只要选取一个用例A=2,B=0,x=3即可满足语句覆盖

判定覆盖 Decision coverage

使每个判定获得一种可能的结果至少一次。

选取用例

  1. A=2,B=0,x=3 覆盖了L1
  2. A=1,B=1,x=1 覆盖了L2

使每个判定的结果都获得了一次

条件覆盖 Condition coverage

使每个条件都要完成一次

  • 对于第一个判定
  • 条件A>1 True为T1,False为!T1
  • 条件B=0 True为T2,False为!T2
  • 对于第二个判定
  • 条件A=2 True为T3,False为!T3
  • 条件X>1 True为T4,False为!T4

可以选出以下用例

Test casePathCondition valueCoverage branch
(2,0,3)ace(L1)T1 T2 T3 T4c,e
(1,1,1)abd(L2)!T1 !T2 !T3 !T4b,d

或者以下这种

Test casePathCondition valueCoverage branch
(1,0,3)ace(L1)!T1 T2 !T3 T4b,e
(2,1,1)abd(L2)T1 !T2 T3 !T4b,e

条件判定覆盖 Condition/decision coverage

设计测试用例,使得每个判定的结果都获得一次,同时每个条件也要完成一次

可以选出以下用例

Test casePathCondition valueCoverage branch
(2,0,3)ace(L1)T1 T2 T3 T4c,e
(1,1,1)abd(L2)!T1 !T2 !T3 !T4b,d

条件组合覆盖 Condition combination coverage

设计测试用例,使得每个判定中的所有条件组合都至少实现一次

如果测试用例实现了条件组合覆盖,那么它一定也实现了条件覆盖、判定覆盖和条件判定覆盖

本例子中每个判定的条件组合如下

  • 第一个判定

① A>1, B=0 as T1T2

② A>1, B≠0 as T1!T2

③ A<=1, B=0 as !T1T2

④ A<=1, B≠0 as !T1!T2

  • 第二个判定

⑤ A=2, X>1 as T3T4

⑥ A=2, X>=1 as T3!T4

⑦ A≠2, X>1 as !T3T4

⑧ A≠2, X>=1 as !T3!T4

可以选出以下测试用例

Test casePathCondition valueCoverage condition no.
(2,0,3)ace(L1)T1 T2 T3 T4①⑤
(2,1,1)abe(L3)T1 !T2 T3 !T4②⑥
(1,0,3)abe(L3)!T1 T2 !T3 T4③⑦
(1,1,1)abd(L2)!T1 !T2 !T3 !T4④⑧

尽管这四个测试用例覆盖了所有的条件组合和4条分支,但是只有3条路径被覆盖了,路径“acd”没有被经过

路径覆盖

设计测试用例覆盖所有可能的路径

以上的例子可以选出如下测试用例

Test casePathCondition value
(2,0,3)ace(L1)T1 T2 T3 T4
(1,0,1)abd(L2)!T1 !T2 !T3 !T4
(2,1,1)abe(L3)T1 !T2 T3 !T4
(3,0,3)acd(L4)T1 T2 !T3 !T4

标题:搞懂逻辑覆盖
作者:aopstudio
地址:https://neusoftware.top/articles/2022/02/19/1547441696762.html