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

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

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

  1. 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. Android源码分析之Message

    准备开始写点东西,算是对自己阅读源码的一个记录/笔记,也希望能对同样感兴趣的人有所帮助,希望能坚持下去,加油. 在Android的开发中,我们经常用到Handler.postXXX方法,或者View. ...

  2. Swift学习--常量.变量.数据类型的使用(一)

    一.Swift中的常量和变量 /* Swift 中定义常量和变量用let/var let 代表定义一个常量 var 代表定义一个变量 Swift 中代表定义常量和变量不需要写数据类型,编译器辉根据我们 ...

  3. java 进制转换

    class Dec2XXX { public static void main(String[] args) { toBin(6); toHex(6); toOct(6); } /*10to2*/ p ...

  4. Swift面向对象基础(中)——Swift中的存储属性和计算属性

    学习来自<极客学院> 1.存储属性:存储在类.结构体里的变量或者常量 2.分为:实例存储属性.类型存储属性 3.所有的存储属性必须显示的指定初始值,在定义时或者构造器当中指定 4.可选类型 ...

  5. android 进程间通信---Service Manager(2)

    关于servicemanager的设计: 还是这张结构图,由于ProcessState & IPCThreadState是与binder deriver交互的, 所以对于client端来说Bp ...

  6. JS生成UUID的方法实例

    <!DOCTYPE html> <html> <head> <script src="http://libs.baidu.com/jquery/1. ...

  7. BaseDao

    public class BaseDao { private static Log logger = LogFactory.getLog(BaseDao.class); // 查询数据 public ...

  8. APACHE重写去除入口文件index.php

    下面我说下 apache 下 ,如何 去掉URL 里面的 index.php 例如: 你原来的路径是: localhost/index.php/index 改变后的路径是: localhost/ind ...

  9. Python2

    安装pycharm专业版,不要汉化 要想写的代码支持linux和2.0版本需要在开头加上注释 #/usr/bin/env python #-*- coding:utf-8 -*- 运算符 结果是值 算 ...

  10. 02_嵌套矩形(DAG最长路问题)

    来源:刘汝佳<算法竞赛入门经典--训练指南> P60 问题2: 问题描述:有n个矩形,每个矩形可以用两个整数a,b描述,表示它们的长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中的条件 ...