美文网首页TDD(测试驱动开发)
TDD感想--记一次失败的TDD推广

TDD感想--记一次失败的TDD推广

作者: kikey | 来源:发表于2017-09-08 21:08 被阅读47次

上周参加了一次TDD的开发培训,敏捷教练演示如何通过测试驱动出求质数的公式,借此向我们展示了TDD的巨大魅力。

"红灯-绿灯-重构"的开发节奏为我们开启了另外一条软件开发的思路,从底往上推导出整体业务逻辑。而我们传统的开发思维里总是要先进行顶层的业务设计,然后分解有多少业务接口,从上往下进行。两种模式当然互有利弊,TDD看上去更加的直观,更能让人感觉与正确性相关,让程序没有BUG、有完善的测试保护、再也不用当心重构会影响原有的业务逻辑。

有感于次此,回来的时候我们组织了一个代码编程比赛,借此向开发介绍单元测试的重要性,以及简单重构的好处。简单的套用了一个教练提供的网球比赛列子,为了增加一些难度,增加了几个复杂的case,对代码行数做了限制。在花了15分钟给开发门简单的介绍了一下比赛的规则后比赛开始。特意把比赛开始的时候定在的周5的下班后,希望大家周末有时间可以去找找资料,有更多的时间去反复重构代码,且不占用工作时间。

结果很意外,30分钟后,便有一位开发完成了任务, 还是一位没有参加TDD的人(原来没有练习过)。采用了类似穷举法的方式,将20个结果弄成一个数组,然后通过一个TDD的方式推导出了一个很牛逼的函数,将结果返回回来。于推广的意义来说 我觉得违背了我本来的意图,但对于比赛规则说,确实有效的。那么问题来了,在敏捷的模式里是否代码功能达到要求就认为是一个好的设计?

联想到我们敏捷的开过过程中,我们经常纠结的一个问题:简单够用的标准在哪里。在传统的开发模式中,我们总是被要求或则要求别人需要为代码后续维护做准备,尤其是在一些存在研发和实施由两拨人来做的公司。作为产品研发团队的人,总是在想未来变化的点在哪里,我该如何的设计才能满足需求。而在敏捷的开发环境中,总是强调MVP,强调尽快的交付。为了能够在一个sprint中完成,往往采用的是最简单实现的方案。日积月累这些方案就会成为心中的隐患,而事实上我们做的很多高价值的功能都可能运行在简单粗暴的方法上。

为什么敏捷和TDD能够共生,既然你选择了敏捷你就不应该背上那么多的沉重的包袱。当你的思绪总是羁绊在未来不可知中变化中,你就无法对你的当下做出选择。

相关文章

  • TDD感想--记一次失败的TDD推广

    上周参加了一次TDD的开发培训,敏捷教练演示如何通过测试驱动出求质数的公式,借此向我们展示了TDD的巨大魅力。 "...

  • 深度解读 - TDD(测试驱动开发)

    本文结构: 什么是 TDD 为什么要 TDD 怎么 TDD FAQ 学习路径 延伸阅读 什么是 TDD TDD 有...

  • 记一次失败的TDD

    前段时间为了修一个 race condition 的 bug,先花了很长时间写 UT,再改 code,改一个地方过...

  • TDD Kata - 保龄球(Bowling)Coding

    阅读本文后,希望你能够有如下收获: 能够采用TDD的方式实现保龄球业务需求。 掌握TDD的节奏:红(失败测试)、绿...

  • 初识TDD

    什么是TDD 本文所说的 TDD 指狭义上的 TDD,也就是「单元测试驱动开发」。 TDD 是敏捷开发中的一项核心...

  • TDD和BDD

    TDD(Test-Driven Development)——测试驱动开发 1.为什么使用TDD: 1)TDD根据客...

  • 轻松TDD之旅

    TDD简介 TDD是什么 TDD一般是Test Driven Development(测试驱动开发)的缩写,它以测...

  • 为什么TDD很难在项目上推动?

    经常在TDD训练营中有学员提这个问题:学了TDD,在项目上也没法落地,为什么TDD很难在项目上推动? TDD本身就...

  • 认识 TDD

    什么是TDD? TDD 有广义和狭义之分,常说的是狭义的 TDD,也就是 UTDD(Unit Test Drive...

  • 测试驱动开发(TDD)总结——原理篇

    标签 | TDD Java 测试驱动开发(TDD)总结——原理篇

网友评论

  • lilC_c7d4:在写user story里的AC时 就是在做TDD了,您说的TDD应该是UTDD吧,但是失败在哪呢?
  • 武可:失败在哪里?看起来很有启发性啊。

本文标题:TDD感想--记一次失败的TDD推广

本文链接:https://www.haomeiwen.com/subject/wjgvjxtx.html