白盒测试【保姆教学】

目录

1.白盒测试

1.1逻辑覆盖法

1.1.1语句覆盖法

1.1.2判定覆盖法

1.1.3条件覆盖

1.1.4判定/条件覆盖

1.1.5组合覆盖法

1.1.6路径覆盖

1.2基本路径分析法

1.2.1步骤

1.白盒测试

通过分析程序的内部逻辑来设计测试用例。

分类:逻辑覆盖法、基本路径分析法、

1.1逻辑覆盖法

包含:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖。

1.1.1语句覆盖法

设计足够多的测试用例,使程序中的每条语句至少被执行一次。

案例:

Int fun(int x,int y)

{

If((x>=80)&&(y>=80))

Else if ((x+y>=140)&&(x>=80||y>=80))

{x=x+10;}

Else {x=x-10;}

Return x;

}

1)先把代码转换成流程图

2)再设计用例

序号

输入数据

预期输出

覆盖语句

路径

1

X=50,Y=50

X=40

X=X-10

OBDE

2

X=90,Y=70

X=100

X=X+10

OBCE

优点:直观的从源代码得到测试用例,无需细分每条判定表达式。

缺点:仅仅针对程序逻辑中显式存在的语句,对隐式逻辑分支无法测试。

1.1.2判定覆盖法

设计足够多的测试用例,每个判定至少有一次为真,有一次为假。

案例同语句覆盖

1)流程图同语句覆盖

2)用例设计

Y1表示第一个判定式为真,N1表示第一个判定式为假。

序号

输入数据

预期输出

覆盖判定

路径

1

X=90,Y=90

X=90

Y1

OAE

2

X=50,Y=50

X=40

N1N2

OBDE

3

X=90,Y=70

X=100

N1Y2

OBCE

优点:测试的路径近乎是语句覆盖的一倍,拥有比语句覆盖更强的测试能力。

缺点:判定条件由多个逻辑条件组合而成,会导致遗漏。

1.1.3条件覆盖

设计足够多的测试用例,使判定中的每个条件获得各种可能的结果。即每个条件至少一次为真值,有一次为假值。

案例语句覆盖

1)流程图语句覆盖

2)用例设计

T1表示第一个条件表达式取值为真,T2表示第一个条件表达式为假。

序号

输入数据

预期输出

条件取值

路径

1

X=90,Y=70

X=100

T1F2T3T4

OAE

2

X=40,Y=90

X=30

F1T2F3F4

OBDE

优点:增加了对符合判定情况的测试,增加了测试路径。

缺点:要达到条件覆盖需要足够多的测试用例,但条件覆盖不能保证判定覆盖。

1.1.4判定/条件覆盖

设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能的结果也出现一次。

案例同语句覆盖

1)流程图同语句覆盖

2)用例设计

序号

输入数据

预期输出

判定取值

条件取值

路径

1

X=90,Y=90

X=90

Y1

T1T2

OAE

2

X=50,Y=50

X=40

N1N2

F1F2F3F4

OBDE

3

X=90,Y=70

X=100

N1Y2

T1F2T3T4

OBCE

优点:判定/条件覆盖弥补了单一的不足。

缺点:未考虑条件的组合情况,

1.1.5组合覆盖法

设计足够多的测试用例,使每个判定表中条件结果的所有可能组合至少出现一次。

案例同语句覆盖

1)流程图同语句覆盖

2)用例设计

序号

输入数据

预期输出

条件取值

路径

1

X=90,Y=90

X=90

T1T2T3T4

OAE

2

X=85,Y=85

X=85

T1T2T3F4

OAE

3

X=?,Y=?

?

T1T2F3T4

OAE

4

X=?,Y=?

?

T1T2F3F4

OAE

5

X=90,Y=70

X=100

T1F2T3T4

OBCE

6

X=80,Y=70

X=70

T1F2T3F4

OBDE

7

X=90,Y=30

X=80

T1F2F3T4

OBDE

8

X=85,Y=20

X=75

T1F2F3F4

OBDE

9

X=70,Y=90

X=80

F1T2T3T4

OBCE

10

X=60,Y=85

X=50

F1T2T3F4

OBDE

11

X=30,Y=90

X=20

F1T2F3T4

OBDE

12

X=20,Y=85

X=10

F1T2F3F4

OBDE

13

X=?,Y=?

?

F1F2T3T4

OBCE

14

X=70,Y=70

X=60

F1F2T3F4

OBDE

15

X=?,Y=?

?

F1F2F3T4

OBDE

16

X=50,Y=50

X=40

F1F2F3F4

OBDE

优点:满足了判定覆盖,条件覆盖,判定/条件覆盖的准则。

缺点:线性增加了测试用例的数量。

1.1.6路径覆盖

设计足够多的测试用例,覆盖程序中所有可能的路径。

案例同语句覆盖

1)流程图同语句覆盖

2)用例设计

序号

输入数据

预期输出

路径

1

X=90,Y=90

X=90

OAE

2

X=50,Y=50

X=40

OBDE

3

X=90,Y=70

X=100

OBCE

优点:比语句覆盖法、判定覆盖法、条件覆盖法、判定/条件覆盖法、组合覆盖法都要覆盖的广。

缺点:对所有路径进行测试(循环、条件、分支选择等),工作量指数级增长。

1.2基本路径分析法

基本路径法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。

1.2.1步骤

  1. 程序的控制流图(简化的流程图)
  2. 程序圈复杂度
  3. 导出测试用例
  4. 准备测试用例

程序基本控制流图如下:

圆圈:控制流图的一个节点,表示一个或多个无分支的语句;

箭头:称为边或连接,代表控制流

区域:由边和节点封闭起来的范围,不要忘记区域外的部分。

案例:

1  void sort(int iRecordNum ,int iType)

2  {

3  int x=0;

4  int y=0;

5  while(iRecordNum>0)

6  {

7  if(0==iType)

8  {x=y+2;break;}

9  else

10 if(1==iType)

11 x=y+10;

12 else

13 x=y+20

14 iRecordNum--;

15 }

16 }

1)画图:流程图原始→流程图简化→控制流程图

圈复杂度V(G)=E-N+2或者V(G)=P+1

E:边数、N:节点、P:判定点

2)计算:所以:本题的圈复杂度是:V(G)=10-8+2=4或者V(G)=3+1=4

3)导出测试用例 V(G)的值表示该程序的独立路径。

路径1:5-16

路径2:5-7-8-16

路径3:5-7-10-11-14-16

路径4:5-7-10-13-14-5-16

4)准备测试用例(输出x)

用例设计

路径1:

5-16

输入数据:

iRecordNum=0,或<0的某一个值

预期结果:

X=0

路径2:

5-7-8-16

输入数据:

iRecordNum=1,iiType=0

预期结果:

X=2

路径3:

5-7-10-11-14-16

输入数据:

iRecordNum=1,iiType=1

预期结果:

X=10

路径4:

5-7-10-13-14-5-16

输入数据:

iRecordNum=1,iiType=2

预期结果:

X=20

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值