unit-testing - 单元测试-实用性 : Should it pass or fail all or most of the time?

标签 unit-testing agile

实用性的角度来看,这是一个关于单元测试的哲学问题:测试用例应该在全部还是大部分时间通过还是失败?

几点:

  1. 如果您正在练习 TDD,单元测试最初预计会失败。重点是你开始开发 https://en.wikipedia.org/wiki/Test-driven_development

  2. 如果单元测试始终失败,而软件仍然发布到生产环境 - 这仅仅意味着开发人员没有修复测试用例,或者测试用例不相关/无用。

  3. 如果单元测试始终失败,并且软件发布到生产环境 - 这意味着开发人员在生产发布之前仍有工作要做。

  4. 如果单元测试从未失败,这是否也表明测试用例无用? 但是,这让我想起了《泰坦尼克号》:)

我提到了实用性 - 测试用例的开发也需要时间/资源。编写太多无用的测试是没有意义的。世界毕竟不是“测试驱动”的。这是商业/金钱驱动的。

最佳答案

如果单元测试失败,则表明某些内容无法正常工作:被测系统 (SUT) 无法正常工作,或者单元测试无法正常工作。

如果单元测试不起作用,则应修复或删除它。

如果 SUT 不起作用,则意味着您的系统存在缺陷。在这种情况下,您的首要任务应该是解决缺陷。

每次 checkin 时,所有测试都应通过

当您执行 TDD 时,您最初会看到测试失败,那就是 the reason you can trust them 。不过,作为 TDD 红/绿/重构周期的一部分,在每次迭代结束时,您应该进行全绿测试运行。这就是重点。

因此,测试在大多数情况下都应该通过。

关于unit-testing - 单元测试-实用性 : Should it pass or fail all or most of the time?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33205413/

相关文章:

agile - Scrum:您的待办事项中的平均故事数量是多少

project-management - 敏捷和代码发布

java - 如何在 Netbeans 8.0 中运行单元测试而不下载 Maven 依赖项?

python - 如何将 fixture 作为参数传递给另一个 fixture

javascript - 如何在 JavaScript 函数中将文本转换为 HTML 并使用 jest 进行单元测试

python - 如何在 Python (2.7) 单元测试中参数化 setUpClass()

agile - 我们应该在用户故事中使用角色吗?

agile - 用于编写和组织用户故事的个人工具?

testing - 用户验收测试与测试用例场景和功能测试之间的差异

visual-studio - Visual Studio Test Runner 是否支持其他框架?