修正条件判定覆盖是一种测试用例设计方法,旨在覆盖所有可能的条件判定组合,以确保代码在各种情况下都能正确地运行。下面是实现修正条件判定覆盖的测试用例设计,以一个简单的猜字游戏为例:

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

测试用例设计:

  1. 初始化变量: n = 5, word = "hello"
  2. number != 0 && strcmp(initialword, word) != 0: 执行while循环
  3. number != 1: 输出"You have 8 guesses left."
  4. 输入'a': alphabet = 'a'
  5. word[a] == alphabet: 执行if语句块,修改initialword的值,num = 0,number = 9
  6. word[num] == alphabet: 输出"That guess is correct."
  7. number != 0 && strcmp(initialword, word) != 0: 执行while循环
  8. number != 1: 输出"You have 9 guesses left."
  9. 输入'b': alphabet = 'b'
  10. word[a] != alphabet && a == n - 1: 执行else if语句块,number = 8
  11. word[num] != alphabet: 输出"That are no b's in the word."
  12. number != 0 && strcmp(initialword, word) != 0: 执行while循环
  13. number != 1: 输出"You have 7 guesses left."
  14. 输入'c': alphabet = 'c'
  15. word[a] != alphabet && a == n - 1: 执行else if语句块,number = 6
  16. word[num] != alphabet: 输出"That are no c's in the word."
  17. number != 0 && strcmp(initialword, word) != 0: 执行while循环
  18. number != 1: 输出"You have 6 guesses left."
  19. 输入'd': alphabet = 'd'
  20. word[a] != alphabet && a == n - 1: 执行else if语句块,number = 5
  21. word[num] != alphabet: 输出"That are no d's in the word."
  22. number != 0 && strcmp(initialword, word) != 0: 执行while循环
  23. number != 1: 输出"You have 5 guesses left."
  24. 输入'e': alphabet = 'e'
  25. word[a] == alphabet: 执行if语句块,修改initialword的值,num = 1,number = 6
  26. word[num] == alphabet: 输出"That guess is correct."
  27. number != 0 && strcmp(initialword, word) != 0: 执行while循环
  28. number != 1: 输出"You have 6 guesses left."
  29. 输入'f': alphabet = 'f'
  30. word[a] != alphabet && a == n - 1: 执行else if语句块,number = 5
  31. word[num] != alphabet: 输出"That are no f's in the word."
  32. number != 0 && strcmp(initialword, word) != 0: 执行while循环
  33. number != 1: 输出"You have 5 guesses left."
  34. 输入'g': alphabet = 'g'
  35. word[a] != alphabet && a == n - 1: 执行else if语句块,number = 4
  36. word[num] != alphabet: 输出"That are no g's in the word."
  37. number != 0 && strcmp(initialword, word) != 0: 执行while循环
  38. number != 1: 输出"You have 4 guesses left."
  39. 输入'h': alphabet = 'h'
  40. word[a] == alphabet: 执行if语句块,修改initialword的值,num = 4,number = 5
  41. word[num] == alphabet: 输出"That guess is correct."
  42. number != 0 && strcmp(initialword, word) != 0: 执行while循环
  43. number != 1: 输出"You have 5 guesses left."
  44. 输入'i': alphabet = 'i'
  45. word[a] != alphabet && a == n - 1: 执行else if语句块,number = 4
  46. word[num] != alphabet: 输出"That are no i's in the word."
  47. number != 0 && strcmp(initialword, word) != 0: 执行while循环
  48. number != 1: 输出"You have 4 guesses left."
  49. 输入'j': alphabet = 'j'
  50. word[a] != alphabet && a == n - 1: 执行else if语句块,number = 3
  51. word[num] != alphabet: 输出"That are no j's in the word."
  52. number != 0 && strcmp(initialword, word) != 0: 执行while循环
  53. number != 1: 输出"You have 3 guesses left."
  54. 输入'k': alphabet = 'k'
  55. word[a] != alphabet && a == n - 1: 执行else if语句块,number = 2
  56. word[num] != alphabet: 输出"That are no k's in the word."
  57. number != 0 && strcmp(initialword, word) != 0: 执行while循环
  58. number != 1: 输出"You have 2 guesses left."
  59. 输入'l': alphabet = 'l'
  60. word[a] == alphabet: 执行if语句块,修改initialword的值,num = 3,number = 3
  61. word[num] == alphabet: 输出"That guess is correct."
  62. number != 0 && strcmp(initialword, word) != 0: 执行while循环
  63. number != 1: 输出"You have 3 guesses left."
  64. 输入'm': alphabet = 'm'
  65. word[a] != alphabet && a == n - 1: 执行else if语句块,number = 2
  66. word[num] != alphabet: 输出"That are no m's in the word."
  67. number != 0 && strcmp(initialword, word) != 0: 执行while循环
  68. number != 1: 输出"You have 2 guesses left."
  69. 输入'n': alphabet = 'n'
  70. word[a] != alphabet && a == n - 1: 执行else if语句块,number = 1
  71. word[num] != alphabet: 输出"That are no n's in the word."
  72. number != 0 && strcmp(initialword, word) != 0: 执行while循环
  73. number == 1: 输出"You have only one guess left."
  74. 输入'o': alphabet = 'o'
  75. word[a] == alphabet: 执行if语句块,修改initialword的值,num = 2,number = 2
  76. word[num] == alphabet: 输出"That guess is correct."
  77. strcmp(initialword, word) == 0: 执行if语句块,输出"You guessed the word: hello"和"You win."

以上测试用例涵盖了所有可能的条件判定组合,确保代码在各种情况下都能正确地运行。

修正条件判定覆盖测试用例设计 - 以猜字游戏为例

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

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