下面给出的过程是必需的,以查找和替换某些字符在阵列A供给到被替换阵列oldc被提供的字符的输入内,而它们各自的替换字符以阵列NEWC供给。数组A的固定长度为五个字符,而数组oldc和newc分别包含三个字符。但是,该程序是有缺陷的
void find_and_replace(char *A, char *oldc, char *newc) {
for (int i = 0; i < 5; i++)
for (int j = 0; j < 3; j++)
if (A[i] == oldc[j]) A[i] = newc[j];
}
使用以下四个测试用例测试了该过程
(1)oldc =“ abc”,newc =“ dab”
(2)oldc =“ cde”,newc =“ bcd”
(3)oldc =“ bca”,newc =“ cda”
(4)oldc =“ abc”,newc =“ bac”
测试人员现在可以在长度为5的所有输入字符串(包括字符“ a”,“ b”,“ c”,“ d”和“ e”)上测试程序,并允许重复。如果测试人员使用上面给出的四个测试用例执行此测试,那么有多少个测试用例将能够捕获缺陷?
(一)只有一个
(B)只有两个
(C)只有三个
(D)全部四个答案: (B)
说明:测试案例3和4是捕获缺陷的唯一案例。当旧字符替换为新字符,新字符再次替换为新字符时,代码无法正常工作。这在测试用例(1)和(2)中不会发生,仅在情况(3)和(4)中会发生。
这个问题的测验