0

对于一个简短的总结:如果功能测试满足,单元测试是否仍然重要?

  • 单元测试是规模较小的一个期望的东西做是正确的在开发中的观点。
  • 功能测试是那些希望的事情是正确的用户视图

如果功能测试已经满意,我们是否还需要做单元测试?

很可能(让我们使用web开发作为上下文),通过使用浏览器通过让其他用户/人员尝试系统/应用程序来查看是否正确,这很常见。

让我们推出像边缘情况下的其他测试。

+0

http://stackoverflow.com/a/2741845/5058677 – Rumid

+0

[单元测试与功能测试]可能的重复(http://stackoverflow.com/questions/2741832/unit-tests-vs-functional-tests) – jonrsharpe

+0

This是不是一个VS问题寿。 – jen

回答

1

是否有任何指标用于确定功能测试是否“满意”?

我觉得有一个客观的测量来创建一个比较测试类型的基线有帮助,一个常见的测试是代码覆盖率。

通过识别代码覆盖率,很容易比较功能测试和单元测试,功能测试是否覆盖了与单元测试相同的代码行?如果是这样,那就多余了。

问题是这样的忽略一吨的其他问题:

  • 是功能测试望而却步长期运行?他们难以设置,还是仅在CI中执行?那么在单元测试中重复代码行可能是有意义的,这将为开发人员提供快速反馈。
  • 这是一个POC还是一个不成熟的项目?功能测试可以提供最佳效果,因为它们应该能够声明更高级别的用例并从实现细节中抽象出来。当实现细节不确定时,这非常有用
  • 代码覆盖率是有误导性的,一个以IO为中心的库(即DB驱动程序)可以通过嘲笑其依赖关系轻松实现100%的代码覆盖率。如果我们在这种情况下使用代码覆盖率来比较功能测试和单元测试,那么我们会缺少多个测试维度,因为功能测试将执行IO依赖关系。 (在这种情况下,IMO单元测试实际上是一个非常小的值,并且会给IO重码带来虚假的信心,从而导致在dev后期周期通常发现的集成错误,修复问题的成本更昂贵
  • You touch on边缘情况下,功能测试通常会说明几个客户端流程,使用功能测试来执行所有边缘案例和错误处理通常倾向于浪费资源并最终创建难以维护的巨大套件,并且测试速度很慢