【问题标题】:How do I test a ranking system? [closed]如何测试排名系统? [关闭]
【发布时间】:2018-12-26 12:29:34
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: validation testing dataset automated-tests functional-testing


    【解决方案1】:

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

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

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

    希望这会有所帮助:)

    【讨论】:

      【解决方案2】:

      除了上面的答案:

      • 边框大小写 - 当标记在边框上时 - 0 , 100
      • 边界案例 - 分数不同,但排名相同 - 第一、最后、中学生
      • 边界案例 - 重复名称或主题(例如有 2 个约翰的班级)
      • 错误案例 - 名称或主题存在但无效(数字、空字符串、null 等)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-03
        • 1970-01-01
        • 2017-11-04
        • 2013-03-14
        • 1970-01-01
        相关资源
        最近更新 更多