如果我们已经在进行E2E (end-to-end)测试,我们还需要编写单元测试吗?
考虑到我们正在进行端到端测试中的所有功能测试,两者的优缺点是什么?
答案 0 :(得分:7)
因为E2E测试不是单元测试的完美替代品。
特别是:
E2E测试使用实际服务,而不是模拟。真正的数据库比数据库的内存模拟慢得多。您还必须构建整个项目,设置种子数据等。
如果我需要等待很长时间才能结束测试,我可能会更频繁地跳过它。
E2E测试告诉您整个场景已被破坏,即用户登录失败'他们没有告诉您参与该场景的哪个组件部分被破坏了。这使得更难判断代码的哪一部分导致测试失败。
您无法插入系统组件并放心地将其放入另一个系统中。在新环境中,没有为该组件运行的单元测试。
如果你想为你的系统开辟一个新的组件(单元)并在你使用TDD时使用它,你就没有单元测试就处于死路。单元测试和TDD齐头并进。
话虽如此:
以下是完美测试套件的精彩插图,称为Testing Pyramid:
Google测试博客中的这篇文章详细介绍了Just Say No to More End-to-End Tests。虽然我不同意你不应该写E2E测试,但它深入地说明了每种测试的优缺点。
答案 1 :(得分:-3)
单元测试是软件生命周期的重要方面,以提高其质量。如果我们编写了测试用例,任何新开发人员都可以理解该功能并根据条件检查不同的输出。它应该是该过程的强制性部分。