修正条件判定覆盖测试用例设计 - 以猜字游戏为例
修正条件判定覆盖是一种测试用例设计方法,旨在覆盖所有可能的条件判定组合,以确保代码在各种情况下都能正确地运行。下面是实现修正条件判定覆盖的测试用例设计,以一个简单的猜字游戏为例:
void Word(int n, char *word) {
void *cat;
cat = malloc((sizeof(char) * n) + 1);
char *initialword = cat;
startWord(initialword, n);
int number = 8, a = 0, num = 0;
char alphabet;
while (number != 0 && strcmp(initialword, word) != 0) {
printf("The word now looks like this: %s\n", initialword);
if (number != 1) {
printf("You have %d guesses left.\n", number);
} else {
printf("You have only one guess left.\n");
}
alphabet = LetterFromUser();
for (a = 0; word[a] != '\0'; a++) {
if (word[a] == alphabet) {
initialword[a] = alphabet;
num = a;
number++;
} else if (a == n - 1) {
number--;
}
}
if (word[num] == alphabet) {
printf("That guess is correct.\n");
} else {
printf("That are no %c's in the word.\n", alphabet);
}
}
if (strcmp(initialword, word) == 0) {
printf("You guessed the word: %s\n", word);
printf("You win.\n");
} else {
printf("You lose.\n");
}
}
测试用例设计:
- 初始化变量: n = 5, word = "hello"
- number != 0 && strcmp(initialword, word) != 0: 执行while循环
- number != 1: 输出"You have 8 guesses left."
- 输入'a': alphabet = 'a'
- word[a] == alphabet: 执行if语句块,修改initialword的值,num = 0,number = 9
- word[num] == alphabet: 输出"That guess is correct."
- number != 0 && strcmp(initialword, word) != 0: 执行while循环
- number != 1: 输出"You have 9 guesses left."
- 输入'b': alphabet = 'b'
- word[a] != alphabet && a == n - 1: 执行else if语句块,number = 8
- word[num] != alphabet: 输出"That are no b's in the word."
- number != 0 && strcmp(initialword, word) != 0: 执行while循环
- number != 1: 输出"You have 7 guesses left."
- 输入'c': alphabet = 'c'
- word[a] != alphabet && a == n - 1: 执行else if语句块,number = 6
- word[num] != alphabet: 输出"That are no c's in the word."
- number != 0 && strcmp(initialword, word) != 0: 执行while循环
- number != 1: 输出"You have 6 guesses left."
- 输入'd': alphabet = 'd'
- word[a] != alphabet && a == n - 1: 执行else if语句块,number = 5
- word[num] != alphabet: 输出"That are no d's in the word."
- number != 0 && strcmp(initialword, word) != 0: 执行while循环
- number != 1: 输出"You have 5 guesses left."
- 输入'e': alphabet = 'e'
- word[a] == alphabet: 执行if语句块,修改initialword的值,num = 1,number = 6
- word[num] == alphabet: 输出"That guess is correct."
- number != 0 && strcmp(initialword, word) != 0: 执行while循环
- number != 1: 输出"You have 6 guesses left."
- 输入'f': alphabet = 'f'
- word[a] != alphabet && a == n - 1: 执行else if语句块,number = 5
- word[num] != alphabet: 输出"That are no f's in the word."
- number != 0 && strcmp(initialword, word) != 0: 执行while循环
- number != 1: 输出"You have 5 guesses left."
- 输入'g': alphabet = 'g'
- word[a] != alphabet && a == n - 1: 执行else if语句块,number = 4
- word[num] != alphabet: 输出"That are no g's in the word."
- number != 0 && strcmp(initialword, word) != 0: 执行while循环
- number != 1: 输出"You have 4 guesses left."
- 输入'h': alphabet = 'h'
- word[a] == alphabet: 执行if语句块,修改initialword的值,num = 4,number = 5
- word[num] == alphabet: 输出"That guess is correct."
- number != 0 && strcmp(initialword, word) != 0: 执行while循环
- number != 1: 输出"You have 5 guesses left."
- 输入'i': alphabet = 'i'
- word[a] != alphabet && a == n - 1: 执行else if语句块,number = 4
- word[num] != alphabet: 输出"That are no i's in the word."
- number != 0 && strcmp(initialword, word) != 0: 执行while循环
- number != 1: 输出"You have 4 guesses left."
- 输入'j': alphabet = 'j'
- word[a] != alphabet && a == n - 1: 执行else if语句块,number = 3
- word[num] != alphabet: 输出"That are no j's in the word."
- number != 0 && strcmp(initialword, word) != 0: 执行while循环
- number != 1: 输出"You have 3 guesses left."
- 输入'k': alphabet = 'k'
- word[a] != alphabet && a == n - 1: 执行else if语句块,number = 2
- word[num] != alphabet: 输出"That are no k's in the word."
- number != 0 && strcmp(initialword, word) != 0: 执行while循环
- number != 1: 输出"You have 2 guesses left."
- 输入'l': alphabet = 'l'
- word[a] == alphabet: 执行if语句块,修改initialword的值,num = 3,number = 3
- word[num] == alphabet: 输出"That guess is correct."
- number != 0 && strcmp(initialword, word) != 0: 执行while循环
- number != 1: 输出"You have 3 guesses left."
- 输入'm': alphabet = 'm'
- word[a] != alphabet && a == n - 1: 执行else if语句块,number = 2
- word[num] != alphabet: 输出"That are no m's in the word."
- number != 0 && strcmp(initialword, word) != 0: 执行while循环
- number != 1: 输出"You have 2 guesses left."
- 输入'n': alphabet = 'n'
- word[a] != alphabet && a == n - 1: 执行else if语句块,number = 1
- word[num] != alphabet: 输出"That are no n's in the word."
- number != 0 && strcmp(initialword, word) != 0: 执行while循环
- number == 1: 输出"You have only one guess left."
- 输入'o': alphabet = 'o'
- word[a] == alphabet: 执行if语句块,修改initialword的值,num = 2,number = 2
- word[num] == alphabet: 输出"That guess is correct."
- strcmp(initialword, word) == 0: 执行if语句块,输出"You guessed the word: hello"和"You win."
以上测试用例涵盖了所有可能的条件判定组合,确保代码在各种情况下都能正确地运行。
原文地址: https://www.cveoy.top/t/topic/owFE 著作权归作者所有。请勿转载和采集!