对于更快交付更好的软件。测试驱动开发(TDD)现在是一种已经确立的技术。TDD基于一个简单的思想:在写产品代码之前先写它的测试代码。但是,这个“简单”的思想需要一些技能和判断才能做得好。现在有了一本TDD实践指南。让您深入理解那些基本概念,并向您展示了如何让测试来引导开发,“培育”出一致的、可靠的、可维护的软件。
作者描述了他们使用的过程,努力实现的设计原则,以及完成工作的一些工具。通过一个详细实现的例子,您可以看到TDD如何在各个层次上工作。如何利用测试来驱动特征开发和代码的面向对象结构,如何利用模拟对象来发现并描述对象之间的关系。在这个过程中,本书系统地讨论了开发团队在使用TDD时遇到的挑战——从过程中集成TDD到测试最难的特征。
本书采用通俗易懂的比喻,众所周知的编程语言,短小精悍的工作实例,深入浅出的分析处理——仿佛在和几位世界级的编程高手一边喝茶,一边聊天,循序渐进地让读者在不知不觉中进入编程的最高境界。即使是刚刚入门的初学者,也会从中找到读书的乐趣,因为可以从一开始就找到开启面向对象开发大门的钥匙;随着经验的积累,编程水平的提高,再来看这本书,用不同的视角重新审视程序,又会体会到更深层的编程哲学。
本书是编程爱好者的启蒙指南,更是系统分析人员、测试人员、程序设计人员、软件开发人员以及面向对象程序研究人员等专业人士革新编程思想的必备手册。
对本书的赞誉
译者序
序
前言
作者简介
致谢
第一部分 简介
第1章 测试驱动开发的要点
1.1 软件开发是一个学习过程
1.2 反馈是基本工具
1.3 支持变化的实践
1.4 测试驱动开发简介
1.5 大局
1.6 用户场景测试
1.7 测试的级别
1.8 外部品质与内部品质
第2章 测试驱动开发与对象
2.1 对象之网
2.2 值与对象
2.3 对象通信
2.4 吩咐,不要问
2.5 但有时要问
2.6 对协作的对象执行单元测试
2.7 用模拟对象支持TDD
第3章 工具介绍
3.1 如果您已了解这些框架,可以跳过本章
3.2 JUnit 4简介
3.2.1 测试用例
3.2.2 断言
3.2.3 预期异常
3.2.4 测试装置
3.2.5 测试执行者
3.3 Hamcrest匹配器和assertThat()
3.4 jMock2:模拟对象
第二部分 测试驱动开发过程
第4章 启动测试驱动循环
4.1 简介
4.2 先测试一个可行走的骨架
4.3 决定行走的骨架的形状
4.4 创建反馈源
4.5 尽早暴露不确定性
第5章 保持测试驱动循环
5.1 简介
5.2 每个特征都从一个验收测试开始
5.3 分离测量进度的测试和捕捉回归错误的测试
5.4 从最简单的成功场景开始测试
……
第6章 面向对象风格
第7章 实现面向对象设计
第8章 基于第三方代码构建
第三部分 工作的例子
第9章 委托开发一个拍卖狙击者
第10章 可行走的骨架
第11章 通过第一个测试
第12章 准备竞拍
第13章 狙击者发出竞拍出价
第14章 狙击者赢得拍卖
第15章 迈向真正的用户界面
第16章 狙击多项物品
第17章 分解Main
第18章 填充细节
第19章 处理失败
第四部分 可持续的测试驱动开发
第20章 聆听测试
第21章 测试可读性
第22章 构造复杂的测试数据
第23章 测试诊断
第24章 测试的灵活性
第五部分 高级主题
第25章 测试持久性
第26章 单元测试与线程
第27章 测试异步代码
后记 模拟对象简史
附录A jMock2速查手册
附录B 编写Hamcrest Matcher
参考文献