边界值测试及三角形案例分析(Junit5测试)

黑盒测试主要包括边界值测试,等价类测试,基于判断表的测试,因果图,正交实验设计法,错误推测法等。本文章主要介绍边界值测试,以及介绍边界值测试的实际案例及解析。

1.边界值测试

人们从长期的测试工作经验得知,大量的错误都是发生在定义域至于(输出)的边界上,而不是在其内部。
边界值分析的基本思想是使用输入变量的最小值,略大于最小值,正常值,略小于最大值和最大值设计测试用例。通常我们用 m i n 、 m i n + 、 n o m 、 m a x − 、 m a x min、min+、nom、max-、max minmin+nommaxmax来表示。
当一个函数或程序有两个及两个以上的输入变量时,就需要考虑如何组合个变量的取值。我们可以根据可靠性理论中的单缺陷假设和多缺陷假设来考虑。
在边界值分析中,用到了单缺陷假设,即选取测试用例时仅仅使得一个变量取极值,其他变量均取正常值。对于有两个输入变量的程序 P P P,其边界值分析的测试用例如下:
{ < x 1 n o m , x 2 m i n > , < x 1 n o m , x 2 m i n + , < x 1 n o m , x 2 n o m > , < x 1 n o m , x 2 m a x − , < x 1 n o m , x 2 m a x > , < x 1 m i n , x 2 n o m > , < x 1 m i n + , x 2 n o m > , < x 1 m a x − , x 2 n o m > , < x 1 m a x , x 2 n o m > } \left \{ <x_{1nom},x_{2min}>,<x_{1nom},x_{2min+},<x_{1nom},x_{2nom}>,<x_{1nom},x_{2max-},<x_{1nom},x_{2max}>,<x_{1min},x_{2nom}>, <x_{1min+},x_{2nom}>,<x_{1max-},x_{2nom}>,<x_{1max},x_{2nom}> \right \} {<x1nom,x2min>,<x1nom,x2min+,<x1nom,x2nom>,<x1nom,x2max,<x1nom,x2max>,<x1min,x2nom>,<x1min+,x2nom>,<x1max,x2nom>,<x1max,x2nom>}

下面是一个双变量的边界值测试用例,如下所示:
在这里插入图片描述

2.案例

根据下面给出的规格说明,利用边界值测试的方法,给出足够的测试用例。
“一个程序读入三个整数。把此三个数值看成是一个三角形的三个边。这个程序要打印出信息,说明这个三角形是三边不等的、是等腰的、还是等边的。要求输入三个整数a,b,c,必须满足以下条件: 1 ≤ a ≤ 100 ; 1 ≤ b ≤ 100 ; 1 ≤ c ≤ 100 1\leq a\leq 100;1\leq b\leq 100;1\leq c\leq 100 1a100;1b100;1c100”.请用边界值分析法设计测试用例。

1.分析各变量取值

边界值分析的基本思想是使用输入变量的最小值,略大于最小值、正常值、略大于最大值、最大值设计测试用例。因此 a , b , c a,b,c a,b,c的边界取值是: 1 , 2 , 50 , 99 , 100 1,2,50,99,100 1,2,50,99,100
注意,有 n n n个变量的程序,其边界值分析会产生 4 n + 1 4n+1 4n+1个测试用例。这里有3个变量,因此会产生13个测试用例。

2.编码环境搭建

首先打开IDEA,新建一个Maven的原型项目。
在这里插入图片描述

3.编写判断三角形类型的源代码

public class Triangle {
    public String judgeTriangle(int a,int b,int c){
        String triangle="";
        if(a+b >c && a+c>b && b+c>a){
            if(a==b&&b==c){
                triangle="等边三角形";
            }else if(a!=b && b!=c && a!=c){
                triangle="一般三角形";
            }else{
                triangle="等腰三角形";
            }
        }else{
            triangle="非三角形";
        }
        return triangle;
    }
}

4.编写测试用例

这里的变量tri为对应测试用例下三角形的类型,为了方便后序的测试断言。

a,b,c,tri,
50,50,1,等腰三角形,
50,50,2,等腰三角形,
50,50,50,等边三角形
50,50,99,等腰三角形
50,50,100,非三角形
50,1,50,等腰三角形
50,2,50,等腰三角形
50,99,50,等腰三角形
50,100,50,非三角形
1,50,50,等腰三角形
2,50,50,等腰三角形
99,50,50,等腰三角形
100,50,50,非三角形

5.编写Junit测试代码

import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvFileSource;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class TestTriangle {
    public static Triangle triangle;
    @BeforeAll
    static void setUpBeforeClass() throws Exception {
        triangle=new Triangle();
    }
    @AfterAll
    static void tearDownAfterClass() throws Exception {
    }

    @BeforeEach
    void setUp() throws Exception {
    }

    @AfterEach
    void tearDown() throws Exception {
    }

    @ParameterizedTest
    @CsvFileSource(files = "src/main/java/com/data.csv", numLinesToSkip = 1)//数据文件的路径,可以根据自己的情况而定
    void calcuPressTestWithCsvSource(int a,int b,int c,String tri) {
        assertEquals(tri,triangle.judgeTriangle(a,b,c));
    }
}

熟悉Junit4的可能不太熟悉现在Junit5的@BeforeAll,@AfterAll,@BeforeEach, @AfterEach,所以我在这里对Junit4与Junit5做一个对比,具体如下图所示:
在这里插入图片描述
测试执行顺序为@BeforeAll @BeforeEach @AfterEach @AfterAll
一般在@BeforeAll下完成变量的初始化。
assertEquals是断言预期值与实际值是否相等,相等则表示成功。
具体的断言API如下所示。
在这里插入图片描述

6.测试结果

通过文件读取测试用例,避免了大量的人工输入测试用例,极大地方便了用户的工作,可以进行批量测试。
在这里插入图片描述

  • 6
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

散一世繁华,颠半世琉璃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值