推行测试驱动开发 (TDD) 有这么难吗?

推行 TDD 成效不彰,充斥着似是而非的言论;TDD
造成额外工作量,TDD
没有效益,ROI 太低……

为何会如此?我的观察是……

“大家都把开发人员当贼看……认为只要是代码有缺陷,架构腐败,都认为是开发人员搞的,都认为是开发人员没有质量意识,千错万错都是开发人员的错。”

大家试着同理心去想想,当大家都将开发人员当贼看时,我们又怎能会有一个合理的说法,去说服开发人员做 TDD?我们又怎能会有一个激情的动机,去驱动开发人员做 TDD?

另外一方面,TDD
最大的限制在于: TDD 只能反馈,由开发人员所认知的需求是通过或没通过测试。然而,在许多失败的项目中,我们往往会发现,开发人员所认知的需求与使用者所认知的需求,存在着相当大的差距的。也就是说,由于在需求上所存在的认知上的差距,而导致项目的失败,是无法用 TDD
来弥补的。

所以,TDD 要推行成功很简单,不外乎……

1. 用同理心去对待,去尊重开发人员。

2. 誏真正的领域专家(能从使用者的角度,将需求以领域知识的方式体现)与开发人员协同合作。

3. 将只会写代码,而不会测试的开发人员,归类为
“资料写作人员”;即使他(她)的技术再牛逼。

时间: 2024-12-29 11:27:37

推行测试驱动开发 (TDD) 有这么难吗?的相关文章

测试驱动开发(TDD)及测试框架Mocha.js入门学习

组里马上要转变开发模式,由传统的开发模式(Developer开发,QA测试),转变为尝试TDD(Test-driven development,测试驱动开发)的开发模型.由此将不存在QA的角色,或者仅存很少的QA用于系统模块间的集成测试. 因此代码的测试与开发都将由开发者(Developer)来保证. 这就需要借助优秀测试框架的帮助,尤其是支持TDD开发模式的自动化测试框架更为重要,因为我使用的编程是语言是Node.js,那么广泛使用的Mocha.js将成为我的首选. 在团队转型过程中,很多事情

原创翻译-测试驱动开发(TDD)

测试驱动开发原则 翻译自<<Expert Python Programming>> 测试驱动开发是指首先编写包含所有测试软件特点的测试集,然后再去开发软件.也就是说,在编写软件之前先把这个软件的测试文档写清楚.举个例子,如果有个程序员想编写一个可以计算一组数字平均值的函数,那我们先要写出这个函数是怎么用的.我们可以这样写:assert average(1, 2, 3) == 2assert average(1, -3) == -1 这些测试例子也可以由别的人来负责编写.现在,这个函

测试驱动开发-TDD

基本思想 在编写功能代码之前,先写单元测试用例,开发的目的是为了让这个测试用例通过 测试驱动开发注意事项 1.开发围绕着测试展开 2.编写的每个测试恰好能体现一种失败情况 3.编写的功能代码恰好能通过一个测试用例 附:常见的测试方法 功能测试.单元测试.系统测试和负荷测试等 原文地址:https://www.cnblogs.com/youmingDDD/p/9322722.html

(转)浅谈测试驱动开发(TDD)

测试驱动开发(TDD)是极限编程的重要特点,它以不断的测试推动代码的开发,既简化了代码,又保证了软件质量.本文从开发人员使用的角度,介绍了 TDD 优势.原理.过程.原则.测试技术.Tips 等方面. 2 评论: 李群 ([email protected])www.ihere.org 背景 一个高效的软件开发过程对软件开发人员来说是至关重要的,决定着开发是痛苦的挣扎,还是不断进步的喜悦.国人对软件蓝领的不屑,对繁琐冗长的传统开发过程的不耐,使大多数开发人员无所适从.最近兴起的一些软件开发过程相关

测试驱动开发与Python

最近在看一本书<Test-Driven Development with Python>,里面非常详细的介绍了如何一步一步通过测试驱动开发(TDD)的方式开发Web项目.刚好这本书中使用了我之前所了解的一些技术,Django.selenium.unittest等.所以,读下来受益匪浅. 我相信不少开发都写单元测试,不过,一般是先写功能代码,然后,再写单元测试用例,在编写单元测试用例的过程中,可能需要调整功能代码,从而使单元测试用例通过.但是TDD就特别要求先写测试用例,后写实现代码.这一开始确

从测试角度对测试驱动开发的思考【转】

测试驱动开发(TDD)是极限编程的重要特点,它以不断的测试推动代码的开发,既简化了代码,又保证了软件质量.本文主要从测试角度出发,从需求分解等四个阶段阐述了测试人员在测试驱动开发中所发挥的促进作用 大家都知道,软件生命周期一般分为六个阶段:制定计划.需求分析.设计.编码.测试.运行和维护.在软件工程中,这个复杂的过程用软件开发模型来描述和表示,常见的软件开发模型有:瀑布模型.螺旋模型.V模型.W模型等.而这些传统的开发模型都以开发为主,测试常常扮演的是一个亡羊补牢的配角,这类开发模型已渐渐的不能

TDD(测试驱动开发)培训录

2014年我一直从事在敏捷实践咨询项目,这也是我颇有收获的一年,特别是咨询项目的每一点改变,不管是代码质量的提高,还是自组织团队的建设,都能让我们感到欣慰.涉及人的问题都是复杂问题,改变人,改变一个组织是个更复杂问题,这里可能涉及很多的非技术,非能力问题. 在2014年12月我在某企业内部推行TDD(测试驱动开发)培训,一共分4个课时完成一个特定需求的例子,看着大家一步一步的加深对TDD的理解,直到2014-12-31,也是2014的最后一天下午培训完TDD课程,经过一系列的总结过后,某参与人员

测试驱动开发(TDD)

在编写程序之前,先确定程序中的变量.控件等元素允许的值.若在编写程序时,变量.控件中的值与事先确定的值不相符,就说明程序的某处有bug,这种测试方法就是TDD(Test Driven Development,测试驱动开发).TDD与OpenGL ES一样,只是一套标准或一套API.Android SDK中提供了一套测试框架(JUnit),可用于对Android应用程序进行TDD测试.测试框架的特性如下: Android的测试框架基于JUnit.可在无需调用Android SDK API的情况下测

浅谈测试驱动开发(TDD)

1. 优势 TDD的基本思路就是通过测试来推动整个开发的进行.而测试驱动开发技术并不只是单纯的测试工作. 需求向来就是软件开发过程中感觉最不好明确描述.易变的东西.这里说的需求不只是指用户的需求,还包括对代码的使用需求.很多开发人员最害怕的就是后期还要修改某个类或者函数的接口进行修改或者扩展,为什么会发生这样的事情就是因为这部分代码的使用需求没有很好的描述.测试驱动开发就是通过编写测试用例,先考虑代码的使用需求(包括功能.过程.接口等),而且这个描述是无二义的,可执行验证的. 通过编写这部分代码