对Word函数,运用修正条件/判定覆盖法进行测试用例设计。 。 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"); } }
时间: 2024-04-05 09:30:39 浏览: 50
首先需要明确该函数的功能和输入输出。该函数的功能是进行猜词游戏,输入包括一个整数n和一个字符串word,输出为游戏结果。
接下来考虑修正条件/判定覆盖法。首先需要确定程序中的条件,包括if和while语句中的条件。根据代码,可以发现以下条件:
1. number!= 1
2. number==1
3. word[a] == alphabet
4. word[num]== alphabet
5. a == n - 1
接下来根据条件进行判定覆盖的测试用例设计:
1. number!=1, word不等于目标单词
2. number!=1, word等于目标单词
3. number==1, word不等于目标单词
4. number==1, word等于目标单词
5. word包含一个字母
6. word包含多个字母
对于每个测试用例,需要确定输入和期望输出。例如,对于测试用例1,输入可以是n为5,word为"apple",期望输出应该是游戏结束,输出"You lose."。
通过这种方式,可以设计出一组完整的测试用例,覆盖程序中的所有条件,并且保证程序能够正确地运行。
相关问题
对Word函数,运用修正条件/判定覆盖法进行测试用例设计。 。 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"); } } 根据上述描述,实现修正条件判定覆盖的测试用例设计。
首先,需要找出判定条件,即代码中的if语句和while语句。根据代码,可以得到以下判定条件:
1. if (number != 1)
2. if (word[a] == alphabet)
3. if (a == n - 1)
4. if (word[num] == alphabet)
5. while (number != 0 && strcmp(initialword, word) != 0)
接下来,我们需要确定修正条件,即使判定条件为真或假的输入值。通过代码分析,我们可以得到以下修正条件:
1. 当number不等于1时,输入任何值都应该可以执行语句块内的代码。
2. 当word[a]等于alphabet时,输入任何值都应该可以执行语句块内的代码。
3. 当a等于n-1时,输入任何值都应该可以执行语句块内的代码。
4. 当word[num]等于alphabet时,输入任何值都应该可以执行语句块内的代码。
5. 当number不等于0并且initialword不等于word时,输入任何值都应该可以执行语句块内的代码。
最后,根据判定条件和修正条件,可以得到以下测试用例:
1. number != 1, word[a] != alphabet, a != n-1, word[num] != alphabet, number != 0 && strcmp(initialword, word) != 0
2. number != 1, word[a] == alphabet, a != n-1, word[num] != alphabet, number != 0 && strcmp(initialword, word) != 0
3. number != 1, word[a] != alphabet, a == n-1, word[num] != alphabet, number != 0 && strcmp(initialword, word) != 0
4. number != 1, word[a] != alphabet, a != n-1, word[num] == alphabet, number != 0 && strcmp(initialword, word) != 0
5. number == 1, word[a] != alphabet, a != n-1, word[num] != alphabet, number != 0 && strcmp(initialword, word) != 0
6. number != 1, word[a] != alphabet, a != n-1, word[num] != alphabet, number == 0 || strcmp(initialword, word) == 0
这些测试用例可以覆盖所有的判定和修正条件,从而保证代码的完整性和正确性。
对Word函数,运用修正条件/判定覆盖法进行测试用例设计并生成表格。 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"); } }
修正条件/判定覆盖法是一种黑盒测试设计方法,通过对输入条件的各种组合进行测试,以确保程序能够正确地处理各种情况。对于给定的函数Word,我们可以根据以下步骤来进行测试用例设计:
1. 确定输入条件
函数Word有两个输入参数n和word,其中n表示待猜测单词的长度,word表示待猜测的单词。我们需要确定输入条件的取值范围和可能的取值组合。
2. 确定输出条件
函数Word的输出结果有两种可能,一种是猜对了单词,输出“You guessed the word: %s\n You win.\n”,另一种是猜错了单词,输出“You lose.\n”。
3. 设计测试用例
根据修正条件/判定覆盖法,我们需要设计测试用例,以覆盖所有可能的输入条件组合。
首先,我们需要设计满足输入条件的测试用例,包括:
- n为正整数,word为长度为n的字符串
- n为0,word为任意字符串
- n为负整数,word为任意字符串
然后,我们需要设计满足输出条件的测试用例,包括:
- 猜错单词,输出“You lose.\n”
- 猜对单词,输出“You guessed the word: %s\n You win.\n”
最后,我们需要设计覆盖输入条件的所有可能组合的测试用例,包括:
- n为1,word为一个字母
- n为2,word为两个不同字母
- n为3,word为三个不同字母
- n为3,word为两个相同字母和一个不同字母
- n为4,word为四个不同字母
- n为4,word为三个不同字母和一个相同字母
- n为4,word为两个相同字母和两个不同字母
- n为4,word为四个相同字母
根据上述测试用例,我们可以生成如下的测试用例设计表格:
| 测试用例编号 | 输入条件 | 输出条件 |
| ------------ | ------------------- | -------------- |
| TC1 | n = 1, word = 'a' | 猜对单词 |
| TC2 | n = 2, word = 'ab' | 猜对单词 |
| TC3 | n = 3, word = 'abc' | 猜对单词 |
| TC4 | n = 3, word = 'aac' | 猜对单词 |
| TC5 | n = 4, word = 'abcd' | 猜对单词 |
| TC6 | n = 4, word = 'aabc' | 猜对单词 |
| TC7 | n = 4, word = 'abbc' | 猜对单词 |
| TC8 | n = 4, word = 'aaaa' | 猜对单词 |
| TC9 | n = 0, word = '' | 猜错单词 |
| TC10 | n = -1, word = 'a' | 猜错单词 |
| TC11 | n = 1, word = 'b' | 猜错单词 |
| TC12 | n = 2, word = 'bb' | 猜错单词 |
| TC13 | n = 3, word = 'bbc' | 猜错单词 |
| TC14 | n = 4, word = 'abcc' | 猜错单词 |
需要注意的是,我们在设计测试用例时,应该尽可能地覆盖所有可能的输入条件组合,但不一定需要覆盖所有语句、分支和路径。在实际测试中,我们可能需要根据实际情况进行调整和补充。
阅读全文