由于公司要实现TDD形式的开发,所以准备了一下,准备在后续的项目中,投入到TDD的怀抱中。

在找一些参考书目的过程中,偶遇《测试驱动开发的艺术》这本书,书中的编码为JAVA派系,但是书的内容却是通俗易懂,书的作者属于实战派的写手,所以一开始几章就直接上具体的例子,然后通过测试,开发,重构,测试,开发,重构。。。的过程来展示如何实践TDD的。

在看书的过程中,我逐渐对TDD有了新的认识,目前已经看到了第三章,通过之前作者的引导,我所理解的TDD是这样的:

TDD,测试驱动开发,是一种软件开发过程的实践,是一种理念,而非实现的工具。它要求软件开发者在开发软件的过程中,按照 测试,开发,重构,测试,开发,重构。。。。的过程,来一点一滴的构建软件的。

映射到我以前的设计工作中,我确实体会到了TDD所带来的便捷之处:

以前的开发:瀑布式的开发,先写功能代码,遇到编译错误的地方,就直接Debug项目,然后让其编译通过即可,没有真正的去检测功能是否是正常的;即便有时候去写一写测试用例,也只是针对核心的业务逻辑进行一下覆盖,没有涉及到重构,测试的过程,所以有时候在开发完毕,发现问题还是挺多的。

TDD的开发:先写失败的测试,然后修改让其通过测试,然后实现功能代码,然后测试,然后重构,然后再测试,再开发,再重构。。。反正就是保证自己每次写的功能点都是可用的,都是通过测试的。等软件正式交付以后,所有的这些测试就可以当做以后系统出现问题时候的检测依据,可以很方便的定位到出错点。如果项目非常大的时候,能够快速的定位到出错点是非常难能可贵的。(在以前花旗做软件的时候,有一个巨大的项目,核心逻辑用c++写,表现层用C#写,粘合层用的CLR c++写,项目中的线程特别多,有时候当表现层出错的时候,需要定位到出错的地方,需要从C#调试到CLR C++,然后再往Native C++调试,过程苦不堪言,最重要的是,整个项目编译一次,需要四五个小时。。。熬过这段时间,才知道TDD的这种机制的重要性,作者的感受,于我心有戚戚焉。致敬。)

但是TDD也不是万能的,TDD能帮我们写出运行良好的软件,不过我们还是要想办法保证交付的功能正好能满足客户的需求。这里我们涉及到了“验收测试驱动开发”这个词,咱们且看且走。

TDD开发感悟的更多相关文章

  1. LM**项目开发感悟

    LM**项目开发感悟 经过一个多月的项目开发,自己主要负责服务端业务逻辑的实现.服务端采用纯servlet完成,自己是在已有的项目架构上进行编程,对于所使用的架构,自己还没有认真的研究过,但明白其用到 ...

  2. TDD实践感悟

    每个开发者都想开发出高质量的代码,更少的Bug.更容易维护不仅让人心情愉悦,也让我们有更多时间去学习和生活. 少加一些班,多陪家人,:) 当开发任务非常简单时,比如基本的增删改查,可能使用怎样的方式开 ...

  3. 从celery rabbitmq with docker-compose 引出对容器、依赖注入、TDD的感悟

    用docker配置项目管理系统taiga的时候,不是我一个人遇到这个问题.https://github.com/douglasmiranda/docker-taiga/issues/5 问题描述: 用 ...

  4. 前端 TDD 开发

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px ".PingFang SC"; color: #454545 } p.p2 ...

  5. 2014年终开发感悟(Tamic)

    接触Anroid已经一年过了,眼看就要2015年的到来,但是在这不长不短的时间以来,虽然没给IT圈贡献过什么大的开源项目,但是自己也一直在坚持着自己的爱好,也在不断的更新着自己博客,有  一次项目中偶 ...

  6. TDD开发案例

    前段时间把一个界面框架完成了,今天基于这个框架开发一个小模块,在这里把这个模块设计的全过程记录下来,希望大家讨论并指正. 一.起因 公司交给我一个任务,为测试员写一个手机模拟界面,以方便她们的手机短信 ...

  7. Python 在Visual studio 中做单元测试进行TDD开发

    Unit Tests Steve Dower edited this page on 14 Jul · 3 revisions Pages 38 Home Azure Remote Debugging ...

  8. 测试计划驱动开发模式 TPDD:一种比 TDD 更友好的开发模式

    相信大部分开发团队都在使用TDD,并且还有很多开发团队都 对外声明 在使用 TDD 开发模式. 之所以说是“对外声明”,是因为很多开发团队虽然号称使用的是 TDD 开发模式,实际开发过程中却无法满足 ...

  9. TDD的iOS开发初步以及Kiwi使用入门

    测试驱动开发(Test Driven Development,以下简称TDD)是保证代码质量的不二法则,也是先进程序开发的共识.Apple一直致力于在iOS开发中集成更加方便和可用的测试,在Xcode ...

随机推荐

  1. Objective-C之优雅的命名

    There are only two hard things in Computer Science: cache invalidation and naming things.在计算机科学中只有两件 ...

  2. MySQL学习总结(摘抄)

    1.数据库概述 简 而言之,数据库(DataBase)就是一个存储数据的仓库.为了方便数据的存储和管理,将数据按照特定的规律存储在磁盘上.通过数据库管理系统,可以有 效的组织和管理存储在数据库中的数据 ...

  3. 敏捷软件开发:原则、模式与实践——第14章 使用UML

    第14章 使用UML 在探索UML的细节之前,我们应该先讲讲何时以及为何使用它.UML的误用和滥用已经对软件项目造成了太多的危害. 14.1 为什么建模 建模就是为了弄清楚某些东西是否可行.当模型比要 ...

  4. XtraScheduler 日程控件显示自定义标题

    下面代码实现一个自定义日程标题 public class CustomHeaderCaptionService : HeaderCaptionServiceWrapper { public Custo ...

  5. 采用 PAT工具及CSP语言,对一个问题进行自动机 建模

    pat是新加坡国立开发的工具,需要的去官网下http://www.comp.nus.edu.sg/~pat/ ,学了一天,是个不错的自动机验证工具,感觉还不错啊. 验证一个数是否为斐波那契数且为质数 ...

  6. Oracle SQL Developer连接报错(ORA-12505)

    Oracle SQL Developer连接报错(ORA-12505) 之前我的Oracle数据库出现问题,费大波周折终于弄好了,今天又创建了一个DBA管理员的连接方式出现问题,本人现在把解决方案分享 ...

  7. Go对OO的选择

    Go摒弃了许多OO的概念,但是还是很好的继承了OO的精髓——消息传递.我猜这个是学了Smalltalk的.通常我们说OO,我们会说这三大特性:对象,继承,多态. 1,Go中的对象 对于GO来说他的类型 ...

  8. springMVC 接收数组参数,mybatis 接收数组参数,mybatis批量插入/批量删除案例

    案例是给一个用户赋予多个权限,多个权限用其对应的主键 id 为参数,组成了 一个id数组,传给springMVC,然后springMVC传给mybatis,然后mybatis批量插入.其实类似的场景还 ...

  9. 深入探讨 Java 类加载器

    转自:http://www.ibm.com/developerworks/cn/java/j-lo-classloader/ 类加载器(class loader)是 Java™中的一个很重要的概念.类 ...

  10. Web Service和WCF的到底有什么区别

    [1]Web Service:严格来说是行业标准,也就是Web Service 规范,也称作WS-*规范,既不是框架,也不是技术. 它有一套完成的规范体系标准,而且在持续不断的更新完善中. 它使用XM ...