-
1 电子教材
-
2 PPT
例如,如果已经编制了一个为学生标准化考试批阅试卷,产生成绩报告的程序。其规格说明如下。
程序的输入文件由一些有80个字符的记录(卡片)组成。所有这些记录分为3组。
Ø 标题。这一组只有一个记录,其内容是成绩报告的名字。
Ø 各题的标准答案。每个记录均在第80个字符处标以数字“2”。该组的第1个记录的第1~3个字符为试题数(取值为 1~999 )。第 10~59 个字符给出第1~50题的标准答案(每个合法字符表示一个答案)。该组的第2、第3……第N个记录相应为第 51~100题、第101~150题等的标准答案。
Ø 学生的答卷。每个记录均在第80个字符处标以数字“3”。每个学生的答卷在若干个记录中给出。比如,甲某的第1个记录第1~9个字符给出学生的学号,第10~59个字符列出的是甲某所做的第1~50 题的解答。若试题数超过50 ,则其第2 、第3……第 N 个记录分别给出他的第51~100题、第101~150题等的解答。然后是乙某的答卷记录。
程序的输出有4个报告:
Ø 按学号排列的成绩单,列出每个学生的成绩(百分制)、名次。
Ø 按学生成绩排序的成绩单。

图 7-3 学生考核评分和成绩统计程序输入数据形式
Ø 平均分数及标准偏差的报告。
Ø 试题分析报告。按试题号排列,列出各题学生答对的百分比。
表7-5、表7-6 分别列出根据输入条件、输出条件和边界条件所选择的测试用例。
表7-5 学生考卷评分和成绩统计程序的测试用例(一)
| 输入文件 | 测试用例 |
| 输入文件 | 空输入文件 |
| 标题 | 没有标题记录 标题只有一个字符 标题有80个字符 |
| 试题数 | 试题数为1 试题数为50 试题数为51 试题数为100 试题数为999 试题数为0 试题数含有非数字字符 |
| 标准答案记录 | 没有标准答案记录,有标题 标准答案记录多一个 标准答案记录少一个 |
| 学生人数 | 0个学生 1个学生 200个学生 201个学生 |
| 学生答题 | 某学生只有一个答案记录,但有两个标准答案记录 该学生是文件中的第1个学生 该学生是文件中最后1个学生(记录数出错的学生) |
| 学生答题 | 某学生有两个答案记录,但只有一个标准答案记录 该学生是文件中第1个学生(指记录数出错的学生) 该学生是文件中最后一个学生 |
表7-6 学生考卷评分和成绩统计程序的测试用例(二)
| 输入文件 | 测试用例 |
| 学生成绩 | 所有学生的成绩都相等 每个学生的成绩都互不相同 部分(不是全体)学生的成绩相同(检查是否能按成绩正确排名次) 有个学生得0分 有个学生得100分 |
| 输出报告 1)、2) | 有个学生的学号最小(检查按学号排序是否正确) 有个学生的学号最大(检查按学号排序是否正确) 适当的学生人数,使产生的报告刚好印满一页(检查打印页数) 学生人数比刚才多出一人(检查打印换页) |
| 输出报告 3) | 平均成绩为100分(所有学生都得满分) 平均成绩都得0分(所有学生都得0分) 标准偏差为最大值(有一半学生得0分,其他100分) 标准偏差为0(所有学生的成绩都相等) |
| 输出报告 4) | 所有学生都答对了第1题 所有学生都答错了第1题 所有学生都答对了最后1题 所有学生都答错了最后2题 选择适当的试题数,使第4个报告刚好打满一页 试题数比刚才多1题,使报告打满一页后,刚好剩下一题未打 |
有经验的程序员都会承认,上述43个测试用例可以发现在程序中大部分常见的错误。如果用随机方法设计测试用例不一定会发现这些错误。如果使用得当,边界值分析方法是很有效的。这个方法看起来似乎很简单,但是由于许多程序中的边界情况很复杂,要找出适当的测试用例还需针对问题的输入域、输出域边界,耐心细致地逐个考虑。
加法器程序计算两个 1 ~100 之间整数的和。
对于加法器程序,根据输人要求可将输人空间划分为三个等价类,即1个有效等价类 (1~100之间),两个无效等价类( < 1 , > 100 )。但这种等价类划分不是很完善,只考虑了输人数据的取值范围,而没有考虑输人数据的类型,我们认为输人应为整数,但用户输入什么都有可能。测试用例如表 7-7所示。
表7-7 加法器程序测试用例
| 测试用例 | 输入数据 | 预期输出 | |
| 加数1 | 加数2 | 和 | |
| Test 1 | 1 | 50 | 51 |
| Test 2 | 2 | 50 | 52 |
| Test 3 | 99 | 50 | 149 |
| Test 4 | 100 | 50 | 150 |
| Test 5 | 50 | 1 | 51 |
| Test 6 | 50 | 2 | 52 |
| Test 7 | 50 | 99 | 149 |
| Test 8 | 50 | 100 | 150 |
| Test 9 | 0 | 50 | 提示“请输入1~100间的整数” |
| Test 10 | 50 | 0 | 提示“请输入1~100间的整数” |
| Test 11 | 101 | 50 | 提示“请输入1~100间的整数” |
| Test 12 | 50 | 101 | 提示“请输入1~100间的整数” |
| Test 13 | 0.2 | 50 | 提示“请输入1~100间的整数” |
| Test 14 | 50 | 0.2 | 提示“请输入1~100间的整数” |
| Test 15 | A | 50 | 提示“请输入1~100间的整数” |
| Test 16 | 50 | A | 提示“请输入1~100间的整数” |
| Test 17 | @ | 50 | 提示“请输入1~100间的整数” |
| Test 18 | 50 | @ | 提示“请输入1~100间的整数” |
| Test 19 | 空格 | 50 | 提示“请输入1~100间的整数” |
| Test 20 | 50 | 空格 | 提示“请输入1~100间的整数” |
| Test 21 | 50 | 提示“请输入1~100间的整数” | |
| Test 22 | 50 | 提示“请输入1~100间的整数” | |

