首页 > 解决方案 > 如何测试排名系统?

问题描述

假设我们一个班有 3 名学生并获得以下分数

================================================
| | 数学 | 英语 | 科学 | 排名 |
|----------------------------------------------
|标记 | 60 | 40 | 80 | 2 |
|----------------------------------------------
|约翰 | 40 | 30 | 50 | 3 |
|----------------------------------------------
|爱丽丝 | 60 | 60 | 70 | 1 |
================================================

通常,排名是通过添加所有三个标记来决定的。查看上表,排名顺序为 Alice、Mark、John。

如果存在一个以学生分数作为输入并根据他们的排名给出学生姓名列表的系统,那么我如何证明系统为所有可能的数据集返回了正确的学生列表?

测试这样一个系统的方法应该是什么?当学生和科目的数量增加时,生成所有可能的数据组合将是详尽无遗的。

标签: validationtestingdatasetautomated-testsfunctional-testing

解决方案


鉴于这是黑盒测试,我会像这样处理测试任务:

  • 验证排名是否确实适用于简单的数据集(烟雾测试)
  • 当 2 个或更多学生得分相同时,验证排名是否有效
  • 验证当数据集包含分数缺失、负分(如果可能!?)或分数大于允许值的学生时排名计算是否有效
  • 鉴于上下文(学生和科目),我假设可以创建一个真实的数据集。验证这是否正确处理。
  • 创建第二个数据集,其中学生和科目的数量不切实际(例如,比您的实际数据集大 100 %) - 尝试将其扔给它 :)
  • 数据集缺少学生姓名,但该行存在学科标记
  • 与上述相同,但缺少主题,但所有行都存在主题标记
  • 一个没有分数但有学生和科目的数据集

根据我上面建议的测试,我不会担心所有可能的数据组合。不过,如果您有代码访问权限,像 xUnit 这样的单元测试工具可以帮助您测试所有可能的组合(如果您定义了参数)

希望这可以帮助 :)


推荐阅读