unit-testing - 单元测试与验收测试

标签 unit-testing testing tdd acceptance-testing

你是支持其中之一?还是两者兼而有之?

我的理解是单元测试:

  • 从开发人员的角度验证系统
  • 帮助开发者实践 TDD
  • 保持代码模块化
  • 协助检测低粒度的错误

验收测试:

  • 从业务和 QC/QA 的角度验证系统
  • 往往是高层次的,因为它们通常是由不熟悉代码内部工作的人编写的

我觉得两者都有必要。但是,为了尽量减少冗余工作,尝试将单元测试合并到验收测试中是个好主意吗?换句话说,让后者调用前者。朝相反的方向前进有意义吗?

您对单元测试与验收测试的总体看法如何,以及如何管理它们之间的关系?

最佳答案

验收和集成测试告诉您您的代码是否正常工作且是否完整;单元测试会告诉您失败的地方。

如果您在验收和集成测试方面做得很好,并且它们都通过了,那么您的代码就会实现它应该实现的所有功能,并且可以正常工作。很高兴知道(知道事实并非如此也很棒)。但如果它不起作用,验收测试不会让您深入了解哪里出了问题;因为它测试了许多功能单元,所以它可以是一种失败的鸟瞰图。这就是单元测试大放异彩的地方。好的单元测试会准确地告诉您哪里出了问题,以及您的代码的确切部分。与验收测试相比,更难知道您是否编写了足够多的单元测试,但是当您有一个失败的验收测试而没有相应的失败单元测试时 - 是时候编写该单元测试了。

以上都是从测试的角度来看的。当然,TDD 与测试无关(ATDD 也不是)。关于驱动你的设计,验收测试给你一个广泛的路线图(“这是你想去的地方”),而单元测试带你到下一个十字路口(“向左转”)。它们在这方面都很有值(value),而且它们的值(value)又是相互补充的。

不要混淆它们;不要将它们混为一谈。特别是单元测试不应该依赖于任何其他东西,通过让验收测试依赖于它们来限制你的单元测试是错误的。当然他们可以共享一些框架代码,但是他们应该是独立的。

关于unit-testing - 单元测试与验收测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4139095/

相关文章:

unit-testing - 使用 Spock 和 Grails 在全局 stub 类中注入(inject) stub 协作者

tdd - 为什么 TDD 测试方法如此静态?

ruby-on-rails - Rails 测试失败,但系统运行正常

testing - 元素内的偏移量无法滚动到 View : (0, 0): http://localhost/groupc/edit/378

javascript - 套件与规范 Protractor

selenium - 如何在日志中打印作为 TestNG 中一组的一部分运行的测试数?

c# - TDD'ing 时提取类。如何测试新提取的类?

c++ - 我尝试用 googlemock 模拟一个简单的 C++ 方法有什么问题?

php - Phalcon 单元测试

c# - 单元测试 : how to test methods with a lot of underlying objects and business logic