图书介绍
测试驱动的面向对象软件开发PDF|Epub|txt|kindle电子书版本网盘下载
- (美)弗里曼,(美)普雷斯著 著
- 出版社: 北京:机械工业出版社
- ISBN:9787111304258
- 出版时间:2010
- 标注页数:253页
- 文件大小:35MB
- 文件页数:270页
- 主题词:面向对象语言-软件开发
PDF下载
下载说明
测试驱动的面向对象软件开发PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一部分 简介2
第1章 测试驱动开发的要点2
1.1 软件开发是一个学习过程2
1.2 反馈是基本工具2
1.3 支持变化的实践3
1.4 测试驱动开发简介4
1.5 大局5
1.6 用户场景测试6
1.7 测试的级别6
1.8 外部品质与内部品质7
第2章 测试驱动开发与对象9
2.1 对象之网9
2.2 值与对象9
2.3 对象通信10
2.4 吩咐,不要问11
2.5 但有时要问12
2.6 对协作的对象执行单元测试13
2.7 用模拟对象支持TDD13
第3章 工具介绍15
3.1 如果您已了解这些框架,可以跳过本章15
3.2 JUnit 4简介15
3.2.1 测试用例15
3.2.2 断言16
3.2.3 预期异常16
3.2.4 测试装置16
3.2.5 测试执行者17
3.3 Hamcrest匹配器和assertThat()17
3.4 jMock2:模拟对象18
第二部分 测试驱动开发过程第4章 启动测试驱动循环22
4.1 简介22
4.2 先测试一个可行走的骨架22
4.3 决定行走的骨架的形状23
4.4 创建反馈源25
4.5 尽早暴露不确定性25
第5章 保持测试驱动循环27
5.1 简介27
5.2 每个特征都从一个验收测试开始27
5.3 分离测量进度的测试和捕捉回归错误的测试28
5.4 从最简单的成功场景开始测试28
5.5 编写您愿意读的测试29
5.6 看着测试失败29
5.7 从输入开发到输出开发29
5.8 针对行为进行单元测试,而非针对方法30
5.9 聆听测试30
5.10 调整循环31
第6章 面向对象风格32
6.1 简介32
6.2 为可维护性而设计32
6.3 内部与同级的比较34
6.4 没有“与”、“或”、“但是”35
6.5 对象同级构造型35
6.6 组合比它的部分之和更简单36
6.7 上下文无关性37
6.8 正确地隐藏信息38
6.9 固执己见的观点38
第7章 实现面向对象设计39
7.1 先写测试怎样有助于设计39
7.2 通信比分类更重要39
7.3 值类型40
7.4 对象来自何处41
7.4.1 分解41
7.4.2 萌芽42
7.4.3 打包43
7.5 利用接口确定关系43
7.6 接口也要重构44
7.7 组合对象以描述系统行为44
7.8 迈向更高层的编程45
7.9 关于类46
第8章 基于第三方代码构建47
8.1 简介47
8.2 只模拟您拥有的类型47
8.2.1 不要模拟您不能修改的类型47
8.2.2 编写一个适配层48
8.3 在集成测试中模拟应用对象48
第三部分 工作的例子50
第9章 委托开发一个拍卖狙击者50
9.1 从头开始50
9.2 与一次拍卖通信52
9.2.1 拍卖协议52
9.2.2 XMPP消息53
9.3 安全实现目标53
9.4 这不是真的54
第10章 可行走的骨架55
10.1 从壁橱中取出骨架55
10.2 我们的第一个测试55
10.3 一些初始选择57
10.3.1 用户场景测试58
10.3.2 准备开始59
第11章 通过第一个测试60
11.1 构建测试的装配60
11.1.1 应用执行者60
11.1.2 伪造的拍卖62
11.1.3 消息代理64
11.2 测试失败和通过65
11.2.1 第一个用户界面65
11.2.2 显示狙击者状态66
11.2.3 连接到拍卖67
11.2.4 从拍卖接收回应68
11.3 必需的最小实现70
第12章 准备竞拍71
12.1 对市场的介绍71
12.2 针对竞拍的测试71
12.2.1 从测试开始71
12.2.2 扩展伪造的拍卖72
12.2.3 令人吃惊的失败75
12.2.4 由外至内开发76
12.2.5 对细节的无限关注76
12.3 AuctionMessageTranslator类77
12.3.1 提取出一个新类77
12.3.2 第一个单元测试77
12.3.3 完成用户界面循环80
12.3.4 我们实现了什么81
12.4 解析价格消息81
12.4.1 引入消息事件类型81
12.4.2 第二个测试81
12.4.3 发现进一步的工作83
12.5 完成工作83
第13章 狙击者发出竞拍出价84
13.1 引入AuctionSniper84
13.1.1 一个新类及其依赖关系84
13.1.2 关注、关注、关注86
13.2 发送竞拍出价86
13.2.1 Auction接口86
13.2.2 AuctionSniper发出竞拍出价87
13.2.3 利用AuctionSniper成功竞拍88
13.2.4 用户场景测试通过了90
13.3 整理实现90
13.3.1 提取出XMPPAuction90
13.3.2 提取用户界面91
13.3.3 整理翻译者类92
13.4 延迟决定94
13.5 自然发生的设计94
第14章 狙击者赢得拍卖95
14.1 先写一个失败的测试95
14.2 谁知道竞拍者96
14.3 狙击者还有话要说98
14.4 狙击者需要某种状态99
14.5 狙击者获胜101
14.6 取得稳定的进展102
第15章 迈向真正的用户界面103
15.1 更现实的实现103
15.1.1 接下来我们该做什么103
15.1.2 替换JLabel104
15.1.3 还是很丑105
15.2 显示价格细节105
15.2.1 先写一个失败的测试105
15.2.2 狙击者送出状态106
15.2.3 展现竞拍狙击者108
15.3 简化狙击者事件111
15.3.1 跟着感觉走111
15.3.2 重新确定sniperBidding()的目标112
15.3.3 填人数字113
15.4 更进一步114
15.4.1 转换胜利和失败114
15.4.2 修整表模型116
15.4.3 面向对象的列117
15.4.4 缩短事件路径117
15.5 最后润色119
15.5.1 针对列标题的测试119
15.5.2 实现TableModel119
15.5.3 目前已足够120
15.6 短评121
15.6.1 单一职责121
15.6.2 软件微创手术121
15.6.3 程序员过敏症121
15.6.4 庆贺思维转变121
15.6.5 这不是唯一的解决方案122
第16章 狙击多项物品123
16.1 针对多项物品的测试123
16.1.1 两件物品的故事123
16.1.2 ApplicationRunner类124
16.1.3 偏离主题,改进失败信息125
16.1.4 重新设计Main的结构125
16.1.5 扩展表模型127
16.2 通过用户界面添加物品129
16.2.1 更简单的设计129
16.2.2 更新测试130
16.2.3 添加一个动作条131
16.2.4 设计时刻131
16.2.5 另一层次的测试132
16.2.6 实现UserRequestListener133
16.3 短评134
16.3.1 取得稳定的进展134
16.3.2 TDD的秘密134
16.3.3 发布它134
第17章 分解Main136
17.1 发现角色136
17.2 提取Chat136
17.2.1 分离Chat136
17.2.2 封装Chat138
17.2.3 编写一个新测试139
17.3 提取Connection139
17.4 提取出SnipersTableModel141
17.4.1 狙击启动者类SniperLauncher141
17.4.2 狙击组合142
17.5 短评144
17.5.1 增量式架构144
17.5.2 三点不动145
17.5.3 动态设计的同时也进行静态设计145
17.5.4 对notToBeGCd的另一种修复方法146
第18章 填充细节147
18.1 更有用的应用147
18.2 适可而止147
18.2.1 引入落后状态147
18.2.2 第一个失败的测试148
18.2.3 输入停止价格149
18.2.4 传送停止价格150
18.2.5 约束AuctionSniper151
18.3 短评153
18.3.1 增量式设计用户界面153
18.3.2 其他建模技术也有用153
18.3.3 领域类型比字符串好153
第19章 处理失败154
19.1 如果它不能工作154
19.2 检测失败155
19.3 显示失败156
19.4 断开狙击者157
19.5 记录失败158
19.5.1 填充测试159
19.5.2 翻译者中的失败报告159
19.5.3 生成日志消息160
19.5.4 完成这次开发循环161
19.6 短评162
19.6.1 “切香肠的逆过程”式开发162
19.6.2 用一些小方法来表达意图163
19.6.3 日志也是一项功能163
第四部分 可持续的测试驱动开发第20章 聆听测试166
20.1 简介166
20.2 我需要模拟一个不能替换的对象166
20.2.1 单例是依赖关系166
20.2.2 从过程到对象167
20.2.3 隐式依赖也是依赖169
20.3 记日志是一项功能169
20.3.1 通知而不是记日志170
20.3.2 但这种想法很疯狂170
20.4 模拟具体的类171
20.5 不要模拟值类型172
20.6 膨胀的构造方法173
20.7 令人困惑的对象174
20.8 太多依赖关系175
20.9 太多预期176
20.10 测试会告诉我们什么178
第21章 测试可读性180
21.1 简介180
21.2 测试名称描述功能181
21.3 规范的测试结构182
21.4 精简测试代码184
21.4.1 用结构来解释184
21.4.2 利用结构来共享184
21.4.3 强调正面185
21.4.4 代理给从属对象185
21.5 断言和预期185
21.6 具体值和变量186
第22章 构造复杂的测试数据187
22.1 简介187
22.2 测试数据建造者187
22.3 创建一些类似的对象189
22.4 组合建造者190
22.5 利用工厂方法强调领域模型190
22.6 从使用的角度消除重复191
22.6.1 首先,消除重复191
22.6.2 然后,让游戏升级192
22.7 沟通第一193
第23章 测试诊断194
23.1 要的就是失败194
23.2 小、专注、良好命名的测试194
23.3 解释性断言消息195
23.4 利用匹配器对象来突出细节195
23.5 自描述的值195
23.6 明显的预装值196
23.7 跟踪者对象196
23.8 明确断言预期得到满足197
23.9 诊断是一级功能197
第24章 测试的灵活性198
24.1 简介198
24.2 针对信息测试,而非针对表示方法199
24.3 准确断言200
24.4 准确预期201
24.4.1 准确的参数匹配201
24.4.2 允许和预期201
24.4.3 忽略不相关的对象202
24.4.4 调用次序203
24.4.5 jMock States的威力205
24.4.6 更为自由的预期206
24.5 “豚鼠”对象206
第五部分 高级主题210
第25章 测试持久性210
25.1 简介210
25.2 隔离影响持久状态的那些测试211
25.3 明确测试的事务边界212
25.4 测试一个执行持久操作的对象213
25.5 测试对象能够持久216
25.5.1 来回转换持久对象216
25.5.2 来回转换相关的实体218
25.6 但数据库测试很慢218
第26章 单元测试与线程219
26.1 简介219
26.2 分离功能和并发策略220
26.2.1 并发地搜索拍卖220
26.2.2 引入Executor220
26.2.3 实现AuctionSearch221
26.3 对同步进行单元测试223
26.3.1 针对AuctionSearch的压力测试223
26.3.2 两次修复竞争条件225
26.4 对被动对象进行压力测试226
26.5 同步测试线程和后台的多线程227
26.6 单元压力测试的局限性228
第27章 测试异步代码229
27.1 简介229
27.2 取样或监听230
27.3 两种实现231
27.3.1 捕获通知231
27.3.2 轮询变更233
27.3.3 超时234
27.3.4 改进探测类234
27.4 轻易成功的测试235
27.5 错过更新236
27.6 测试没有效果的活动237
27.7 区分同步和断言237
27.8 事件源外部化238
后记 模拟对象简史239
附录A jMock2速查手册243
附录B 编写Hamcrest Matcher250
参考文献252