TDD开发感悟
由于公司要实现TDD形式的开发,所以准备了一下,准备在后续的项目中,投入到TDD的怀抱中。
在找一些参考书目的过程中,偶遇《测试驱动开发的艺术》这本书,书中的编码为JAVA派系,但是书的内容却是通俗易懂,书的作者属于实战派的写手,所以一开始几章就直接上具体的例子,然后通过测试,开发,重构,测试,开发,重构。。。的过程来展示如何实践TDD的。
在看书的过程中,我逐渐对TDD有了新的认识,目前已经看到了第三章,通过之前作者的引导,我所理解的TDD是这样的:
TDD,测试驱动开发,是一种软件开发过程的实践,是一种理念,而非实现的工具。它要求软件开发者在开发软件的过程中,按照 测试,开发,重构,测试,开发,重构。。。。的过程,来一点一滴的构建软件的。
映射到我以前的设计工作中,我确实体会到了TDD所带来的便捷之处:
以前的开发:瀑布式的开发,先写功能代码,遇到编译错误的地方,就直接Debug项目,然后让其编译通过即可,没有真正的去检测功能是否是正常的;即便有时候去写一写测试用例,也只是针对核心的业务逻辑进行一下覆盖,没有涉及到重构,测试的过程,所以有时候在开发完毕,发现问题还是挺多的。
TDD的开发:先写失败的测试,然后修改让其通过测试,然后实现功能代码,然后测试,然后重构,然后再测试,再开发,再重构。。。反正就是保证自己每次写的功能点都是可用的,都是通过测试的。等软件正式交付以后,所有的这些测试就可以当做以后系统出现问题时候的检测依据,可以很方便的定位到出错点。如果项目非常大的时候,能够快速的定位到出错点是非常难能可贵的。(在以前花旗做软件的时候,有一个巨大的项目,核心逻辑用c++写,表现层用C#写,粘合层用的CLR c++写,项目中的线程特别多,有时候当表现层出错的时候,需要定位到出错的地方,需要从C#调试到CLR C++,然后再往Native C++调试,过程苦不堪言,最重要的是,整个项目编译一次,需要四五个小时。。。熬过这段时间,才知道TDD的这种机制的重要性,作者的感受,于我心有戚戚焉。致敬。)
但是TDD也不是万能的,TDD能帮我们写出运行良好的软件,不过我们还是要想办法保证交付的功能正好能满足客户的需求。这里我们涉及到了“验收测试驱动开发”这个词,咱们且看且走。
TDD开发感悟的更多相关文章
- LM**项目开发感悟
LM**项目开发感悟 经过一个多月的项目开发,自己主要负责服务端业务逻辑的实现.服务端采用纯servlet完成,自己是在已有的项目架构上进行编程,对于所使用的架构,自己还没有认真的研究过,但明白其用到 ...
- TDD实践感悟
每个开发者都想开发出高质量的代码,更少的Bug.更容易维护不仅让人心情愉悦,也让我们有更多时间去学习和生活. 少加一些班,多陪家人,:) 当开发任务非常简单时,比如基本的增删改查,可能使用怎样的方式开 ...
- 从celery rabbitmq with docker-compose 引出对容器、依赖注入、TDD的感悟
用docker配置项目管理系统taiga的时候,不是我一个人遇到这个问题.https://github.com/douglasmiranda/docker-taiga/issues/5 问题描述: 用 ...
- 前端 TDD 开发
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px ".PingFang SC"; color: #454545 } p.p2 ...
- 2014年终开发感悟(Tamic)
接触Anroid已经一年过了,眼看就要2015年的到来,但是在这不长不短的时间以来,虽然没给IT圈贡献过什么大的开源项目,但是自己也一直在坚持着自己的爱好,也在不断的更新着自己博客,有 一次项目中偶 ...
- TDD开发案例
前段时间把一个界面框架完成了,今天基于这个框架开发一个小模块,在这里把这个模块设计的全过程记录下来,希望大家讨论并指正. 一.起因 公司交给我一个任务,为测试员写一个手机模拟界面,以方便她们的手机短信 ...
- Python 在Visual studio 中做单元测试进行TDD开发
Unit Tests Steve Dower edited this page on 14 Jul · 3 revisions Pages 38 Home Azure Remote Debugging ...
- 测试计划驱动开发模式 TPDD:一种比 TDD 更友好的开发模式
相信大部分开发团队都在使用TDD,并且还有很多开发团队都 对外声明 在使用 TDD 开发模式. 之所以说是“对外声明”,是因为很多开发团队虽然号称使用的是 TDD 开发模式,实际开发过程中却无法满足 ...
- TDD的iOS开发初步以及Kiwi使用入门
测试驱动开发(Test Driven Development,以下简称TDD)是保证代码质量的不二法则,也是先进程序开发的共识.Apple一直致力于在iOS开发中集成更加方便和可用的测试,在Xcode ...
随机推荐
- Objective-C之优雅的命名
There are only two hard things in Computer Science: cache invalidation and naming things.在计算机科学中只有两件 ...
- MySQL学习总结(摘抄)
1.数据库概述 简 而言之,数据库(DataBase)就是一个存储数据的仓库.为了方便数据的存储和管理,将数据按照特定的规律存储在磁盘上.通过数据库管理系统,可以有 效的组织和管理存储在数据库中的数据 ...
- 敏捷软件开发:原则、模式与实践——第14章 使用UML
第14章 使用UML 在探索UML的细节之前,我们应该先讲讲何时以及为何使用它.UML的误用和滥用已经对软件项目造成了太多的危害. 14.1 为什么建模 建模就是为了弄清楚某些东西是否可行.当模型比要 ...
- XtraScheduler 日程控件显示自定义标题
下面代码实现一个自定义日程标题 public class CustomHeaderCaptionService : HeaderCaptionServiceWrapper { public Custo ...
- 采用 PAT工具及CSP语言,对一个问题进行自动机 建模
pat是新加坡国立开发的工具,需要的去官网下http://www.comp.nus.edu.sg/~pat/ ,学了一天,是个不错的自动机验证工具,感觉还不错啊. 验证一个数是否为斐波那契数且为质数 ...
- Oracle SQL Developer连接报错(ORA-12505)
Oracle SQL Developer连接报错(ORA-12505) 之前我的Oracle数据库出现问题,费大波周折终于弄好了,今天又创建了一个DBA管理员的连接方式出现问题,本人现在把解决方案分享 ...
- Go对OO的选择
Go摒弃了许多OO的概念,但是还是很好的继承了OO的精髓——消息传递.我猜这个是学了Smalltalk的.通常我们说OO,我们会说这三大特性:对象,继承,多态. 1,Go中的对象 对于GO来说他的类型 ...
- springMVC 接收数组参数,mybatis 接收数组参数,mybatis批量插入/批量删除案例
案例是给一个用户赋予多个权限,多个权限用其对应的主键 id 为参数,组成了 一个id数组,传给springMVC,然后springMVC传给mybatis,然后mybatis批量插入.其实类似的场景还 ...
- 深入探讨 Java 类加载器
转自:http://www.ibm.com/developerworks/cn/java/j-lo-classloader/ 类加载器(class loader)是 Java™中的一个很重要的概念.类 ...
- Web Service和WCF的到底有什么区别
[1]Web Service:严格来说是行业标准,也就是Web Service 规范,也称作WS-*规范,既不是框架,也不是技术. 它有一套完成的规范体系标准,而且在持续不断的更新完善中. 它使用XM ...