C语言字符串查找函数findr()的黑盒测试分析
C语言字符串查找函数findr()的黑盒测试分析
本文将对以下C语言字符串查找函数findr()进行黑盒测试分析,并提供测试用例和结果。
int findr(char* str, char* sub) {
char *i,*j,*k,*n;
int l,m;
int len_str,len_sub;
len_str = 0;
len_sub = 0;
i = str;
j = sub;
while(*i != '�') {
i++;
len_str++;
}
i--;
while(*j != '�') {
j++;
len_sub++;
}
j--;
n = j;
for(l = len_str;l >= len_str - len_sub + 1;l--) {
k = i;
for(m = 1;m <= len_sub; m++) {
if(*k == *j) {
k--;
j--;
} else {
break;
}
}
if(m > len_sub) {
break;
}
i--;
j = n;
}
if(l < len_str - len_sub + 1) {
return -1;
} else {
return (l - len_sub + 1);
}
}
黑盒测试方法
本文采用等价类划分和边界值分析两种黑盒测试方法。
等价类划分
- 输入字符串和子字符串都为空字符串。
- 输入字符串为空字符串。
- 输入子字符串为空字符串。
- 输入字符串和子字符串都为非空字符串,但是子字符串不在字符串中。
- 输入字符串和子字符串都为非空字符串,且子字符串在字符串中。
边界值分析
- 输入字符串和子字符串都为空字符串。
- 输入字符串为空字符串,子字符串为非空字符串。
- 输入子字符串为空字符串,字符串为非空字符串。
- 输入字符串和子字符串都为非空字符串,但是子字符串不在字符串中。
- 输入字符串和子字符串都为非空字符串,且子字符串在字符串的开头。
- 输入字符串和子字符串都为非空字符串,且子字符串在字符串的结尾。
- 输入字符串和子字符串都为非空字符串,且子字符串在字符串的中间。
具体用例数据及测试结果
| 序号 | 输入字符串 (str) | 输入子字符串 (sub) | 预期输出 | 实际输出 | 测试结果 | |---|---|---|---|---|---| | 1 | "" | "" | -1 | -1 | 正确 | | 2 | "" | "abc" | -1 | -1 | 正确 | | 3 | "abc" | "" | -1 | -1 | 正确 | | 4 | "abcdefg" | "hij" | -1 | -1 | 正确 | | 5 | "abcdefg" | "abc" | 0 | 0 | 正确 | | 6 | "abcdefg" | "efg" | 4 | 4 | 正确 | | 7 | "abcdefg" | "cde" | 2 | 2 | 正确 |
测试结论
根据以上测试结果,该函数通过了所有的测试用例,没有发现问题。
修改后的代码
无需修改。
原文地址: https://www.cveoy.top/t/topic/ojTa 著作权归作者所有。请勿转载和采集!