实验二+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)各种覆盖方式容易重合,造成测试冗余。
时间: 2024-10-27 19:50:06

实验二+052+张博勋的相关文章

实验三+052+张博勋

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

实验四+052+张博勋

一.实验目的 1) 学习QTP工具的使用 2)了解黑盒自动化测试 二.实验要求 (1)对被测程序进行黑盒测试用例设计 (2)对QTP的飞机订票系统的任一界面或控件实现自动化测试.(测试的具体自选) (3)写出该程序的缺陷. 三.实验内容 1.对QTP的样例小程序飞机订票系统,实现自动化测试.(学号被3整除,测3a;余1,测3b:余2,测4a) 2.要求: 1)写出飞机订票系统的被测需求. 自行选择需要测试的部分,根据自己的能力,可大,可小. 描述,被测程序,与被测部分的功能. 2)设计测试用例.

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.实现密码学中常见算法的固化. 实验仪器: 名称 型号 数量 嵌

实验二 实验报告

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

1111实验二 作业调度模拟实验

实验二.作业调度模拟实验 物联网工程 张怡 201306104149 一.实验目的  (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 二.实验内容和要求 1.至少用三种调度算法: 1) 采用先来先服务(FCFS)调度算法,即按作业到达的先后次序进行调度.总是首先调度在系统中等待时间最长的作业. 2) 短作业优先 (SJF) 调度算法,优先调度要求运行时间最短的作业. 3) 响应比高者优先(HRRN)调度算法,为每个作业设置一个优先权(响应比),调度之前先计算各作业的优先权,优先数高