• 实验二+052+张博勋


    一、实验目的

    掌握基于覆盖理论与基本路径的基本白盒测试方法和实践

    二、实验要求

    运用逻辑覆盖测试的覆盖准则设计被测程序的测试用例,并运行测试用例检查程序的正确与否,给出程序缺陷小结。

    三、实验内容

    根据各位同学自己的被测程序,分别作出各类白盒测试技术的用例设计和相应的Junit脚本。

    所有的覆盖的技术:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖,基本路径测试方法。

    包括的内容有:

    1) 被测原代码

    package main;
    import java.util.*;
    public class Demo {
        public static String triangle(int a,int b,int c){
            String result;
         if( a>=1 &&a<=100&&b>=1&&b<=100&&c>=1&&c<=100){
                if(a<b+c &&b<a+c&& c<a+b){
                    if(a==b || a==c||b==c){
                        if(a==b &&b==c&&a==c)
                        result = "等边三角形";
                        else
                        result = "等腰三角形";                      
                    }else if(a*a+b*b==c*c || b*b+c*c==a*a || a*a+c*c==b*b){
                        result = "直角三角形";
                    }else{
                        result = "一般三角形";
                    }  
                }else{
                    result = "不构成三角形";
                }
            }else{
                result = "边的值不在范围内!";
            }
         return result;
        }
        public static void main(String[] args) {
        System.out.println("设计三角形问题的程序");
        Scanner sc=new Scanner(System.in);
        while(true)
        {
            try{
                System.out.println("请输入三角形的三条边:");
                int a=sc.nextInt();
                int b=sc.nextInt();
                int c=sc.nextInt();
                System.out.println(triangle(a,b,c));
            }catch(Exception e){
               e.printStackTrace();
            }
      
        }
     }
      
    }
    

      

    2)依据覆盖技术,测试用例列表:

    DD-路径(只压缩链路经)

    程序图节点

    DD-路径

    1,2

    A

    3

    B

    4

    C

    5

    D

    6

    E

    7

    F

    8,9

    G

    10

    H

    11

    I

    12,13,14

    J

    15,16,17

    K

    18,19,20

    L

    21

    M

     

    (I)语句覆盖:

    A-B-C-D-E-F-M和A-B-C-D-E-G-M

    和A-B-C-D-H-I-M和A-B-C-D-H-J-M

    和A-B-C-K-M和A-B-L-M

    测试用例:

    用例ID

    输入值

    执行路径

    预期输出

    a

    b

    c

    result

    1

    3

    3

    3

    A-B-C-D-E-F-M

    等边三角形

    2

    3

    3

    4

    A-B-C-D-E-G-M

    等腰三角形

    3

    3

    4

    5

    A-B-C-D-H-I-M

    直角三角形

    4

    3

    4

    6

    A-B-C-D-H-J-M

    一般三角形

    5

    1

    1

    3

    A-B-C-K-M

    不构成三角形

    6

    101

    99

    99

    A-B-L-M

    边的值不在范围内!

     

    (II)分支覆盖(判断覆盖):

    A-B-C-D-E-F-M和A-B-C-D-E-G-M

    和A-B-C-D-H-I-M和A-B-C-D-H-J-M

    和A-B-C-K-M和A-B-L-M

    测试用例:

     

    用例ID

    输入值

    执行路径

    预期输出

    a

    b

    c

    result

    1

    3

    3

    3

    A-B-C-D-E-F-M

    等边三角形

    2

    3

    3

    4

    A-B-C-D-E-G-M

    等腰三角形

    3

    3

    4

    5

    A-B-C-D-H-I-M

    直角三角形

    4

    3

    4

    6

    A-B-C-D-H-J-M

    一般三角形

    5

    1

    1

    3

    A-B-C-K-M

    不构成三角形

    6

    101

    99

    99

    A-B-L-M

    边的值不在范围内!

     

    (III)路径覆盖:

    A-B-C-D-E-F-M和A-B-C-D-E-G-M

    和A-B-C-D-H-I-M和A-B-C-D-H-J-M

    和A-B-C-K-M和A-B-L-M

    测试用例:

    用例ID

    输入值

    执行路径

    预期输出

    a

    b

    c

    result

    1

    3

    3

    3

    A-B-C-D-E-F-M

    等边三角形

    2

    3

    3

    4

    A-B-C-D-E-G-M

    等腰三角形

    3

    3

    4

    5

    A-B-C-D-H-I-M

    直角三角形

    4

    3

    4

    6

    A-B-C-D-H-J-M

    一般三角形

    5

    1

    1

    3

    A-B-C-K-M

    不构成三角形

    6

    101

    99

    99

    A-B-L-M

    边的值不在范围内!

     

    (IV)条件覆盖:各个条件取真或假的可能至少执行一次

     

    编号

    a>=1

    a<=100

    b>=1

    b<=100

    c>=1

    c<=100

     

    a>=1 &&a<=100&&b>=1&&b<=100&&c>=1&&c<=100

    覆盖路径

    1

    T

    F

    F

    F

    F

    F

    F

    B-C

    2

    T

    T

    F

    F

    F

    F

    F

    B-L

    3

    T

    T

    T

    F

    F

    F

    F

    B-L

    4

    T

    T

    T

    T

    F

    F

    F

    B-L

    5

    T

    T

    T

    T

    T

    F

    F

    B-L

    6

    T

    T

    T

    T

    T

    T

    F

    B-L

    7

    T

    T

    T

    T

    T

    T

    T

    B-C

    总共2^6总选择

     

    编号

    a<b+c

    b<a+c

    c<a+b

    a<b+c &&b<a+c&& c<a+b

    覆盖路径

    1

    T

    F

    F

    F

    C-K

    2

    T

    T

    F

    F

    C-K

    3

    T

    T

    T

    T

    C-D

    4

    T

    F

    T

    F

    C-K

    5

    F

    F

    F

    F

    C-K

    6

    F

    T

    F

    F

    C-K

    7

    F

    F

    T

    F

    C-K

    8

    F

    T

    T

    F

    C-K

     

     

    编号

    a==b

    a==c

    b==c

    a==b || a==c||b==c

    覆盖路径

    1

    T

    F

    F

    T

    D-E

    2

    T

    T

    F

    T

    D-E

    3

    T

    T

    T

    T

    D-E

    4

    T

    F

    T

    T

    D-E

    5

    F

    F

    F

    F

    D-H

    6

    F

    T

    F

    T

    D-E

    7

    F

    F

    T

    T

    D-E

    8

    F

    T

    T

    T

    D-E

     

     

    编号

    a==b

    b==c

    a==b &&b==c

    覆盖路径

    1

    F

    F

    F

    E-G

    2

    F

    T

    F

    E-G

    3

    T

    F

    F

    E-G

    4

    T

    T

    T

    E-F

     

    编号

    a*a+b*b==c*c

    b*b+c*c==a*a

    a*a+c*c==b*b

    a*a+b*b==c*c || b*b+c*c==a*a || a*a+c*c==b*b

    覆盖路径

    1

    T

    F

    F

    T

    H-I

    2

    T

    T

    F

    T

    H-I

    3

    T

    T

    T

    T

    H-I

    4

    T

    F

    T

    T

    H-I

    5

    F

    F

    F

    F

    H-J

    6

    F

    T

    F

    T

    H-I

    7

    F

    F

    T

    T

    H-I

    8

    F

    T

    T

    T

    H-I

     

    测试用例:

    用例ID

    输入值

    执行路径

    预期输出

    a

    b

    c

    result

    1

    3

    3

    3

    A-B-C-D-E-F-M

    等边三角形

    2

    3

    3

    4

    A-B-C-D-E-G-M

    等腰三角形

    3

    3

    4

    5

    A-B-C-D-H-I-M

    直角三角形

    4

    3

    4

    6

    A-B-C-D-H-J-M

    一般三角形

    5

    1

    1

    3

    A-B-C-K-M

    不构成三角形

    6

    101

    99

    99

    A-B-L-M

    边的值不在范围内!

    共2^17种

    3)相应Junit测试脚本、执行结果

    import static org.junit.Assert.*;

     

    import org.junit.BeforeClass;

    import org.junit.Test;

     

    public class test1Test {

     

        @BeforeClass

        public static void setUpBeforeClass() throws Exception {

        }

     

        @Test

        public final void testTriangle() {

           //fail("Not yet implemented"); // TODO

           assertEquals("等边三角形",test1.triangle(3,3,3));

           assertEquals("等腰三角形",test1.triangle(3,3,4));

           assertEquals("直角三角形",test1.triangle(3,4,5));

           assertEquals("一般三角形",test1.triangle(3,4,6));

           assertEquals("不构成三角形",test1.triangle(1,1,3));

           assertEquals("边的值不在范围内!",test1.triangle(101,99,99)); 

          

        }

     

    }

     

    4)给出测试参数化和打包测试的脚本,并生成执行结果

    4、测试小结:

    •      测试找到的缺陷清单
    •      对源代码的修改建议:
    •      测试总结与心得体会:

      (1)条件覆盖中会随着一个判断语句中条件的增多呈指数上升,很难手工全测试完。(2)各种覆盖方式容易重合,造成测试冗余。

  • 相关阅读:
    函数集
    2019.1.7
    第九次团队作业-测试报告与用户使用手册
    α版本升升备忘录下载链接
    系统设计和任务分配(个人)
    团队作业说明
    备忘录-团队选题报告
    需求分析与原型设计---升升备忘录
    项目——四则运算器
    Hello Django
  • 原文地址:https://www.cnblogs.com/zbxun/p/6708340.html
Copyright © 2020-2023  润新知