TDD 已死,测试万岁!
作者:网络转载 发布时间:[ 2015/10/12 13:41:55 ] 推荐标签:测试驱动开发 行为驱动开发
1.补上 DHH 原始 keynote 的影片?RailsConf2014 Opening Keynote by DHH
2.Uncle Bob 针对 DHH 的战文,也写了一篇文章来反击?Monogamous TDD
3.XDite 在 4/28 也再撰文整理他的看法?返璞归真 -- 以适当的方式设计软件
前言
昨天在 XDite 大大的 Blog 中 (via: RailsConf 2014 - 十周年纪念版 ( 中 )),看到 RoR framework、Basecamp 公司的创办人、Rework 一书 (中译书?工作大解放) 的作者,David Heinemeier Hansson (DHH),在 RailsConf 2014 中的 Keynote 后,发表了一篇针对 TDD 的战文?TDD is dead. Long live testing.
其实我觉得 XDite 整理 DHH 的 talk 重点非常完整了,虽然我自己也是 TDD 的爱好者,但像这种由业界大神所写出来的战文,我觉得都有很高的阅读价值。算对方立场和你是相反的,从对方的论点中也可以找出满多的检查点,来反思自己在实践上,是不是也犯了他们所讨厌的错误,或是从错误的出发点来想事情。
所以我翻译了这篇文章,除了让自己再精读一下 DHH 的想法外,也让有兴趣的朋友们可以多了解不同的意见,做为反思。
有任何翻译上的谬误,都欢迎提出,谢谢!
翻译正文
TDD 已死,测试万岁 (TDD is dead. Long live testing.)
先写测试的教义象是禁欲式的性教育?一个只会带来自我厌恶和羞愧地,不现实和无效率的道德宣传。
一开始测试先行的想法并不像现在这样。当我一开始接触 TDD 时,它象是个想带领我们进入更好的软件开发世界的友善邀请,一种对心灵的激荡 (hack),来让你进入测试的实务。它扩展了我的眼界,让我了解经过良好测试的程序库的美好,并且对于软件的修改更有自信。
测试先行象是一套很棒的辅助轮 (译注?training wheels,是小朋友学单车时在后轮加装的轮子),教我思考更深层次的测试议题,但当中也有一些想法被我很快地抛在后面。
这些年来,关于测试先行的言论变得更加大声、更加激进,然而,也更加失去风度。有时候我会被吸进了基本教义派的旋涡 - 对于没有依循宗教的福音行事感觉到很糟糕。然后,我会在接下来的几周,尝试使用测试先行来进行开发,直到它开始伤害我的设计后,又再度舍弃它。
这个过程很像溜溜球在自豪的两侧摆荡?当我可以坚持基本教义的一字一句时,我感到自豪;而当我做不到这点时,我会绝望地崩溃。这象是原本已经戒酒的人又开始喝酒,你当然要为(喝酒)这事保持沉默,至少不能公开地向大家承认这事。在公开场合,我充其量只是承认自己不是每次都使用测试先行的方式进行开发,但仍然支持测试先行这种实践 (practice) 是「正确的做法」。我现在要收回这段话。
也许使用测试优先这种违反直觉的开发方式,对于打破业界缺乏自动回归测试的生态是有帮助的。但也许测试先行只是一种比喻,而不应该成为软件开发工作的每日工作教条。但不管它是怎么开始的,它会因为损坏而只是昙花一现。支持者常使用测试先行当做一个锤子,来打击怀疑论者,宣告他们不够项目,不够格来撰写软件,象是试纸检验一样。
够了!这种事不应该再继续下去!我叫 David,我不以测试先行的方式开发软件。我拒绝为此表达任何歉意,也不想再为此隐瞒。我很感激 TDD 为我打开了关于自动化回归测试的眼界,但我早已摆脱设计教条而继续前行。
我建议大家在不使用 TDD,不表示这是不合格的开发方式的可能性的前提下,认真检视这方法(TDD) 会对您的系统设计完整性带来了什么影响。这象是服用红色药丸一样,您可能不会喜欢之后您所看到的 (译注?这边的出处是电影「黑客任务」,当初莫斐斯是拿了红色药丸和蓝色药丸给尼欧选择要不要跳船)。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11