• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Elaine00
博客园    首页    新随笔    联系   管理    订阅  订阅

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

有一个函数如下:

 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
作者:Elaine
出处:http://www.cnblogs.com/ITGirl00/
交流QQ:392989505
posted @ 2014-07-20 22:45  Elaine00  阅读(37626)  评论(2)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3