【发布时间】:2010-09-09 04:22:54
【问题描述】:
我正在准备一些关于单元测试的教育/培训材料,并想仔细检查一些词汇。
在我使用的示例中,开发人员测试了Facade 的所有 个可能的输入,但没有测试“背后”更精细的单元。
如果测试涵盖了整个输入范围,人们还会说测试具有“全面覆盖”吗?我觉得“完全覆盖”通常用于表示代码/单元的覆盖......但在测试所有可能的输入时肯定会有完全的某事。
我要找的另一个词是什么?
【问题讨论】:
我正在准备一些关于单元测试的教育/培训材料,并想仔细检查一些词汇。
在我使用的示例中,开发人员测试了Facade 的所有 个可能的输入,但没有测试“背后”更精细的单元。
如果测试涵盖了整个输入范围,人们还会说测试具有“全面覆盖”吗?我觉得“完全覆盖”通常用于表示代码/单元的覆盖......但在测试所有可能的输入时肯定会有完全的某事。
我要找的另一个词是什么?
【问题讨论】:
如果所有可能的输入都没有为您提供 100% 的代码覆盖率,那么您有 100%场景覆盖率,但不是完整的代码覆盖率。
关于这一点,如果你有 100% 的场景覆盖率而没有完整的代码覆盖率,那么你就有死代码,你应该认真思考它为什么存在。
【讨论】:
如果您决定使用“完全覆盖”,那么您可能会遇到麻烦,因为大多数谈论覆盖率的文献(实际上,测量覆盖率的工具也是如此)谈论的是在被测代码中执行的代码行在运行所有测试之后。
您提出的测试用例将覆盖函数的域(假设函数至少是一对一的,它们也将覆盖该范围)。
【讨论】:
它是所涉及类的完整代码覆盖,但显然不是完整的系统源代码。工具可以在不同的层次上提供这一点。
请注意,它不能保证代码是正确的,因为它可能遗漏了需要完全处理的场景(在测试代码和功能代码中)。此外,测试可能会触发所有代码路径并且无法正确断言。
【讨论】: