一、实验目的
1、掌握控制流图,独立路径,圈复杂度,程序基本路径集的概念。
2、掌握McCabe程序基本路径集确定方法。
3、掌握基本路径集测试法。
二、实验任务
程序int binsearch(int array[],int length,int key)实现折半查找的功能。数组array元素按升序排列,length为数组array的长度,key为要查找的值。
试用基本路径集测试法测试该程序,撰写实验报告。
实验步骤:
1、画出程序的控制流图。
程序流程图
控制流图
2、计算流图G的圈复杂度V(G)。
流程图中共涉及:2、3、4、5、7、2和2、3、4、5、6、2两个封闭区域,所以环路复杂度V(G)=2+1=3
3、确定只包含独立路径的基本路径集。
该程序的独立路径是:
- 1、2、3、4、8、9;
- 1、2、3、4、5、7、2、9;
- 1、2、3、4、5、6、2、9;
4、根据上面的独立路径,设计测试用例,得到测试用例表。
| |
输入数组 | 2,5,8,9,12,21,30 |
被查找数 | 9 |
预期输出 | 3 |
| |
输入数组 | 3,5,9,12,45,67,87,99 |
被查找数 | 67 |
预期输出 | 5 |
| |
输入数组 | 4,5,17,24,28,37,48,49,100 |
被查找数 | 17 |
预期输出 | 2 |
5、执行测试,填写软件缺陷报告。
三、测试代码
#include <stdio.h>
int main()
{
int i,key,n,arr[10001];
printf("请输入数组个数:");
scanf("%d",&n);
printf("\n");
for(i = 0;i < n;i++){
scanf("%d",&arr[i]);
}
printf("请输入需要查找的数:");
scanf("%d",&key);
printf("\n");
//2、确定左右下标
int low = 0;
int high = n - 1;
while (low <= high)//只要left<=right说明left和right中间是有元素可以被查找的
{
//3、找中间元素
int mid = (low + high) / 2;
//4、通过比较大小缩小范围
if (arr[mid] < key)
{
low = mid + 1;
}
else if (arr[mid] > key)
{
high = mid - 1;
}
else
{
printf("找到了,下标是%d\n", mid);
break;
}
}
if (low > high)
{
printf("找不到\n");
}
return 0;
}
四、测试缺陷报告
测试模块: | 折半查找测试 | 开 发 者: | XXX |
测 试 员: | XXX | 测试日期: | 2024.5.22 |
软件缺陷列表 | |||
缺陷ID | 缺陷详细信息 | ||
BUG1 | 无 | ||
BUG2 | 无 | ||
BUG3 | 无 | ||
BUG4 | 无 |