实验二+028+刘孝天

Posted 彼得兔-天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验二+028+刘孝天相关的知识,希望对你有一定的参考价值。

一、实验目的

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

二、实验要求

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

三、实验内容

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

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

包括的内容有:

1) 被测原代码

 1 import java.util.InputMismatchException;
 2 import java.util.Scanner;
 3 
 4 public class TestDemo {
 5     
 6     public static String Triangle(int side1,int side2,int side3)//判断是否构成三角形及三角形的种类
 7     {
 8         int temp;
 9         if(side1>side2) {temp=side1;side1=side2;side2=temp;}//排个序让小数在前,大数在后(不能保证前两个数的顺序)
10         if(side2>side3) {temp=side2;side2=side3;side3=temp;}
11     
12         String result="三角形";
13         if(side1+side2<=side3)
14             return "不构成"+result;
15         else if(side1==side2 && side2==side3)
16             return "等边"+result;
17         else if(side1==side2 || side2==side3)
18             return "等腰"+result;
19         else if(side1*side1+side2*side2==side3*side3)
20             return "直角"+result;
21         else
22             return "普通"+result;
23     }
24     
25     public static boolean Check(int num) //检验输入的数据是否属于[1,100]
26     {
27         if(num<1 || num>100)
28         {
29             System.out.println("边的值不在范围内!");
30             return false;
31         }
32         return true;
33     }
34 
35     public static void main(String[] args) 
36     { 
37         while(true)
38         {
39             Scanner scanner=new Scanner(System.in);
40             int side1=0,side2=0,side3=0;
41             boolean flag=true;  //用于标记输入的数据是否合法
42             System.out.println("请输入三角形的三条边");
43             try{        //捕获输入异常
44                 side1=scanner.nextInt();
45                 side2=scanner.nextInt();
46                 side3=scanner.nextInt();
47             }
48             catch(InputMismatchException e)  //显示输入异常
49             {
50                 flag=false;
51                 System.out.println("请输入整数!");
52             }
53             if(flag)  //若输入有误则直接退出
54                 if(Check(side1) && Check(side2) && Check(side3))
55                     System.out.println(Triangle(side1,side2,side3));
56         }
57     }
58 }
View Code

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

 程序图:

  

DD路径图:

  

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

  

语句覆盖:

  A-B-C-P;A-B-D-E-F-P;

  A-B-D-E-G-H-P;A-B-D-E-G-I-M-P;

  A-B-D-E-G-I-J-K-P;

 

分支覆盖:

  A-B-C-P;A-B-D-E-F-P;

  A-B-D-E-G-H-P;A-B-D-E-G-I-M-P;

  A-B-D-E-G-I-J-K-L-O-P;

 

路径覆盖:

  A-B-C-P;A-B-D-E-F-P;

  A-B-D-E-G-H-P;A-B-D-E-G-I-M-P;

  A-B-D-E-G-I-J-K-P;A-B-D-E-G-I-J-L-N-P;

  A-B-D-E-G-I-J-L-O-P;

 

条件覆盖:

 

 

 

 

测试用例:

 

Junit测试脚本:

  

 1 package test;
 2 import static org.junit.Assert.*;
 3 import org.junit.Before;
 4 import org.junit.BeforeClass;
 5 import org.junit.Test;
 6 
 7 /*
 8  * @author lxt
 9  * @date 2017年4月14日上午12:28:04
10  * @Param
11  */
12 
13 public class TestDemoTest {
14 
15     public static void setUpBeforeClass() throws Exception {
16     }
17 
18     @Before
19     public void setUp() throws Exception {
20     }
21 
22     @Test
23     public void testTriangle() {
24     //    fail("Not yet implemented");
25         String result =null;
26         result=TestDemo.Triangle(7, 8, 21);
27         assertEquals("不构成三角形", result);
28         result=TestDemo.Triangle(8, 8, 10);
29         assertEquals("等腰三角形", result);
30         result=TestDemo.Triangle(6, 8, 10);
31         assertEquals("直角三角形", result);
32         result=TestDemo.Triangle(6, 7, 9);
33         assertEquals("普通三角形",result); 
34         result=TestDemo.Triangle(6, 6, 10);
35         assertEquals("等腰三角形",result);
36         result=TestDemo.Triangle(8, 4, 20);
37         assertEquals("不构成三角形",result);
38         result=TestDemo.Triangle(4, 8, 64);
39         assertEquals("不构成三角形",result);
40         result=TestDemo.Triangle(8, 8, 8);
41         assertEquals("等边三角形",result );
42     }
43     
44     @Test
45     public void testCheck() {
46     //    fail("Not yet implemented");
47         boolean result;
48         result=TestDemo.Check(202);
49         assertEquals(false, result);
50         result=TestDemo.Check(155);
51         assertEquals(false, result);
52         result=TestDemo.Check(381);
53         assertEquals(false, result);
54     }
55 
56 }
View Code

运行结果:

  

四、测试小结:

   对代码进行了测试后,代码测试通过能够正常运行,并且对判断条件进行了优化,先将边的大小进行排序使判断较少,执行的效率提高。

   在本次测试实验中,学会了单元测试框架的使用,对Junit4的开发与使用又有了更深的了解。

   但在写测试用例时未做到全面覆盖,在测试时应当尽可能多的使测试更加完整。

以上是关于实验二+028+刘孝天的主要内容,如果未能解决你的问题,请参考以下文章

第5次作业+028+刘孝天

第4次作业类测试代码+028+刘孝天

写写代码系列028:二叉树的深度优先遍历

[NTUSTISC pwn LAB 7]Return to libc实验(puts泄露libc中gadget片段定位)

机器学习100天(二十八):028 K近邻分类算法-Python实现

机器学习100天(二十八):028 K近邻分类算法-Python实现