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

有一个函数如下:

 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

 

导出测试用例:

下面使用语句覆盖测试

 通过路径输入数据预期结果测试结果
case15-7-8-14-5-15numA=2,numB=0X=2X=2
case25-10-11-14-5-15numA=2,numB=1X=10X=10
case35-13-14-5-15numA=2,numB=3X=20X=20
case45-15numA=0,numB=1X=0X=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.语句覆盖进行测试用例的设计:
 通过路径输入数据预期结果测试结果
case13-4-5X=10, A=2, B=0X=5X=5
case25-6-7X=10, A=1, B=0X=11X=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))条件假的
 通过路径输入数据预期结果测试结果
case13-4-5X=10, A=2, B=0X=5X=5
case25-6-7X=10, A=1, B=0X=11X=11
case3T-7X=10, A=2, B=3X=10X=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))条件里面的值全假的
 通过路径输入数据预期结果测试结果
case13-4-5X=10, A=2, B=0X=5X=5
case25-6-7X=10, A=1, B=2X=11X=11
case3T-7X=-1, A=-1, B=2X=-1X=-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))条件为假
 通过路径输入数据预期结果测试结果
case13-4-5X=10, A=2, B=0X=5X=5
case23-4-5X=10, A=-2, B=2X=10X=10
case35-6-7X=10, A=1, B=2X=11X=11
case45-6-7X=10, A=-2, B=2X=10X=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))条件为假
 通过路径输入数据预期结果测试结果
case13-4-5X=10, A=2, B=0X=5X=5
case23-4-5X=10, A=2, B=2X=10X=10
case33-4-5X=10, A=-1, B=0X=10X=10
case45-6-7X=10, A=1, B=2X=11X=11

case55-6-7X=1, A=1, B=2X=1X=1
case65-6-7X=10, A=0, B=2X=10X=10
case7T-7X=1, A=0, B=2X=1X=1

转载于:https://www.cnblogs.com/ITGirl00/p/3857446.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值