【问题标题】:Unit Testing Vocabulary: "coverage"单元测试词汇:“覆盖”
【发布时间】:2010-09-09 04:22:54
【问题描述】:

我正在准备一些关于单元测试的教育/培训材料,并想仔细检查一些词汇。

在我使用的示例中,开发人员测试了Facade所有 个可能的输入,但没有测试“背后”更精细的单元。

如果测试涵盖了整个输入范围,人们还会说测试具有“全面覆盖”吗?我觉得“完全覆盖”通常用于表示代码/单元的覆盖......但在测试所有可能的输入时肯定会有完全的某事

我要找的另一个词是什么?

【问题讨论】:

    标签: unit-testing vocabulary


    【解决方案1】:

    如果所有可能的输入都没有为您提供 100% 的代码覆盖率,那么您有 100%场景覆盖率,但不是完整的代码覆盖率

    关于这一点,如果你有 100% 的场景覆盖率而没有完整的代码覆盖率,那么你就有死代码,你应该认真思考它为什么存在。

    【讨论】:

    • 谢谢!我喜欢这个答案 - scenariocode 的使用似乎是单元测试 101 类型环境最容易访问的选项。这个答案也让我思考了我对代码覆盖率的定义,并意识到我有点把它和独立性混淆了!谢谢:D
    【解决方案2】:

    如果您决定使用“完全覆盖”,那么您可能会遇到麻烦,因为大多数谈论覆盖率的文献(实际上,测量覆盖率的工具也是如此)谈论的是在被测代码中执行的代码行在运行所有测试之后。

    您提出的测试用例将覆盖函数的域(假设函数至少是一对一的,它们也将覆盖该范围)。

    【讨论】:

    • +1 谢谢!我将使用“场景覆盖”,因为我在快速的 Google 搜索中发现了更多信息,并且觉得它对于进行类似单元测试 101 的人来说更容易访问。
    【解决方案3】:

    它是所涉及类的完整代码覆盖,但显然不是完整的系统源代码。工具可以在不同的层次上提供这一点。

    请注意,它不能保证代码是正确的,因为它可能遗漏了需要完全处理的场景(在测试代码和功能代码中)。此外,测试可能会触发所有代码路径并且无法正确断言。

    【讨论】:

    • 我忘了提到Facade 也有一些未经测试的“帮助”方法——也就是说,它故意不完整的代码覆盖。您的第二点非常正确,这就是练习的目的;向他们展示他们想要认为是“完全覆盖”的东西,然后解释为什么它不是:)
    猜你喜欢
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    相关资源
    最近更新 更多