第1章 引言 1
第2章 走完业务软件的“最后一英里” 4
2.1 “最后一英里”问题的源头 4
2.2 理解问题 5
2.3 解决“最后一英里”问题 6
2.4 人 7
2.5 自动化 7
2.6 针对自动测试非功能性需求的设计 8
2.7 将设计与生产环境分离 9
2.8 无版本软件 10
第3章 一个巢穴,二十种Ruby DSL 11
3.1 巢穴 11
3.2 使用全局函数 13
3.3 使用对象 16
3.4 使用闭包 21
3.5 执行上下文 22
3.6 字面量集合 24
3.7 动态接收 29
3.8 总结 31
第4章 语言的盛景 32
4.1 简介 32
4.2 样本 32
4.3 各种各样的分类 34
4.4 语言的“生命之树” 38
4.5 这些都很有趣,但我为什么要关心 39
第5章 多语言开发 40
5.1 多语言开发 41
5.2 用Groovy的方式读取文件 41
5.3 JRuby和isBlank 42
5.4 Jaskell和函数式编程 44
5.5 Java测试 46
5.6 多语言开发与未来之路 48
第6章 对象健身操 49
6.1 九步迈向优秀软件设计 49
6.2 练习 49
6.3 总结 57
第7章 迭代经理是什么角色 58
7.1 什么是迭代经理 58
7.2 怎样成为好的迭代经理 58
7.3 迭代经理不做什么 60
7.4 迭代经理与团队 60
7.5 迭代经理与客户 61
7.6 迭代经理与迭代 62
7.7 迭代经理与项目 63
7.8 总结 63
第8章 项目生命体征 64
8.1 项目生命体征 64
8.2 项目生命体征与健康状况 64
8.3 项目生命体征与信息指示器 65
8.4 项目生命体征:项目范围增量图 65
8.5 项目生命体征:交付质量 67
8.6 项目生命体征:预算燃尽 69
8.7 项目生命体征:当前开发状态 70
8.8 项目生命体征:团队感觉 71
第9章 消费者驱动契约:服务演化模式 73
9.1 演化服务:一个例子 74
9.2 Schema版本 75
9.3 破坏式的变化 79
9.4 消费者驱动契约 81
第10章 领域标注 88
10.1 当领域驱动设计遇到标注 88
10.2 案例分析:Leroy的卡车 92
10.3 总结 104
第11章 重构Ant构建文件 105
11.1 简介 105
11.2 Ant重构列表 107
11.3 总结 128
11.4 参考文献 129
11.5 资源 129
第12章 一键发布 130
12.1 持续构建 130
12.2 超越持续构建 131
12.3 全生命周期的持续集成 131
12.4 第一道门——提交测试 133
12.5 第二道门——验收测试套件 134
12.6 部署准备阶段 135
12.7 后续的测试阶段 136
12.8 让过程自动化 137
12.9 总结 138
第13章 企业Web应用中的敏捷测试和瀑布测试 139
13.1 简介 139
13.2 测试生命周期 140
13.3 测试分类 142
13.4 环境 147
13.5 问题管理 150
13.6 工具 150
13.7 报表与度量 151
13.8 测试角色 151
13.9 参考文献 154
第14章 实用主义的性能测试 155
14.1 什么是性能测试 155
14.2 需求采集 156
14.3 运行测试 159
14.4 沟通 164
14.5 流程 165
14.6 总结 167
参考书目 168