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);
  }
}

黑盒测试方法

本文采用等价类划分和边界值分析两种黑盒测试方法。

等价类划分

  1. 输入字符串和子字符串都为空字符串。
  2. 输入字符串为空字符串。
  3. 输入子字符串为空字符串。
  4. 输入字符串和子字符串都为非空字符串,但是子字符串不在字符串中。
  5. 输入字符串和子字符串都为非空字符串,且子字符串在字符串中。

边界值分析

  1. 输入字符串和子字符串都为空字符串。
  2. 输入字符串为空字符串,子字符串为非空字符串。
  3. 输入子字符串为空字符串,字符串为非空字符串。
  4. 输入字符串和子字符串都为非空字符串,但是子字符串不在字符串中。
  5. 输入字符串和子字符串都为非空字符串,且子字符串在字符串的开头。
  6. 输入字符串和子字符串都为非空字符串,且子字符串在字符串的结尾。
  7. 输入字符串和子字符串都为非空字符串,且子字符串在字符串的中间。

具体用例数据及测试结果

| 序号 | 输入字符串 (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 | 正确 |

测试结论

根据以上测试结果,该函数通过了所有的测试用例,没有发现问题。

修改后的代码

无需修改。

C语言字符串查找函数findr()的黑盒测试分析

原文地址: https://www.cveoy.top/t/topic/ojTa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录