实验一: 黑盒测试——边界值分析法

本文介绍了如何使用边界值分析方法对三角形问题和NextDate函数进行测试,包括定义输入范围、测试用例设计和不同复杂度测试的执行,强调了边界测试和健壮性测试在软件质量保证中的重要性。
摘要由CSDN通过智能技术生成
 【实验环境】

Windows 10 操作系统, C,C++,C#、Java或Python语言开发环境(IDE)。

【实验类型】 

设计型

【实验目的】 
  1. 认识黑盒测试方法中边界值分析测试法原理
  2. 掌握黑盒测试方法中边界值分析测试法过程
【实验内容】 
  1. 三角形问题

问题描述:三角形问题接受三个整数,a、b和c作为输入,用作三角形的边。程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。

作为输入:三角形的三条边必须满足如下条件:

C1:1<=a<=100

C2:1<=b<=100

C3:1<=c<=100

C4:a<b+c

C5:b<a+c

C6:c<a+b

  1. NextDate函数

问题描述:NextDate是一个由三个变量(月份、日期和年份)的函数。函数返回输入日期后边的那个日期。

作为输入:变量月份、日期和年都具有整数值,满足以下条件。

C1:1<=月份<=12

C2:1<=日期<=31

C3:1912<=年<=2050

【算法描述】

程序1算法描述

1. 输入三个整数a、b和c,代表三角形的三条边。

2. 首先,检查输入的a、b和c是否在范围1到100内(满足条件C1到C3)。

3. 接下来,检查是否满足三角形的边长条件(满足条件C4到C6):

   - 检查是否a + b > c

   - 检查是否a + c > b

   - 检查是否b + c > a

4. 如果满足上述条件,进一步判断三角形的类型:

   - 如果a、b和c都相等,输出"等边三角形"。

   - 否则,如果至少两个边相等,输出"等腰三角形"。

   - 否则,输出"不等边三角形"。

5. 如果不满足条件4,输出"非三角形"。

程序2算法描述

1. 输入三个整数,分别表示月份(month)、日期(day)和年份(year)。

2. 首先,检查输入日期是否符合以下条件(条件C1到C3):

   - 1 <= month <= 12

   - 1 <= day <= 31

   - 1912 <= year <= 2050

3. 如果输入日期不符合条件,输出 "输入日期不符合条件",并结束算法。

4. 否则,进入下一个日期计算部分。

5. 增加日期(day)的值 by 1。

6. 检查日期是否超过了一个月的天数:

   - 如果 day > 31,表示下一个月的第一天,day 被设置为 1,然后 month 的值增加 by 1。

   - 如果 day > 30,而当前月份是4、6、9或11,同样 day 被设置为 1,month 的值增加 by 1。

   - 如果 day > 29,当前月份为2,且 year 为闰年,同样 day 被设置为 1,month 的值增加 by 1。

   - 如果 day > 28,当前月份为2,但 year 不是闰年,同样 day 被设置为 1,month 的值增加 by 1。

7. 继续检查月份,如果 month 超过 12,表示下一年的第一月,month 被设置为 1,year 的值增加 by 1。

8. 输出下一个日期的月份、日期和年份。

【测试案例】
  1. 三角形问题
    1. 边界值测试(4N+1)

测试编号

a

b

c

预期结果

输出结果

1

1

50

50

等腰三角形

等腰三角形

2

2

50

50

等腰三角形

等腰三角形

3

50

50

50

等边三角形

等边三角形

4

99

50

50

等腰三角形

等腰三角形

5

100

50

50

等边三角形

等边三角形

6

50

1

50

等腰三角形

等腰三角形

7

50

2

50

等腰三角形

等腰三角形

8

50

99

50

等腰三角形

等腰三角形

9

50

100

50

非三角形

非三角形

10

1

50

50

等腰三角形

等腰三角形

11

2

50

50

等腰三角形

等腰三角形

12

99

50

50

等腰三角形

等腰三角形

13

100

50

50

非三角形

非三角形

    1. 健壮性测试(6N+1)

测试编号

a

b

c

预期结果

输出结果

1

50

50

1

等腰三角形

等腰三角形

2

50

50

2

等腰三角形

等腰三角形

3

50

50

99

等腰三角形

等腰三角形

4

50

50

100

非三角形

非三角形

5

50

50

0

输入不合法

输入不合法

6

50

50

150

非三角形

非三角形

7

50

1

50

等腰三角形

等腰三角形

8

50

2

50

等腰三角形

等腰三角形

9

50

99

50

等腰三角形

等腰三角形

10

51

50

100

不等边三角形

不等边三角形

11

1

50

50

等腰三角形

等腰三角形

12

2

50

50

等腰三角形

等腰三角形

13

99

50

50

等腰三角形

等腰三角形

14

100

50

50

非三角形

非三角形

15

50

0

50

输入不合法

输入不合法

16

50

101

50

输入不合法

输入不合法

17

0

50

50

输入不合法

输入不合法

18

101

50

50

输入不合法

输入不合法

19

50

50

50

等边三角形

等边三角形

    1. 最坏情况测试(N^5)

测试编号

a

b

c

预期结果

输出结果

1

50

50

1

等腰三角形

等腰三角形

2

50

50

2

等腰三角形

等腰三角形

3

50

50

99

等腰三角形

等腰三角形

4

50

50

100

非三角形

非三角形

5

50

50

0

输入不合法

输入不合法

6

50

50

101

非三角形

非三角形

7

50

1

50

等腰三角形

等腰三角形

8

50

2

50

等腰三角形

等腰三角形

9

50

99

50

等腰三角形

等腰三角形

10

50

50

100

不是三角形

不是三角形

11

1

50

50

等腰三角形

等腰三角形

12

2

50

50

等腰三角形

等腰三角形

13

99

50

50

等腰三角形

等腰三角形

14

100

50

50

非三角形

非三角形

15

50

0

50

输入不合法

输入不合法

16

50

101

50

输入不合法

输入不合法

17

0

50

50

输入不合法

输入不合法

18

101

50

50

输入不合法

输入不合法

19

50

50

50

等边三角形

等边三角形

20

1

1

100

非三角形

非三角形

21

1

4

79

非三角形

非三角形

22

50

3

100

非三角形

非三角形

23

6

99

99

等腰三角形

等腰三角形

24

47

100

99

不等边三角形

不等边三角形

……

……

……

……

……

……

50

15

16

99

非三角形

非三角形

    1. 健壮最坏情况测试(N^7)

测试编号

a

b

c

预期结果

输出结果

1

50

50

1

等腰三角形

等腰三角形

2

50

50

2

等腰三角形

等腰三角形

3

50

50

99

等腰三角形

等腰三角形

4

50

50

100

非三角形

非三角形

5

50

50

0

输入不合法

输入不合法

6

50

50

101

非三角形

非三角形

7

50

1

50

等腰三角形

等腰三角形

8

50

2

50

等腰三角形

等腰三角形

9

50

99

50

等腰三角形

等腰三角形

10

50

50

100

不是三角形

不是三角形

11

1

50

50

等腰三角形

等腰三角形

12

2

50

50

等腰三角形

等腰三角形

13

99

50

50

等腰三角形

等腰三角形

14

100

50

50

非三角形

非三角形

15

50

0

50

输入不合法

输入不合法

16

50

101

50

输入不合法

输入不合法

17

0

50

50

输入不合法

输入不合法

18

101

50

50

输入不合法

输入不合法

19

50

50

50

等边三角形

等边三角形

20

1

1

100

非三角形

非三角形

21

1

4

79

非三角形

非三角形

22

50

3

100

非三角形

非三角形

23

6

99

99

等腰三角形

等腰三角形

24

47

100

99

不等边三角形

不等边三角形

25

0

101

101

输入不合法

输入不合法

26

99

99

99

等边三角形

等边三角形

……

……

……

……

……

……

50

15

16

99

非三角形

非三角形

  1. Nextdate函数
    1. 边界值测试(4N+1)

测试用例

month

day

Year

预期输出

实际输出

1

7

10

1910

输入日期不符合条件

输入日期不符合条件

2

7

10

1911

输入日期不符合条件

输入日期不符合条件

3

1

1

1912

1/1/1912

1/1/1912

4

7

10

2049

7/11/2049

7/11/2049

5

7

10

2050

7/11/2050

7/11/2050

6

7

10

2051

输入日期不符合条件

输入日期不符合条件

7

0

10

2021

输入日期不符合条件

输入日期不符合条件

8

1

10

2021

1/11/2021

1/11/2021

9

2

10

2021

2/11/2021

2/11/2021

10

11

10

2021

11/11/2021

11/11/2021

11

12

10

2021

12/11/2021

12/11/2021

12

13

10

2021

输入日期不符合条件

输入日期不符合条件

13

2

27

2021

2/28/2021

2/28/2021

    1. 健壮性测试(6N+1)

测试用例

month

day

Year

预期输出

实际输出

1

7

10

1910

输入日期不符合条件

输入日期不符合条件

2

7

10

1911

输入日期不符合条件

输入日期不符合条件

3

7

10

1912

1/1/1912

1/1/1912

4

7

10

2049

7/11/2049

7/11/2049

5

7

10

2050

7/11/2050

7/11/2050

6

7

10

2051

输入日期不符合条件

输入日期不符合条件

7

0

10

2021

输入日期不符合条件

输入日期不符合条件

8

1

10

2021

1/11/2021

1/11/2021

9

2

10

2021

2/11/2021

2/11/2021

10

11

10

2021

11/11/2021

11/11/2021

11

12

10

2021

12/11/2021

12/11/2021

12

13

10

2021

输入日期不符合条件

输入日期不符合条件

13

2

27

2021

2/28/2021

2/28/2021

14

2

28

2021

3/1/2021

3/1/2021

15

2

29

2021

输入日期不符合条件

输入日期不符合条件

16

2

28

2020

2/29/2020

2/29/2020

17

2

29

2020

3/1/2020

3/1/2020

18

2

30

2020

输入日期不符合条件

输入日期不符合条件

19

1

30

2021

1/31/2021

1/31/2021

    1. 最坏情况测试(N^5)

测试用例

month

day

Year

预期输出

实际输出

1

7

10

1910

输入日期不符合条件

输入日期不符合条件

2

7

10

1911

输入日期不符合条件

输入日期不符合条件

3

7

10

1912

1/1/1912

1/1/1912

4

7

10

2049

7/11/2049

7/11/2049

5

7

10

2050

7/11/2050

7/11/2050

6

7

10

2051

输入日期不符合条件

输入日期不符合条件

7

0

10

2021

输入日期不符合条件

输入日期不符合条件

8

1

10

2021

1/11/2021

1/11/2021

9

2

10

2021

2/11/2021

2/11/2021

10

11

10

2021

11/11/2021

11/11/2021

11

12

10

2021

12/11/2021

12/11/2021

12

13

10

2021

输入日期不符合条件

输入日期不符合条件

13

2

27

2021

2/28/2021

2/28/2021

14

2

28

2021

3/1/2021

3/1/2021

15

2

29

2021

输入日期不符合条件

输入日期不符合条件

16

2

28

2020

2/29/2020

2/29/2020

17

2

29

2020

3/1/2020

3/1/2020

18

2

30

2020

输入日期不符合条件

输入日期不符合条件

19

1

30

2021

1/31/2021

1/31/2021

20

1

31

2021

2/1/2021

2/1/2021

21

1

32

2021

输入日期不符合条件

输入日期不符合条件

22

4

30

2021

5/1/2021

5/1/2021

23

4

31

2021

输入日期不符合条件

输入日期不符合条件

24

4

32

2021

输入日期不符合条件

输入日期不符合条件

……

……

……

……

……

……

50

5

31

2023

6/1/2023

6/1/2023

    1. 健壮最坏情况测试(N^7)

测试用例

month

day

Year

预期输出

实际输出

1

7

10

1910

日期不合法

日期不合法

2

7

10

1911

日期不合法

日期不合法

3

7

10

1912

1912/7/11

1912/7/11

4

7

10

2049

2049/7/11

2049/7/11

5

7

10

2050

2050/7/11

2050/7/11

6

7

10

2051

日期不合法

日期不合法

7

0

10

2021

日期不合法

日期不合法

8

1

10

2021

2021/1/11

2021/1/11

9

2

10

2021

2021/2/11

2021/2/11

10

11

10

2021

2021/11/11

2021/11/11

11

12

10

2021

2021/12/11

2021/12/11

12

13

10

2021

日期不合法

日期不合法

13

2

27

2021

2021/2/28

2021/2/28

14

2

28

2021

2021/3/1

2021/2/29

15

2

29

2021

日期不合法

日期不合法

16

2

28

2020

2020/2/29

2020/2/29

17

2

29

2020

2020/3/1

2020/2/30

18

2

30

2020

日期不合法

日期不合法

19

1

30

2021

2021/1/31

2021/1/31

20

1

31

2021

2021/2/1

2021/2/1

21

1

32

2021

日期不合法

日期不合法

22

4

30

2021

2021/5/1

2021/5/1

23

4

31

2021

日期不合法

日期不合法

24

4

32

2021

日期不合法

日期不合法

……

……

……

……

……

50

5

31

2023

2023/6/1

2023/6/1

51

6

1

2023

2023/6/2

2023/6/2

【实验总结】

1.在具体进行测试时,边界性测试和健壮性测试都有不同的作用,随着测试复杂程度的提升,程序出错的可能性也就越小。
2.在设计数据范围时,要结合现实条件设计,比如第二个实验中没有考虑月份中的大小月以及闰年,在实际使用中就可能出现问题

【附-程序源码】
  1. 三角形问题
#include <iostream>

using namespace std;



int main() {

    int a, b, c;

    while (

    cin >> a >> b >> c) {



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

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

            if (a == b && b == c) {

                cout << "等边三角形" << endl;

            } else if (a == b || b == c || a == c) {

                cout << "等腰三角形" << endl;

            } else {

                cout << "不等边三角形" << endl;

            }

        } else {

            cout << "非三角形" << endl;

        }

    } else {

        cout << "输入不合法" << endl;

    }

    }

    return 0;

}
  1. NextDate函数
#include <iostream>



using namespace std;



bool IsLeapYear(int year) {

    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {

        return true;

    } else {

        return false;

    }

}



bool IsValidDate(int month, int day, int year) {

    if (month < 1 || month > 12 || day < 1 || day > 31 || year < 1912 || year > 2050) {

        return false;

    }



    if (month == 4 || month == 6 || month == 9 || month == 11) {

        return (day <= 30);

    } else if (month == 2) {

        if (IsLeapYear(year)) {

            return (day <= 29);

        } else {

            return (day <= 28);

        }

    } else {

        return true;

    }

}



void NextDate(int &month, int &day, int &year) {

    day++;



    if (day > 31 || (day > 30 && (month == 4 || month == 6 || month == 9 || month == 11)) ||

        (day > 29 && month == 2 && IsLeapYear(year)) || (day > 28 && month == 2)) {

        day = 1;

        month++;

    }



    if (month > 12) {

        month = 1;

        year++;

    }

}



int main() {

    int month, day, year;

    while(cin >> month >> day >> year){  // 以空格分隔输入

    if (!IsValidDate(month, day, year)) {

        cout << "输入日期不符合条件" << endl;

        continue;

    }

    NextDate(month, day, year);



    cout << month << "/" << day << "/" << year << endl;

    }

    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值