数据流测试

一、基本概念

定义节点  --   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

  • 28
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值