白盒测试--基本路径测试法详细说明和举例

有一个函数如下:

 1      public static  void SortNum(int numA, int numB)

 2         {

 3             int x = 0;

 4             int y = 0;

 5             while (numA--> 0)

 6             {

 7                 if (numB == 0)

 8                     x = y +2;

 9                 else

10                     if (numB == 1)

11                         x = y + 10;

12                     else

13                         x = y +20;

14             }

15         }

下面先画出程序控制流图

白盒测试--基本路径测试法详细说明和举例

 

根据以上的控制流图,可以计算出以下路径:

路径1:5-7-8-14-5-15

路径2:5-10-11-14-5-15

路径3:5-13-14-5-15

路径4:5-15

 

导出测试用例:

下面使用语句覆盖测试

  通过路径 输入数据 预期结果 测试结果
case1 5-7-8-14-5-15 numA=2,numB=0 X=2 X=2
case2 5-10-11-14-5-15 numA=2,numB=1 X=10 X=10
case3 5-13-14-5-15 numA=2,numB=3 X=20 X=20
case4 5-15 numA=0,numB=1 X=0 X=0

 

 

 

 

 

 

 

二、下面来做一道面试题目

使用基本路径测试方法,为以下程序段设计测试用例。

1    public  static void DoSomething(int X, int A, int B) 2  { 3          if ((A > 1) && (B == 0)) 4              X = X / A; 5          if ((A == 1) && (X > 1)) 6              X = X + 1; 7      }

(1)   画出程序的控制流图

(2)   导出基本路径集,确定程序的独立路径,并设计测试用例,写出的输入数据和预期输出

(1)答:

白盒测试--基本路径测试法详细说明和举例

 

(2)答:使用白盒测试的路径测试方法:
A.语句覆盖进行测试用例的设计:
  通过路径 输入数据 预期结果 测试结果
case1 3-4-5 X=10, A=2, B=0 X=5 X=5
case2 5-6-7 X=10, A=1, B=0 X=11 X=11
 
 
 
 
 
 
 
B.判定覆盖进行测试用例的设计:特点:条件中只要有一个真一个假,就完成了判定覆盖;

比如需要设计:

  • case1的时候需要让条件1:if ((A > 1) && (B == 0))条件真的
  • case2的时候需要让条件2:if ((A == 1) && (X > 1))条件真的
  • case3的时候需要让条件1:if ((A > 1) && (B == 0))条件假的,并且需要让条件2:if ((A == 1) && (X > 1))条件假的
  通过路径 输入数据 预期结果 测试结果
case1 3-4-5 X=10, A=2, B=0 X=5 X=5
case2 5-6-7 X=10, A=1, B=0 X=11 X=11
case3 T-7 X=10, A=2, B=3 X=10 X=10

C.条件覆盖进行测试用例的设计:特点是必须考虑到IF分支里面的各个条件的真/假

比如需要设计:

  • case1的时候需要让条件1:if ((A > 1) && (B == 0))条件里面的值全真的
  • case2的时候需要让条件2:if ((A == 1) && (X > 1))条件里面的值全真的,并且需要让条件1:if ((A > 1) && (B == 0))条件里面的值全假的
  • case3的时候需要让条件1:if ((A > 1) && (B == 0))条件里面的值全假的,并且需要让条件2:if ((A == 1) && (X > 1))条件里面的值全假的
  通过路径 输入数据 预期结果 测试结果
case1 3-4-5 X=10, A=2, B=0 X=5 X=5
case2 5-6-7 X=10, A=1, B=2 X=11 X=11
case3 T-7 X=-1, A=-1, B=2 X=-1 X=-1

 

D.判定/条件覆盖进行测试用例的设计:特点是必须考虑到IF分支里面的各个条件的真/假,并且每个分支的真和假都要出现一次

比如需要设计:

  • case1的时候需要让条件1:if ((A > 1) && (B == 0))条件为真;需要让条件2:if ((A == 1) && (X > 1))条件为假
  • case2的时候需要让条件1:if ((A > 1) && (B == 0))条件为假;需要让条件2:if ((A == 1) && (X > 1))条件为假
  • case3的时候需要让条件2:if ((A == 1) && (X > 1))条件为真;需要让条件1:if ((A > 1) && (B == 0))条件为假
  • case4的时候需要让条件2:if ((A == 1) && (X > 1))条件为假;需要让条件1:if ((A > 1) && (B == 0))条件为假
  通过路径 输入数据 预期结果 测试结果
case1 3-4-5 X=10, A=2, B=0 X=5 X=5
case2 3-4-5 X=10, A=-2, B=2 X=10 X=10
case3 5-6-7 X=10, A=1, B=2 X=11 X=11
case4 5-6-7 X=10, A=-2, B=2 X=10 X=10

由表格可以看出case2和case4相同,所以合并为一个case

 

 

E.组合覆盖进行测试用例的设计:特点是必须考虑到IF分支里面的各个条件的各个值的真/假,并且每个分支的值的真和假都要出现一次

比如需要设计:

  • case1的时候需要让条件1:if ((A > 1) && (B == 0))条件为真;需要让条件2:if ((A == 1) && (X > 1))条件为假
  • case2的时候需要让条件1:(A > 1) 为真,(B == 0)为假;需要让条件2:if ((A == 1) && (X > 1))条件为假
  • case3的时候需要让条件1:(A > 1) 为假,(B == 0)为真;需要让条件2:if ((A == 1) && (X > 1))条件为假
  • case4的时候需要让条件2:if ((A == 1) && (X > 1))条件为真;需要让条件1:if ((A > 1) && (B == 0))条件为假
  • case5的时候需要让条件2:(A == 1)为真,(X > 1)条件为假;需要让条件1:if ((A > 1) && (B == 0))条件为假
  • case6的时候需要让条件2:(A == 1)为假,(X > 1)条件为真;需要让条件1:if ((A > 1) && (B == 0))条件为假
  • case7的时候需要让条件2:(A == 1)为假,(X > 1)条件为假并且让条件1:if ((A > 1) && (B == 0))条件为假
  通过路径 输入数据 预期结果 测试结果
case1 3-4-5 X=10, A=2, B=0 X=5 X=5
case2 3-4-5 X=10, A=2, B=2 X=10 X=10
case3 3-4-5 X=10, A=-1, B=0 X=10 X=10
case4 5-6-7 X=10, A=1, B=2 X=11 X=11

case5 5-6-7 X=1, A=1, B=2 X=1 X=1
case6 5-6-7 X=10, A=0, B=2 X=10 X=10
case7 T-7 X=1, A=0, B=2 X=1 X=1

你可能感兴趣的:(测试)