实验二+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 }

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 }

运行结果:

  

四、测试小结:

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

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

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

时间: 2024-12-28 18:34:03

实验二+028+刘孝天的相关文章

实验三+028+刘孝天

一.实验目的 掌握黑盒测试用例设计方法 二.实验要求 (1)对被测程序进行黑盒测试用例设计 (2)运用等价类.边界值.决策表.状态图法等进行测试用例设计. (3)对手机上任意一款音乐软件进行黑盒测试实践. 三.实验内容 1.对被测程序运用不同的测试技巧进行测试用例设计,并执行测试,撰写测试小结. 要求写出测试用例表.执行情况和测试小结. 2.对手机上任意一款音乐软件进行黑盒测试. 要求:1)使用思维导图 2)根据场景法.状态图法 设计测试用例. 3)附加题:如有可能尝试用正交实验法.组合测试对测

实验二_078_刘玲志

一.实验目的 掌握基于覆盖理论与基本路径的基本白盒测试方法和实践 二.实验要求 运用逻辑覆盖测试的覆盖准则设计被测程序的测试用例,并运行测试用例检查程序的正确与否,给出程序缺陷小结. 三.实验内容 根据各位同学自己的被测程序,分别作出各类白盒测试技术的用例设计和相应的Junit脚本. 所有的覆盖的技术:语句覆盖.判定覆盖.条件覆盖.判定/条件覆盖.组合覆盖.路径覆盖,基本路径测试方法. 包括的内容有: 1) 被测原代码 1 import java.util.Scanner; 2 public c

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

一:类图 二:代码:  1:定义接口 1 package jframeTest; 2 /* 3 * @author lxt 4 * @date 2017年5月2日下午4:22:35 5 * @Param 6 */ 7 public interface InteUtil { 8 9 public int perimeter(int a,int b,int c); 10 public float triangleArea(int a,int b,int c); 11 public boolean I

第5次作业+028+刘孝天

一:被测项目界面 二:测试用例设计表 有效等价类 无效等价类: 边界值进行测试用例 决策表进行测试用例 3)测试结论 测试结果全部通过. 开发者满足了题目的要求并且做到了对输入格式的控制. 4)给开发同学的建议 开发人员编写的程序功能基本上都能满足要求,测试结果都通过.

MySQL数据库实验二:单表查询

实验二   单表查询 一.实验目的 理解SELECT语句的操作和基本使用方法. 二.实验环境 是MS SQL SERVER 2005的中文客户端. 三.实验示例 1.查询全体学生的姓名.学号.所在系. SELECT Sname,S#,Sdept FROM S: 2.查询全体学生的详细记录. SELECT  * FROM S: 3.查全体学生的姓名及其出生年份. SELECT Sname,2011-Sage    /*假定当年的年份为2011年*/ FROM S: 4.查询选修了课程的学生学号.

20145221高其&amp;20145326蔡馨熠《信息安全系统设计基础》实验二 固件设计

20145221高其&20145326蔡馨熠<信息安全系统设计基础>实验二 固件设计 实验目的与要求 了解多线程程序设计的基本原理,学习 pthread 库函数的使用. 了解在 linux 环境下串行程序设计的基本方法. 掌握终端的主要属性及设置方法,熟悉终端I /O 函数的使用.学习使用多线程来完成串口的收发处理. 熟悉linux开发环境,学会基于S3C2410的linux开发环境的配置和使用.使用linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的

实验二 作业调度模拟程序

实验二 作业调度模拟程序 一.        实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 二.        实验内容和要求 用高级语言编写一个或多个作业调度的模拟程序. 单道批处理系统的作业调度程序.作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所运行的时间等因素.      作业调度算法: 1)      采用先来先服务(FCFS)调度算法,即按作业到达的先后次序进行调度.总是首先调度在系统中等待时间

实验二

实验二.pcb进程 专业 网络工程   姓名 方俊晖 学号 201406114309 一.        实验目的 通过本实验可以加深对有关进程控制块.进程队列的概念的进一步理解. 二.        实验内容和要求 1.进程PCB的结构体定义 2.定义结构体 3.输入进程序列 4.排序(按到位时间) 5.输出进程运行的结果 三.        实验方法.步骤及结果测试 #include<stdio.h>typedef struct PCB{int time;int member;int he

信息安全系统设计基础实验二:固件设计

北京电子科技学院(BESTI) 实验报告 课程:信息安全系统设计基础 班级:1353 姓名:芦畅 傅冬菁 学号:20135308 20135311 成绩: 指导教师:娄家鹏 实验日期:2015.11.10 实验密级: 预习程度: 实验时间:15:30~18:00 仪器组次: 必修/选修: 实验序号:1 实验名称:实验一:Linux开发环境的配置和使用 实验目的与要求: 1.掌握程序的烧写方法; 2.能够实现Bootloader; 3.实现密码学中常见算法的固化. 实验仪器: 名称 型号 数量 嵌