​​​​​​​实验五: 白盒测试——逻辑覆盖测试

【实验环境】

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

【实验类型】 

设计型

【实验目的】 
  1. 熟悉掌握白盒测试的原理
  2. 掌握白盒测试过程,了解逻辑覆盖白盒测试方法并能根据问题设计测试样例。
【实验内容】 
  1. 逻辑覆盖

根据下述题目,给出语句覆盖、判定覆盖、条件覆盖、判定\条件覆盖、条件组合覆盖和路径覆盖的测试用例并执行测试。

void DoWork(int x, int y, int z)

 {

1     int k=0,j=0;

2     if ((x>3)&&(z<10))

3     {

4  k=x* y-1;

5  j= abs(k);  //abs 绝对值运算函数,也可以是平方根sqrt函数

6      }

7     if ((x==4)‖(y>5))

8     {

9  j=x*y+10;

10      j=j%3;

11     }

12   }

  1. N-S流程图测试用例设计和执行

编写一元二次方程( ax2+bx+c=0)算法,设计路径测试用例并执行测试。

【算法描述】

程序1算法描述

输入: 三个整数 x、y 和 z

输出: j

1. 初始化两个整数变量 k 和 j 为 0。

2. 检查条件:如果 (x > 3) 且 (z < 10),则执行以下步骤:

    a. 计算 k = x * y - 1。

    b. 计算 j = k 的绝对值(使用 abs 函数)。

3. 检查条件:如果 (x == 4) 或 (y > 5),则执行以下步骤:

    a. 计算 j = x * y + 10。

    b. 计算 j 对 3 取模。

4. 输出j。

5.结束函数。

程序2算法描述

输入: 三个实数 a, b, 和 c,表示一元二次方程的系数

输出: 包含两个实数的列表,表示方程的解

1. 计算判别式 delta = b^2 - 4ac。

2. 如果 delta 大于等于 0,则执行以下步骤:

    a. 计算第一个解 root1 = (-b + sqrt(delta)) / (2a)。

    b. 计算第二个解 root2 = (-b - sqrt(delta)) / (2a)。

    c. 返回包含 root1 和 root2 的列表。

3. 如果 delta 小于 0,则方程无实数解,返回空列表。

4. 结束算法。

【测试案例】
  1. Dowork函数

流程图

测试用例

测试编号

用例描述

x

y

z

预期结果(j)

实际结果

1

语句覆盖测试

4

6

9

1

1

2

判定覆盖测试

4

6

9

1

1

3

2

8

5

2

2

4

4

6

11

1

1

5

2

6

9

1

1

6

条件覆盖测试

4

6

9

1

1

7

2

8

5

2

2

8

1

7

12

2

2

9

4

6

11

1

1

10

2

6

9

1

1

11

5

3

5

14

14

12

判定/条件覆盖测试

4

6

9

1

1

13

2

8

5

2

2

14

条件组合覆盖测试

4

6

9

1

1

15

2

8

5

2

2

16

4

6

11

1

1

17

2

6

9

1

1

18

路径覆盖测试

4

6

9

1

1

19

2

8

5

2

2

20

4

6

11

1

1

21

2

6

9

1

1

  1. 一元二次方程

流程图

N/S

测试用例

测试路径

测试用例描述

a

b

c

预期结果

实际结果

路径1

Δ>0,有两个实数解

2

5

-3

0.5 -3

0.5 -3

路径2

Δ=0,有一个实数解

1

-4

4

2

2 2

路径3

Δ<0,有两个虚数解

3

1

4

无实根

No real roots.

路径4

a=0,非一元二次方程

0

5

-3

非一元二次方程

Nan -inf

【实验总结】

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

【附-程序源码】
  1.  Dowork函数
#include <iostream>

#include <cstdlib> // 包含 abs 函数的头文件

using namespace std;



void DoWork(int x, int y, int z)

{

    int k = 0, j = 0;



    if ((x > 3) && (z < 10))

    {

        k = x * y - 1;

        j = abs(k);

    }



    if ((x == 4) || (y > 5))

    {

        j = x * y + 10;

        j = j % 3;

    }



    // 输出变量的值

    cout << j << endl;

}



int main()

{

    int x, y, z;

    while (cin >> x>>y>>z)

    {

        DoWork(x, y, z);

    }

    return 0;

}

2.一元二次方程 

#include <iostream>

#include <cmath>

#include <vector>



using namespace std;



void Equation(double a, double b, double c) {

    // 计算判别式 delta

    double delta = b * b - 4 * a * c;



    // 初始化解向量

    vector<double> roots;



    // 判断 delta 大于等于 0 的情况

    if (delta >= 0) {

        // 计算两个解

        double root1 = (-b + sqrt(delta)) / (2 * a);

        double root2 = (-b - sqrt(delta)) / (2 * a);



        // 添加解到列表

        roots.push_back(root1);

        roots.push_back(root2);

    }



    // 输出方程的解

    

    if (roots.empty()) {

        cout << "No real roots." << endl;

    } else {

        for (double root : roots) {

            cout << root << " ";

        }

        cout << endl;

    }

}



int main() {

    double a, b, c;

    while (cin >> a >> b >> c) {

        Equation(a, b, c);

    }

    return 0;

}

  • 39
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值