设计测试下列函数的测试方案: 函数Search(somearray,size,value)的功能是,在一个整数数组somearray中搜索一个值为value的整数,如果数组中有这个数,则函数值等于该数的下标,否则函数值等于-1。数组的长度由参数size指定。假定数组第一个元素的下标为1。用c语言实现此函数,并且由此设计白盒测试方案。
时间: 2024-02-09 20:09:35 浏览: 80
关于搜索功能的测试用例
3星 · 编辑精心推荐
下面是函数Search的C语言实现:
```
int Search(int somearray[], int size, int value)
{
int i;
for (i = 1; i <= size; i++) {
if (somearray[i] == value) {
return i;
}
}
return -1;
}
```
基于代码实现的白盒测试方案需要考虑以下几个方面:
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) == 1); // 数组只有一个元素,等于value
assert(Search(somearray, 5, 0) == 1); // 数组第一个元素等于value
assert(Search(somearray, 5, 4) == 5); // 数组最后一个元素等于value
assert(Search(somearray, 5, 2) == 3); // 数组中间一个元素等于value
assert(Search(somearray, 5, -1) == -1); // 数组中没有等于value的元素,比最小元素还小
assert(Search(somearray, 5, 5) == -1); // 数组中没有等于value的元素,比最大元素还大
// 语句覆盖
int ret = Search(somearray, size, value);
assert(ret == 3);
// 分支覆盖
value = -1;
ret = Search(somearray, size, value);
assert(ret == -1);
// 路径覆盖
somearray[0] = -1;
value = -1;
ret = Search(somearray, size, value);
assert(ret == 0);
}
```
阅读全文