Rails 测试基础与 TDD 的局限性
1. TDD 的局限性
测试驱动开发(TDD)虽然非常有用,但并不能解决所有的开发问题。以下是 TDD 在一些场景下的局限性:
- 验收测试方面 :开发者测试在确定应用程序是否符合需求方面效果不佳,严格的 TDD 在验收测试中表现也欠佳。不过,有一些自动化工具可以用于验收测试,例如 Cucumber,它可以与 TDD 集成,实现所谓的“由外而内”测试或验收测试驱动设计(ATDD),但这是对经典 TDD 过程的扩展。
- 探索性开发阶段 :当你不确定程序具体需要做什么时,TDD 的作用就会减弱。因为在这种情况下,很难编写测试用例,不知道该对程序做出怎样的断言。这种情况通常发生在初始开发或概念验证阶段,比如在进行视图测试时,在视图部分可见之前,很难确定要测试什么。在经典的极限编程术语中,这种编程方式被称为“spike”,在 spike 模式下,通常不使用 TDD,并且 spike 阶段编写的代码一般不会用于生产环境,只是作为概念验证。
- 测试输出不确定时 :当进行视图测试或其他不确定要测试什么输出的非 spike 情况时,可以采用“test - next”模式,即先编写代码,但以 TDD 大小的小代码块为单位,然后立即编写测试。只要能频繁地在测试和代码之间切换,就可以让代码和测试相互影响设计。
- 单元测试覆盖方面 :TDD 往往在单元测试的数量上比较薄弱。严格的 TDD 过程不会编写预期会通过的测试,但在实践中,我们经常会这样做。有时在代码中发现并创建了抽象,但仍有一些有效的测试用例需要编
超级会员免费看
订阅专栏 解锁全文
28

被折叠的 条评论
为什么被折叠?



