实验六: 白盒测试——独立路径测试

本文介绍了如何在Windows环境下,通过C++实现二分查找算法,计算其圈复杂度,并设计独立路径测试用例来验证算法正确性。实验旨在熟悉白盒测试原理,提升软件功能覆盖率和可靠性。
摘要由CSDN通过智能技术生成

【实验环境】

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

【实验类型】 

设计型

【实验目的】 
  1. 熟悉掌握白盒测试的原理
  2. 掌握白盒测试过程,了解独立路径白盒测试方法并能根据问题设计测试样例。
【实验内容】 
  1. 独立路径测试用例设计和执行

编写对有序表进行折半查找的算法,计算圈复杂度,设计测试用例并执行独立路径测试。

【算法描述】

输入: 要查找的目标值 `target`

输出:目标值在有序表中的索引

1. 输入要查找的目标值 `target`,调用二分查找函数

2. 初始化左边界 `left` 为0,右边界 `right` 为有序表的最后一个元素的索引。

3. 进入循环,条件为左边界小于等于右边界。

4. 在循环中,计算中间元素的索引 `mid`,通过 `(left + right) / 2` 或 `left + (right - left) / 2`。

5. 如果中间元素等于目标值,返回中间索引 `mid`。

6. 如果中间元素大于目标值,说明目标值在左半部分,缩小右边界为 `mid - 1`。

7. 如果中间元素小于目标值,说明目标值在右半部分,缩小左边界为 `mid + 1`。

8. 重复步骤2-6,直到左边界大于右边界,表示查找范围为空,返回-1表示未找到目标值。

9.若找到目标值则输出目标值在有序表中的索引,否则输出“不在表中”。

10. 结束函数。

【测试分析】

流程图

流图:

圈复杂度=e-n+2=12-10+2=4

独立路径

1,2-->3-->4-->5-->7-->9-->3-->10

1,2-->3-->4-->5-->7-->8-->3-->10

1,2-->3-->4-->5-->6-->3-->10

1,2-->3-->10

【测试用例】

有序表为= { 10, 20, 30, 40, 50, 60, 70, 80, 90}

测试编号

用例描述

Target

预期结果

实际结果

1

目标值小于中间值

20

1

1

2

目标值大于中间值

90

8

8

3

目标值等于中间值

50

4

4

4

目标值不在有序表

100

No that number

No that number

【实验总结】
  1. 通过独立路径测试可以评估软件的功能覆盖率。通过设计测试用例,覆盖程序的各个路径,确保每个语句和分支都被执行。通过分析测试结果,我们可以发现潜在的缺陷和错误,提高软件质量。
  2. 独立路径测试可以有效地检测程序路径上的问题,其在发现潜在错误和提高软件可靠性方面的有效性。此方法为软件测试提供了一种有力的手段,增强了程序的稳定性。
【附-程序源码】
#include <iostream>

#include <vector>

using namespace std;



// 二分查找函数

int binarySearch(const vector<int>& arr, int target) {

    int left = 0;

    int right = arr.size() - 1;



    while (left <= right) {

        int mid = left + (right - left) / 2;



        // 如果目标值在中间,返回中间索引

        if (arr[mid] == target) {

            return mid;

        }



        // 如果目标值在左半部分,缩小右边界

        else if (arr[mid] > target) {

            right = mid - 1;

        }



        // 如果目标值在右半部分,缩小左边界

        else {

            left = mid + 1;

        }

    }



    // 如果未找到目标值,返回-1表示未找到

    return -1;

}



int main() {

    // 示例有序表

    vector<int> sortedArray = { 10, 20, 30, 40, 50, 60, 70, 80, 90};



    // 要查找的目标值

    int target = 0;

    while (cin >> target)

    {

    // 调用二分查找函数

    int result = binarySearch(sortedArray, target);



    // 输出结果

    if (result != -1) {

        cout << result << endl;

    } else {

        cout << "no that number" << endl;

    }

    }

    return 0;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值