测试驱动的面向对象软件开发

测试驱动的面向对象软件开发

(美) 弗里曼 (Freeman,S.) , (美) 普雷斯 (Pryce,N.) , 著

出版社:机械工业出版社

年代:2010

定价:59.0

书籍简介:

本书采用通俗易懂的比喻,众所周知的编程语言,短小精悍的工作实例,深入浅出的分析处理——仿佛在和几位世界级的编程高手一边喝茶,一边聊天,他们循序渐进地让读者在不知不觉中进入一个编程的最高境界。 即使是刚刚入门的初学者,也会从中找到读书的乐趣,因为可以从一开始就找到开启面向对象开发的钥匙;随着经验的积累,编程水平的提高,再来看这本书,又会体会到更深层的编程哲学,然后用不同的视角重新审视您的程序。本书是编程爱好者的启蒙指南,更是作为系统分析人员、测试人员、程序设计人员、软件开发人员以及面向对象程序研究人员等专业人士革新编程思想的必备手册。

作者介绍:

Steve Freeman是一名独立咨询师,擅长领域是敏捷软件开发(http://www.m3p.co.uk)。他与Nat Pryce一同赢得了2006年敏捷联盟的Gordon Pask奖。他是伦敦极限星期二俱乐部(London Extreme Tuesday Club)的创建成员,也是第一任伦敦XP日(London XP Day)的主席,还经常在国际会议上担任组织者和演讲者。 Steve曾在各种类型的组织中工作过,从为IBM开发完整零售版软件,到为大的研究实验室开发原型。Steve拥有剑桥大学的哲学博士学位,并拥有统计和音乐学位。Steve居住在英国伦敦。

书籍目录:

对本书的赞誉

译者序

前言

作者简介

致谢

第一部分 简介

第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 Junit4简介

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 从最简单的成功场景开始测试

5.5 编写您愿意读的测试

5.6 看着测试失败

5.7 从输入开发到输出开发

5.8 针对行为进行单元测试,而非针对方法

5.9 聆听测试

5.10 调整循环

第6章 面向对象风格

6.1 简介

6.2 为可维护性而设计

6.3 内部与同级的比较

6.4 没有“与”、“或”、“但是”

6.5 对象同级构造型

6.6 组合比它的部分之和更简单

6.7 上下文无关性

6.8 E确地隐藏信息

6.9 固执己见的观点

第7章 实现面向对象设计

7.1 先写测试怎样有助于设计

7.2 通信比分类更重要

7.3 值类型

7.4 对象来自何处

7.4.1 分解

7.4.2 萌芽

7.4.3 打包

7.5 利用接口确定关系

7.6 接口也要重构

7.7 组合对象以描述系统行为

7.8 迈向更高层的编程

7.9 关于类

第8章 基于第三方代码构建

8.1 简介

8.2 只模拟您拥有的类型

8.2.1 不要模拟您不能修改的类型

8.2.2 编写一个适配层

8.3 在集成测试中模拟应用对象

第三部分 工作的例子

第9章 委托开发一个拍卖狙击者

9.1 从头开始

9.2 与一次拍卖通信

9.2.1 拍卖协议

9.2.2 XMPP消息

9.3 安全实现目标

9.4 这不是真的

第10章 可行走的骨架

10.1 从壁橱中取出骨架

10.2 我们的第一个测试

10.3 一些初始选择

10.3.1 用户场景测试

10.3.2 准备开始

第11章 通过第一个测试

11.1 构建测试的装配

11.1.1 应用执行者

11.1.2 伪造的拍卖

11.1.3 消息代理

11.2 测试失败和通过

11.2.1 第一个用户界面

11.2.2 显示狙击者状态

11.2.3 连接到拍卖

11.2.4 从拍卖接收回应

11.3 必需的最小实现

第12章 准备竞拍

12.1 对市场的介绍

12.2 针对竞拍的测试

12.2.1 从测试开始

12.2.2 扩展伪造的拍卖

12.2.3 令人吃惊的失败

12.2.4 由外至内开发

12.2.5 对细节的无限关注

12.3 Auction Message Translator类

12.3.1 提取出一个新类

12.3.2 第一个单元测试

12.3.3 完成用户界面循环

12.3.4 我们实现了什么

12.4 解析价格消息

12.4.1 引入消息事件类型

12.4.2 第二个测试

12.4.3 发现进一步的工作

12.5 完成工作

第13章 狙击者发出竞拍出价

13.1 引入Auction Sniper

13.1.1 一个新类及其依赖关系

13.1.2 关注、关注、关注

13.2 发送竟拍出价

13.2.1 Auction接口

13.2.2 Auction Sniper发出竟拍出价

13.2.3 利用Auction Sniper成功竟拍

13.2.4 用户场景测试通过了

13.3 整理实现

13.3.1 提取出XMPP Auction

13.3.2 提取用户界面

13.3.3 整理翻译者类

13.4 延迟决定

13.5 自然发生的设计

第14章 狙击者赢得拍卖

14.1 先写一个失败的测试

14.2 谁知道竞拍者

14.3 狙击者还有话要说

14.4 狙击者需要某种状态

14.5 狙击者获胜

14.6 取得稳定的进展

第15章 迈向真正的用户界面

15.1 更现实的实现

15.1.1 接下来我们该做什么

15.1.2 替换JLabel

15.1.3 还是很丑

15.2 显示价格细节

15.2.1 先写一个失败的测试

15.2.2 狙击者送出状态

15.2.3 展现竟拍狙击者

15.3 简化狙击者事件

15.3.1 跟着感觉走

15.3.2 重新确定sniper Bidding()的目标

15.3.3 填人数字

15.4 更进一步

15.4.1 转换胜利和失败

15.4.2 修整表模型

15.4.3 面向对象的列

15.4.4 缩短事件路径

15.5 最后润色

15.5.1 针对列标题的测试

15.5.2 实现Table Model

15.5.3 目前已足够

15.6 短评

15.6.1 单一职责

15.6.2 软件微创手术

15.6.3 程序员过敏症

15.6.4 庆贺思维转变

15.6.5 这不是唯一的解决方案

第16章 狙击多项物品

16.1 针对多项物品的测试

16.1.1 两件物品的故事

16.1.2 Applieation Runner类

16.1.3 偏离主题,改进失败信息

16.1.4 重新设计Main的结构

16.1.5 扩展表模型

16.2 通过用户界面添加物品

16.2.1 更简单的设计

16.2.2 更新测试

16.2.3 添加一个动作条

16.2.4 设计时刻

16.2.5 另一层次的测试

16.2.6 实现User Request Ustener

16.3 短评

16.3.1 取得稳定的进展

16.3.2 FDD的秘密

16.3.3 发布它

第17章 分解Main

17.1 发现角色

17.2 提取Chat

17.2.1 分离Chat

17.2.2 封装Chat

17.2.3 编写一个新测试

17.3 提取Connection

17.4 提取出Snipers Table Model

17.4.1 狙击启动者类Sniper Launeher

17.4.2 狙击组合

17.5 短评

17.5.1 增量式架构

17.5.2 三点不动

17.5.3 动态设计的同时也进行静态设计

17.5.4 对not To Be GCd的另一种修复方法

第18章 填充细节

18.1 更有用的应用

18.2 适可而止

18.2.1 引入落后状态

18.2.2 第一个失败的测试

18.2.3 输入停止价格

18.2.4 传送停止价格

18.2.5 约束Auction Sniper

18.3 短评

18.3.1 增量式设计用户界面

18.3.2 其他建模技术也有用

18.3.3 领域类型比字符串好

第19章 处理失败

19.1 如果它不能工作

19.2 检测失败

19.3 显示失败

19.4 断开狙击者

19.5 记录失败

19.5.1 填充测试

19.5.2 翻译者中的失败报告

19.5.3 生成日志消息

19.5.4 完成这次开发循环

19.6 短评

19.6.1 “切香肠的逆过程”式开发

19.6.2 用一些小方法来表达意图

19.6.3 日志也是一项功能

第四部分 可持续的测试驱动开发

第20章 聆听测试

20.1 简介

20.2 我需要模拟一个不能替换的对象

20.2.1 单例是依赖关系

20.2.2 从过程到对象

20.2.3 隐式依赖也是依赖

20.3 记日志是一项功能

20.3.1 通知而不是记日志

20.3.2 但这种想法很疯狂

20.4 模拟具体的类

20.5 不要模拟值类型

20.6 膨胀的构造方法

20.7 令人困惑的对象

20.8 太多依赖关系

20.9 太多预期

20.10 测试会告诉我们什么

第21章 测试可读性

21.1 简介

21.2 测试名称描述功能

21.3 规范的测试结构

21.4 精简测试代码

21.4.1 用结构来解释

21.4.2 利用结构来共享

21.4.3 强调正面

21.4.4 代理给从属对象

21.5 断言和预期

21.6 具体值和变量

第22章 构造复杂的测试数据

22.1 简介

22.2 测试数据建造者

22.3 创建一些类似的对象

22.4 组合建造者

22.5 利用工厂方法强调领域模型

22.6 从使用的角度消除重复

22.6.1 首先,消除重复

22.6.2 然后,让游戏升级

22.7 沟通第

第23章 测试诊断

23.1 要的就是失败

23.2 小、专注、良好命名的测试

23.3 解释性断言消息

23.4 利用匹配器对象来突出细节

23.5 自描述的值

23.6 明显的预装值

23.7 跟踪者对象

23.8 明确断言预期得到满足

23.9 诊断是一级功能

第24章 测试的灵活性

24.1 简介

24.2 针对信息测试,而非针对表示方法

24.3 准确断言

24.4 准确预期

24.4.1 准确的参数匹配

24.4.2 允许和预期

24.4.3 忽略不相关的对象

24.4.4 调用次序

24.4.5 jMock States的威力

24.4.6 更为自由的预期

24.5 “豚鼠”对象

第五部分 高级主题

第25章 测试持久性

25.1 简介

25.2 隔离影响持久状态的那些测试

25.3 明确测试的事务边界

25.4 测试一个执行持久操作的对象

25.5 测试对象能够持久

25.5.1 来回转换持久对象

25.5.2 来回转换相关的实体

25.6 但数据库测试很慢

第26章 单元测试与线程

26.1 简介

26.2 分离功能和并发策略

26.2.1 并发地搜索拍卖

26.2.2 引入Executor

26.2.3 实现.Auction Search

26.3 对同步进行单元测试

26.3.1 针对Auction Search的压力测试

26.3.2 两次修复竞争条件

26.4 对被动对象进行压力测试

26.5 同步测试线程和后台的多线程

26.6 单元压力测试的局限性

第27章 测试异步代码

27.1 简介

27.2 取样或监听

27.3 两种实现

27.3.1 捕获通知

27.3.2 轮询变更

27.3.3 超时

27.3.4 改进探测类

27.4 轻易成功的测试

27.5 错过更新

27.6 测试没有效果的活动

27.7 区分同步和断言

27.8 事件源外部化

后记模拟对象简史

附录A jMock2速查手册

附录B编写Hamcrest Matcher

参考文献

内容摘要:

《测试驱动的面向对象软件开发》采用通俗易懂的比喻,众所周知的编程语言,短小精悍的工作实例,深入浅出的分析处理——仿佛在和几位世界级的编程高手一边喝茶,一边聊天,循序渐进地让读者在不知不觉中进入编程的最高境界。即使是刚刚入门的初学者,也会从中找到读书的乐趣。因为可以从一开始就找到开启面向对象开发大门的钥匙;随着经验的积累,编程水平的提高,再来看这《测试驱动的面向对象软件开发》,用不同的视角重新审视程序,又会体会到更深层的编程哲学。
  《测试驱动的面向对象软件开发》是编程爱好者的启蒙指南,更是系统分析人员、测试人员、程序设计人员、软件开发人员以及面向对象程序研究人员等专业人士革新编程思想的必备手册。

编辑推荐:

《测试驱动的面向对象软件开发》对于更快交付更好的软件,测试驱动开发(TDD)现在是一种已经确立的技术。TDD基于一个简单的思想:在写产品代码之前先写它的测试代码。但是,这个“简单”的思想需要一些技能和判断才能做得好。现在有了一本TDD实践指南。让您深入理解那些基本概念,并向您展示了如何让测试来引导开发,“培育”出一致的、可靠的。可维护的软件。
  作者描述了他们使用的过程,努力实现的设计原则。以及完成工作的一些工具。通过一个详细实现的例子,您可以看到TDD如何在各个层次上工作,如何利用测试来驱动特征开发和代码的面向对象结构,如何利用模拟对象来发现并描述对象之间的关系。在这个过程中。《测试驱动的面向对象软件开发》系统地讨论了开发团队在使用TDD时遇到的挑战——从过程中集成TDD到测试最难的特征。
  旧代码带来的新思维,Robert C.Martin高度评价,Kent Berk作序推荐。
  《测试驱动的面向对象软件开发》包括以下内容:
  ●如何有效实现TDD:启动,然后在整个项目中保持你们的冲劲。
  ●如何创建更干净的、更有表现力的、更可维护的代码。
  ●如何利用测试。对可持续的品质保持最严格的关注。
  ●理解在真实软件开发的环境中,TDD、模拟对象、面向对象设计如何交织在一起。
  ●如何利用模拟对象来指导面向对象设计。
  ●如何在TDD困难的地方取得成功:管理复杂的测试数据。测试持久层和并发。

书籍规格:

书籍详细信息
书名测试驱动的面向对象软件开发站内查询相似图书
丛书名开发人员专业技术丛书
9787111304258
如需购买下载《测试驱动的面向对象软件开发》pdf扫描版电子书或查询更多相关信息,请直接复制isbn,搜索即可全网搜索该ISBN
出版地北京出版单位机械工业出版社
版次1版印次1
定价(元)59.0语种简体中文
尺寸24 × 19装帧平装
页数 358 印数 3000

书籍信息归属:

测试驱动的面向对象软件开发是机械工业出版社于2010.5出版的中图分类号为 TP311.52 的主题关于 面向对象语言-软件开发 的书籍。