2. 设计测试下列函数的测试方案: 函数Search(somearray,size,value)的功能是,在一个整数数组somearray中搜索一个值为value的整数,如果数组中有这个数,则函数值等于该数的下标,否则函数值等于-1。数组的长度由参数size指定。假定数组第一个元素的下标为1。 (1) 采用黑盒测试的方法(等价类划分、边界值分析),写出相应的测试用例 (2)用c语言实现此函数,并且由此设计白盒测试方案。
时间: 2024-02-09 07:09:31 浏览: 18
(1) 黑盒测试:
等价类划分:
1. 数组为空数组:somearray = [], size = 0, value = 1;
2. 数组只有一个元素,且该元素等于value:somearray = [1], size = 1, value = 1;
3. 数组只有一个元素,且该元素不等于value:somearray = [1], size = 1, value = 2;
4. 数组有多个元素,value在数组中:somearray = [1, 2, 3, 4, 5], size = 5, value = 3;
5. 数组有多个元素,value不在数组中:somearray = [1, 2, 3, 4, 5], size = 5, value = 6;
边界值分析:
1. 数组为空数组:somearray = [], size = 0, value = 0;
2. 数组只有一个元素,且该元素等于value:somearray = [0], size = 1, value = 0;
3. 数组只有一个元素,且该元素不等于value:somearray = [0], size = 1, value = 1;
4. 数组有多个元素,value在数组中,位于第一个位置:somearray = [0, 1, 2, 3, 4], size = 5, value = 0;
5. 数组有多个元素,value在数组中,位于最后一个位置:somearray = [0, 1, 2, 3, 4], size = 5, value = 4;
6. 数组有多个元素,value在数组中,位于中间的位置:somearray = [0, 1, 2, 3, 4], size = 5, value = 2;
7. 数组有多个元素,value不在数组中,比数组中最小的元素还小:somearray = [1, 2, 3, 4, 5], size = 5, value = 0;
8. 数组有多个元素,value不在数组中,比数组中最大的元素还大:somearray = [1, 2, 3, 4, 5], size = 5, value = 6;
(2) 白盒测试:
基于代码实现的白盒测试方案需要考虑以下几个方面:
1. 边界条件的覆盖:输入参数的最小值、最大值、边界值等;
2. 语句覆盖:执行每一条语句至少一次;
3. 分支覆盖:覆盖每一个分支的True和False;
4. 路径覆盖:覆盖每一个执行路径。
下面是一个可能的白盒测试方案:
```
void test_Search()
{
int somearray[5] = {0, 1, 2, 3, 4};
int size = 5;
int value = 2;
// 边界条件覆盖
assert(Search(somearray, 0, value) == -1); // 空数组
assert(Search(somearray, 1, 0) == -1); // 数组只有一个元素,不等于value
assert(Search(somearray, 1, 0) == 0); // 数组只有一个元素,等于value
assert(Search(somearray, 5, 0) == 0); // 数组第一个元素等于value
assert(Search(somearray, 5, 4) == 4); // 数组最后一个元素等于value
assert(Search(somearray, 5, 2) == 2); // 数组中间一个元素等于value
assert(Search(somearray, 5, -1) == -1); // 数组中没有等于value的元素,比最小元素还小
assert(Search(somearray, 5, 5) == -1); // 数组中没有等于value的元素,比最大元素还大
// 语句覆盖
int ret = Search(somearray, size, value);
assert(ret == 2);
// 分支覆盖
value = -1;
ret = Search(somearray, size, value);
assert(ret == -1);
// 路径覆盖
somearray[0] = -1;
value = -1;
ret = Search(somearray, size, value);
assert(ret == 0);
}
```