实验四: 黑盒测试——因果图测试法

【实验环境】

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. 消息输出问题

当输入第一个字符是‘#’ 或者是‘*’,第二个输入字符是数字时,文档将被修改;如果第一个字符不是‘#’ 或 ‘*’ ,则输出消息N,如果第二个输入字符不是数字,则输出消息M。

【算法描述】

程序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. 初始化变量:

   - 声明一个字符串变量 `message` 用于存储输入。

2. 读取输入:

   - 从标准输入读取一个字符串,并将其存储在变量 `message` 中。

3. 检查第一个字符:

   - 从 `message` 中提取第一个字符,并将其存储在变量 `firstChar` 中。

   - 检查 `firstChar` 是否等于 '#' 或 '*'。

4. 嵌套条件:

   - 如果 `firstChar` 是 '#' 或 '*':

    - 从 `message` 中提取第二个字符,并将其存储在变量 `secondChar` 中。

     - 使用 `isdigit` 检查 `secondChar` 是否是数字。

     - 如果 `secondChar` 是数字,则输出 "文档修改"。

     - 如果 `secondChar` 不是数字,则输出 "M"。

5. 否则条件:

   - 如果 `firstChar` 不是 '#' 或 '*':

     - 输出 "N"(表示第一个字符不是 '#' 或 '*')。

【测试用例】
  1. 三角形问题

因果分析:

C1:1<=a<=100

C2:1<=b<=100

C3:1<=c<=100

C4:a<b+c

C5:b<a+c

C6:c<a+b

C7: a=b

C8: a=c

C9: b=c

E1: 输入不满足条件

E2: 输出“非三角形”

E3: 输出“不等边三角形”

E4: 输出“等腰三角形”

E5: 输出“等边三角形”

因果图:

C10:边范围正确

C11:可构成三角形

C12:存在两边相等

C13:三边两两相等

因果图测试用例

测试编号

a

b

c

预期结果

输出结果

1

8

3

4

非三角形

非三角形

2

2

5

2

三角形

非三角形

3

2

3

9

非三角形

非三角形

4

5

5

5

等边三角形

等边三角形

5

5

5

6

等腰三角形

等腰三角形

6

5

6

5

等腰三角形

等腰三角形

7

6

5

5

等腰三角形

等腰三角形

8

3

4

5

不等边三角形

不等边三角形

  1. 消息输出问题

因果分析:

C1:第一个字符是’#‘

C2:第一个字符是’*‘

C3:第二个字符是数字

E1:文档将被修改

E2:输出消息N

E3:输出消息M

因果图:

C4:第一个字符是’#’或’*’

因果图测试用例

测试编号

字符一

字符二

预期结果

输出结果

1

#

3

文档修改

文档修改

2

*

5

文档修改

文档修改

3

2

3

N

N

4

#

e

M

M

5

*

#

M

M

【实验总结】

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

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



using namespace std;



int main() {

    int a, b, c;

    

    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. 消息输出问题 
#include <iostream>

#include <cctype>

using namespace std;



int main(){

    string message;

    while (cin >> message){

        char firstChar = message[0];

        if (firstChar == '#' || firstChar == '*'){

            char secondChar = message[1];

            if (isdigit(secondChar)){

                cout << "文档修改" << endl;

            }

            else{

                cout << "M" << endl;

            }

        }

        else{

            cout << "N" << endl;

        }

    }

    return 0;

}

  • 43
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值