实验二+001+陈定国

一、实验目的

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

二、实验要求

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

三、实验内容

1) 被测原代码

import java.util.Scanner;
public class Triangle{
    public static void main(String[] args) {
        while(true){
        System.out.println("请输入三角形的三条边:");
        try {
        int a,b,c;
        Scanner input=new Scanner(System.in);
        a=input.nextInt();
        b=input.nextInt();
        c=input.nextInt();
        String str=triangle(a,b,c);
        System.out.println(str);
        } catch (Exception e) {
            // TODO: handle exception
          System.out.println("请确保输入的边为整数!");
          }
        }
        }

        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)&&(a+c>b)&&(b+c>a)) {
                if (a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a) {
                    if (a==b||a==c||b==c) {
                        result="该三角形为等腰直角三角形.";
                    } else {
                        result="该三角形为直角三角形.";
                    }
                } else if (a==b&&b==c&&a==c) {
                    result="该三角形为等边三角形.";
                } else if (a==b||a==c||b==c) {
                    result="该三角形为等腰三角形.";
                } else {
                    result="该三角形为一般三角形.";
                }
            } else {
                result="不能构成三角形.";
            }
        } else {
            result="不能构成三角形.";
        }
            return result;

    }
}

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

程序图                                                                                                               DD-路径图

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


程序图节点


DD-路径


1


A


2


B


3


C


4


D


5


E


6


F


7


G


8


H


9


I

(I)语句覆盖:

A-B-D-I

A-B-C-F-I

A-B-C-E-I

A-B-C-E-G-I

A-B-C-E-G-H-I

测试用例:


用例ID


输入值


执行路径


预期输出


A


B


X


X


1


101


101


101


A-B-D-I


边的值不在范围内


2


3


1


2


A-B-C-F-I


不能构成三角形


3


3


4


5


A-B-C-E-I


该三角形为直角三角形


4


6


6


6


A-B-C-E-G-I


该三角形为等边三角形


5


5


5


6


A-B-C-E-G-H-I


该三角形为等腰三角形


6


3


5


6


A-B-C-E-G-H-I


该三角形为一般三角形

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

A-B-C-F-I

A-B-C-E-G-H-I

测试用例:


用例ID


输入值


执行路径


预期输出


A


B


X


X


1


1


0


3


A-B-C-F-I


不能构成三角形


2


3


4


3


A-B-C-E-G-H-I


该三角形为等腰三角形

(III)路径覆盖:

A-B-D-I

A-B-C-F-I

A-B-C-E-I

A-B-C-E-G-I

A-B-C-E-G-H-I


用例ID


输入值


执行路径


预期输出


A


B


X


X


1


101


101


101


A-B-D-I


边的值不在范围内


2


3


1


2


A-B-C-F-I


不能构成三角形


3


3


4


5


A-B-C-E-I


该三角形为直角三角形


4


6


6


6


A-B-C-E-G-I


该三角形为等边三角形


5


5


5


6


A-B-C-E-G-H-I


该三角形为等腰三角形


6


3


5


6


A-B-C-E-G-H-I


该三角形为一般三角形

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


编号


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


(a+b>c)&&(a+c>b)&&(b+c>a)


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

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


a==b&&b==c&&a==c


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


覆盖路径


1


T


T


T


T


T


A-B-C-E-G-H-I


2


T


T


T


T


F


A-B-C-E-G-H-I


3


T


T


T


F


A-B-C-E-G-I


4


T


T


F


A-B-C-E-I


5


T


F


A-B-C-F-I


6


F


A-B-D-I

测试用例:


用例ID


输入值


执行路径


覆盖条件


预期输出


1


101


101


101


A-B-D-I


1,2


边的值不在范围内


2


1


1


2


A-B-C-F-I


1,2,3


不能构成三角形


3


3


4


5


A-B-C-E-I


1,2,3,5


该三角形为直角三角形


4


5


5


5


A-B-C-E-G-I


1,2,3,5,7


该三角形为等边三角形


5


3


5


3


A-B-C-E-G-H-I


1,2,3,5,7,8


该三角形为等腰三角形


6


3


5


7


A-B-C-E-G-H-I


1,2,3,5,7,8


该三角形为一般三角形

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

Junit测试脚本:

import static org.junit.Assert.assertEquals;

import org.junit.Before;
import org.junit.Test;

public class TrangleTest {
    private static Triangle trangle = new Triangle();

    @Before
    public void setUp() throws Exception {

    }

    @Test
    public void testTriangle01() {
        assertEquals("该三角形为直角三角形.", Triangle.triangle(3, 4, 5));//1

    }
    @Test
    public void testTriangle02() {
        assertEquals("该三角形为等边三角形.", Triangle.triangle(6, 6, 6));//2
    }
    @Test
    public void testTriangle03() {
        assertEquals("边的值不在范围内!",  Triangle.triangle(150, 150, 200));//3

    }
    @Test
    public void testTriangle04() {
        assertEquals("不能构成三角形.", Triangle.triangle(3, 1, 2));//4

    }
    @Test
    public void testTriangle05() {
        assertEquals("该三角形为一般三角形.",  Triangle.triangle(3, 5, 6));//5

    }
    @Test
    public void testTriangle06() {
        assertEquals("该三角形为等腰三角形.",  Triangle.triangle(5, 5, 6));//6

    }

}

测试结果:

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

import org.junit.Before;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({
    TrangleTest.class
})

public class Test {

    @Before
    public void setUp() throws Exception {
    }
}

测试结果:

4、测试小结:

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

测试用例都成功通过。

修改建议:应先判断等腰再判断等边三角形,这样逻辑更顺畅;应在代码关键处添加注释。

总结与心得:在我们平常的项目开发中,测试是显得越来越重要。我们很多的时候,必须得测试与开发同步,测试代码和工作代码应同步编译和更新。而junit可以大大减少代码量和文件量,为测试提供了很大的灵活性。所以不要认为压力大,就不写测试代码。相反编写测试代码会使压力逐渐减轻,因为通过编写测试代码地编写出有效率的工作代码。在编写测试用例时要充分覆盖各个路径,以确保每个判断条件都能被执行。

时间: 2024-12-21 02:21:23

实验二+001+陈定国的相关文章

实验三+001+陈定国

一.实验目的 掌握黑盒测试用例设计方法 二.实验要求 (1)对被测程序进行黑盒测试用例设计 (2)运用等价类.边界值.决策表.状态图法等进行测试用例设计. (3)对手机上任意一款音乐软件进行黑盒测试实践.(作业若雷同,后上传者判定0分) 三.实验内容 1.对被测程序运用不同的测试技巧进行测试用例设计,并执行测试,撰写测试小结. 要求写出测试用例表.执行情况和测试小结. 被测链接:http://www.cnblogs.com/ddanwu-blogs/p/6802869.html 1)被测项目界面

实验二+063+陈彧

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

实验二+061+陈小兰

被测代码地址:http://www.cnblogs.com/chenyp1996/p/6619103.html 一.实验目的 掌握基于覆盖理论与基本路径的基本白盒测试方法和实践 二.实验要求 运用逻辑覆盖测试的覆盖准则设计被测程序的测试用例,并运行测试用例检查程序的正确与否,给出程序缺陷小结. 三.实验内容 根据各位同学自己的被测程序,分别作出各类白盒测试技术的用例设计和相应的Junit脚本. 所有的覆盖的技术:语句覆盖.判定覆盖.条件覆盖.判定/条件覆盖.组合覆盖.路径覆盖,基本路径测试方法.

实验二+116+陈洁

测试帖连接:http://www.cnblogs.com/ZQ4162/p/6623033.html 一.实验目的 掌握基于覆盖理论与基本路径的基本白盒测试方法和实践 二.实验要求 运用逻辑覆盖测试的覆盖准则设计被测程序的测试用例,并运行测试用例检查程序的正确与否,给出程序缺陷小结. 三.实验内容 1) 被测原代码 1 public class Caculator { 2 public static float commission(int Headphone,int Shell,int Pro

大明最不该被遗忘的英烈——李定国

2009-6-26日,世界禁毒日,中央电视台晚间8点——9点做了一期节目,其中涉及到了位于缅北金三角地区,更有缅甸掸邦的果敢族.这使我不禁想起了眼前的这些果敢族他们正是由死不降清的南明遗老,在现今缅北的荒山野僻之地,通过300多年艰苦而漫长的日子,顽强的生栖繁衍起来的.通过他们,仍能感到李定国将军留给历史的那份沉重. 明末清初的时候,在我们所学的历史书上都知道1644年明朝灭亡,清朝建立,统一了中国,但在很多历史家眼里,明朝的灭亡是在1662的永历皇帝为标志的,连清初的文字狱<明史><南

实验二十四:SD卡模块

  驱动SD卡是件容易让人抓狂的事情,驱动SD卡好比SDRAM执行页读写,SD卡虽然不及SDRAM的麻烦要求(时序参数),但是驱动过程却有猥琐操作.除此此外,描述语言只要稍微比较一下C语言,描述语言一定会泪流满面,因为嵌套循环,嵌套判断,或者嵌套函数等都是它的痛.. 史莱姆模块是多模块建模的通病,意指结构能力非常脆弱的模块,暴力的嵌套行为往往会击垮模块的美丽身躯,好让脆弱结构更加脆弱还有惨不忍睹,最终搞垮模块的表达能力.描述语言预想驾驭SD卡,关键的地方就是如何提升模块的结构能力.简单而言,描述

【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十三:DS1302模块

实验二十三:DS1302模块 DS1302这只硬件虽然曾在<建模篇>介绍过,所以重复的内容请怒笔者懒惰唠叨了,笔者尽可以一笑带过,废话少说让我们进入正题吧.DS1302是执行事实时钟(Real Time Clock)的硬件,采用SPI传输. 表示23.1 访问(地址)字节. [7] [6] [5] [4] [3] [2] [1] [0] 1 A5 A4 A3 A2 A1 A0 R/W DS1302作为从机任由主机蹂躏 ... 啊,是任由主机访问才对.对此,访问便有方向之分.如表23.1所示,访

二柱子四则运算定制版+升级版

题目:在上次程序的基础上,实现对连除的判断,并且实现多个数的混合运算,要求可以输入结果,并进行判断. 思路:基于上次程序,首先思考混合运算,这里运用两个数组,分别记录随机产生的运算数和运算符号.然后对连除进行判断,,检查运算符号数组里是否有连续的除号,有的话加上括号,避免歧义.最后对运算结果进行计算,并对用户输入的结果进行比较,给出相应提示,回答,计算方面,要优先对括号,乘除进行运算,然后再进行加减运算,每次运算完后都要记录下运算的结果. 代码: //吕广浩 3/19 #include<iost

实验二 20155335 实验报告 固件程序设计

实验二 20155307 20155335 20155338 实验报告 固件程序设计 一.实验内容: 1.安装MDK,JLink驱动,运行uVision4,破解MDK2.KEIL-MDK 中添加Z32 SC-000芯片库,完成LED实验3.完成UART发送与中断接收实验4.理解国密算法标准SM1,SM2,SM3,SM4并用gcc和gcc-arm编译5.完成SM1加密实验 二.实验步骤 在开始试验之前,先安装MDK,JLink驱动,运行uVision4,破解MDK, 很多付费软件为了保证试用和购买