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 ...
随机推荐
- android 进程/线程管理(四)续----消息机制的思考(自定义消息机制)
继续分析handler 和looper 先看看handler的 public void dispatchMessage(Message msg) { if (msg.callback != null) ...
- 从1.5k到18k, 一个程序员的5年成长之路
昨天收到了心仪企业的口头offer, 回首当初什么都不会开始学编程, 到现在恰好五年. 整天在社区晃悠, 看了不少的总结, 在这个时间点, 我也写一份自己的总结吧. 我一直在社区分享, 所以, 这篇总 ...
- C++中的多态与虚函数的内部实现
1.什么是多态 多态性可以简单概括为“一个接口,多种行为”. 也就是说,向不同的对象发送同一个消息, 不同的对象在接收时会产生不同的行为(即方法).也就是说,每个对象可 ...
- (ios实战)ios调试总结(转载)
在程序中,无论是你想弄清楚为什么数组中有3个对象而不是5个,或者为什么一个新的玩家开始之后,游戏在倒退——调试在这些处理过程中是比较重要的一部分.通过本文的学习,我们将知道在程序中,可以使用的大多数重 ...
- 【VB超简单入门】二、知识准备
在开始编程之前,需要先熟悉一下各种操作和术语,以后学习编程才能得心应手. 首先最重要的操作当然就是-电脑的开机关机啦~(开个玩笑哈哈),必须掌握软件的安装和卸载,还有能编写批处理程序对平时的使用也是很 ...
- 05_最长公共子序列问题(LCS)
问题来源:刘汝佳<算法竞赛入门经典--训练指南> P60 问题7: 问题描述:给两个子序列A和B,求长度最大的公共子序列.比如1,5,2,6,8,和2,3,5,6,9,8,4的最长公共子序 ...
- python datetime模块用strftime 格式化时间
1 2 3 #!usr/bin/python import datetime datetime.datetime.now() 这个会返回 microsecond.因此这个是我们不需要的.所以得做一下修 ...
- Sample SecondarySort 浅析
示例文件: 100 99 100 98 100 56 100 78 20 100 30 100 20 50 30 50 30 60 20 80 需求:首先按第一个数字分组,组成按第二个数字排序. 解决 ...
- 如何实现ZBrush中的Alt和Shift键的快速运用
ZBrush是一个数字雕刻和绘画软件,它以强大的功能和直观的工作流程彻底改变了整个三维雕刻行业.在一个简洁的界面中,ZBrush®为当代数字艺术家提供了世界上最先进的工具.利用快捷键能使操作更快捷高效 ...
- python中BeautifulSoup库中find函数
http://www.crummy.com/software/BeautifulSoup/bs3/documentation.zh.html#contents 简单的用法: find(name, at ...