逻辑覆盖测试之3-1 条件与判定

((x>5)&&(y>0))

  • 判定覆盖准则(DC):判定的 true 和 false至少各执行一次.

// {(6, 1), (1,1)}--DC
int foo(int x, int y) {
int z = y*2; \\ z=y;
if ((x>5) && (y>0)) {
z = x; }
return x*z;
}

  • 条件覆盖(CC): 每个条件的true和false至少各被执行一次

(x>5) :true and false
(y>0) :true and false

// {(6, 0), (0,1)}--CC
int foo(int x, int y) {
int z = y;
if ((x>5) && (y>0)) {
z = x; }
return x*z;
}

-----Subsume 关系

C1 蕴含 C2 (或 C2 被C1蕴含), 记为
A ≥ B:对于任意P: C1(P) ⊆C2(P).
DC ≥ SC
CC not ≥ SC
DC not ≥ CC, CC not ≥ DC

  • 条件判定覆盖(C/DC):同时满足DC和 CC. 

C/DC(P)=CC(P) ∩ DC(P) 

C/DC ≥ CC 

C/DC ≥ DC

//
int foo(int x, int y) {
int z = y;
if ((x>5) && (y>0)) {
z = x; }
return x*z;
}

  • 修订条件判定覆盖(MC/DC):  每个条件独立影响判定true和false各一次

MC/DC
((x>5) && (y>0))

T T T
T F F
F T F
F F F

MC/DC
Modified Condition/Decision Coverage
(MC/DC) 是C/DC得到一个增强版本.
MC/DC 是DO-178B 标准的一个重要准则
(Federal Aviation Administration)
MC/DC作为控制软件最为严格(Level A )
的逻辑测试覆盖准则

 

posted @ 2018-10-28 22:36  恋恋青柠  阅读(567)  评论(0编辑  收藏  举报