一、基本概念
定义节点 -- DEF(v,n)
使用节点 -- USE(v,n)
谓词使用 -- P-use
计算使用 -- C-use
定义-使用路径 -- du-path
定义-清除路径 -- dc-path
全定义覆盖准则:测试路径需要覆盖所有定义点和任意一个使用点,用dc-path扩展成测试路径
全使用覆盖准则:测试路径需要覆盖所有定义点和所有使用点,用dc-path扩展成测试路径
全定义-使用路径覆盖准则:测试路径需要覆盖所有定义点到所有使用点的路径,用dc-path扩展成测试路径
二、例题
void f(int x,int y,int m){
w=x;
if(m>0)
w++;
else
w=w+2;
if(y<=10)
x=5*y;
else
x=3*y+5;
z=w+x;
}
步骤一:
变量 | 定义节点 | 使用节点 | 定义-使用对(DU Pairs) (开始,结束节点) | 定义-使用路径(是否为定义-清除路径) | |
计算使用 | 谓词使用 | ||||
x | 1,8,10 | 2,11 |
| (1,2),(1,11),(8,11),(10,11) | 1→2(T) 1→2→3→4→7→8→11(F) 1→2→3→6→7→8→11(F) 1→2→3→4→7→10→11(F) 1→2→3→6→7→10→11(F) 8→11(T) 10→11(T) |
y | 1 | 8,10 | 7 | (1,7),(1,8),(1,10) | 1→2→3→4→7(T) 1→2→3→6→7(T) 1→2→3→4→7→8(T) 1→2→3→6→7→8(T) 1→2→3→4→7→10(T) 1→2→3→6→7→10(T) |
m | 1 |
| 3 | (1,3) | 1→2→3(T) |
w | 2,4,6 | 4,6,11 |
| (2,4),(2,6),(2,11),(4,4),(4,11),(6,6),(6,11) | 2→3→4(T) 2→3→6(T) 2→3→4→7→8→11(F) 2→3→6→7→8→11(F) 2→3→4→7→10→11(F) 2→3→6→7→10→11(F) 4→7→8→11(T) 4→7→10→11(T) 6→7→10→11(T) 6→7→8→11(T) |
z | 11 |
|
|
|
du-path和dc-path 都是对于变量来讲的,比如y 的du-path是某某,y 的dc-path是某某。
面对程序我们把每一个变量当作一个片 来考虑,但是对于整个程序我们综合所有变量的dc-path来给出测试路径和测试用例
步骤二:
全定义覆盖准则:
测试路径1:1→2→3→4→7→8→11
测试路径2:1→2→3→6→7→10→11
| 输入数据 | 预期输出 |
测试用例1 | x=0 y=0 m=1 | x=0 y=0 m=1 w=1 z=1 |
测试用例2 | x=0 y=11 m=0 | x=38 y=11 m=0 w=2 z=40 |
全使用覆盖准则:
测试路径1:1→2→3→4→7→8→11
测试路径2:1→2→3→6→7→10→11
| 输入数据 | 预期输出 |
测试用例1 | x=0 y=0 m=1 | x=0 y=0 m=1 w=1 z=1 |
测试用例2 | x=0 y=11 m=0 | x=38 y=11 m=0 w=2 z=40 |
全定义-使用路径覆盖准则:
测试路径1:1→2→3→4→7→8→11
测试路径2:1→2→3→6→7→10→11
测试路径3:1→2→3→6→7→8→11
测试路径4:1→2→3→4→7→10→11
| 输入数据 | 预期输出 |
测试用例1 | x=0 y=0 m=1 | x=0 y=0 m=1 w=1 z=1 |
测试用例2 | x=0 y=11 m=0 | x=38 y=11 m=0 w=2 z=40 |
测试用例3 | x=0 y=0 m=0 | x=0 y=0 m=0 w=2 z=2 |
测试用例4 | x=0 y=11 m=1 | x=38 y=11 m=1 w=1 z=39 |