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


    有一个函数如下:

     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
    交流QQ:392989505
  • 相关阅读:
    整数子数组求最大和
    四则运算实现
    四则运算
    2015年大二下学期读书计划
    java变量和数据类型
    jdk的安装和java的入门概念
    数据库的设计
    多表查询
    数据约束和外键
    表数据的简单查询语句
  • 原文地址:https://www.cnblogs.com/ITGirl00/p/3857446.html
Copyright © 2020-2023  润新知