《测试驱动开发的艺术》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:(芬)科斯科拉著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2010
  • ISBN:9787115238368
  • 页数:334 页
图书介绍:本书介绍了一种更快更好的开发软件的方法——测试驱动开发。全书共分三个部分,分别讲述了TDD和ATDD的相关知识、基本概念、方法,测试驱动开发的实践,以及如何验收测试驱动开发。

第一部分TDD入门 1

第1章 综述 2

1.1挑战:用正确的方法解决正确的问题 3

1.1.1糟糕的代码质量 3

1.1.2不能满足客户需求 4

1.2解决方案:测试驱动 4

1.2.1高质量的TDD 5

1.2.2用ATDD满足客户需求 6

1.2.3这对我有什么好处 7

1.3正确地做事:TDD 9

1.3.1测试-编码-重构 9

1.3.2增量式开发 12

1.3.3重构以保持代码的健康 16

1.3.4保证软件正常运行 18

1.4做正确的事:ATDD 20

1.4.1名字的含义 20

1.4.2紧密协作 21

1.4.3把测试作为沟通的共同语言 22

1.5TDD工具 23

1.5.1使用xUnit做单元测试 23

1.5.2支持ATDD的测试框架 23

1.5.3持续集成及构建 24

1.5.4代码覆盖率 25

1.6小结 26

第2章TDD入门 28

2.1从需求到测试 29

2.1.1分解需求 29

2.1.2什么是好的测试 30

2.1.3依照测试的列表工作 30

2.1.4意图编程 30

2.2选择第一个测试 31

2.2.1创建测试列表 31

2.2.2写第一个失败的测试 32

2.2.3通过第一个测试 34

2.2.4再加一个测试 36

2.3广度优先,深度优先 38

2.3.1继续使用伪实现 39

2.3.2清除掉伪实现 39

2.4别忘了重构 41

2.4.1测试代码中的可重构之处 42

2.4.2移除多余的测试 43

2.5添加错误处理 44

2.5.1验证异常 44

2.5.2把方法重构得更短些 45

2.5.3保持方法平衡 46

2.5.4验证异常中的详细信息 47

2.6无穷尽的测试 48

2.6.1性能测试 48

2.6.2有些失望的结局 49

2.7小结 50

第3章 小步重构 51

3.1探寻解决方案 51

3.1.1用Spike开发原型 52

3.1.2写测试学知识 52

3.1.3学习API的Spike样例 52

3.2以受控的方式修改设计 54

3.3进一步延伸新设计 61

3.3.1保持兼容 62

3.3.2替换实现 66

3.4小结 68

第4章TDD的概念与模式 69

4.1如何编写及通过测试 70

4.1.1测试选择技巧 70

4.1.2实现技巧 72

4.1.3测试驱动的基本准则 73

4.2重要的测试概念 74

4.2.1夹具是测试的上下文 74

4.2.2用测试替身替换依赖 76

4.2.3基于状态及基于交互的的测试 76

4.3近处观察测试替身 78

4.3.1测试替身的例子 78

4.3.2伪实现、测试桩和模拟对象 79

4.3.3模拟对象实战 80

4.4提高设计的可测试性的准则 81

4.4.1尽量使用组合而非继承 82

4.4.2避免使用static关键字以及Singleton模式 83

4.4.3隔离依赖 84

4.4.4注入依赖 86

4.5单元测试模式 88

4.5.1断言模式 89

4.5.2夹具模式 92

4.5.3测试模式 95

4.6在遗留代码基础上工作 101

4.6.1测试驱动遗留开发 101

4.6.2分析变化 102

4.6.3准备好变化 103

4.6.4测试驱动变更 103

4.7 小结 104

第二部分 针对特定技术应用TDD 106

第5章 测试驱动Web组件 106

5.1在60秒内介绍Web应用中的MVC 107

5.2控制器 107

5.2.1测试驱动Java Servlets 108

5.2.2测试驱动Spring控制器 117

5.3用测试先行的方法构建视图 120

5.3.1用JspTest 测试驱动JSP 121

5.3.2测试驱动Velocity模板 125

5.4在基于控件的Web框架基础上TDD 129

5.4.1剖析典型框架 130

5.4.2用测试先行的方法开发Wicket页面 130

5.5小结 135

第6章 测试驱动数据访问 137

6.1探索问题领域 137

6.1.1跨越边界的数据访问 138

6.1.2用DAO模式分层 138

6.2用单元测试驱动数据访问 139

6.2.1JDBCAPI的缺点 140

6.2.2用Spring的JdbcTemplate简化开发 144

6.2.3用Hibernate轻松地做TDD 149

6.3编码前写集成测试 155

6.3.1什么是集成测试 155

6.3.2选择数据库 157

6.4集成测试实战 159

6.4.1第一个Hibernate集成测试 159

6.4.2创建数据库模式 162

6.4.3实现产品代码 164

6.4.4 用事务夹具保持数据清洁 165

6.5为集成测试填充数据 166

6.5.1用Hibernate填充对象 167

6.5.2用DbUnit填充数据 168

6.6使用单元测试还是集成测试 172

6.6.1在TDD周期中使用集成测试 172

6.6.2两全其美 173

6.7文件系统访问 173

6.7.1项目中实际遇到的一个问题 174

6.72提高文件访问可测试性的实践 174

6.8小结 175

第7章 测试驱动不可预测功能 177

7.1测试驱动时间相关功能 177

7.1.1例子:日志和时间戳 177

7.1.2抽象出系统时间 179

7.13用虚设的系统时间测试日志输出 181

7.2测试驱动多线程代码 184

7.2.1该测什么 184

7.2.2线程安全 185

7.2.3阻塞操作 189

7.2.4启动及中止线程 191

7.2.5异步执行 193

7.2.6线程同步 195

7.3标准同步对象 196

7.3.1信号量 196

7.3.2 latche 196

7.3.3 barrier 196

7.3.4 futures 197

7.4小结 197

第8章 测试驱动Swing代码 198

8.1 Swing UI中该测试什么 198

8.1.1内部基础设施及实用程序 199

8.1.2渲染及布局 199

8.1.3交互 199

8.2 可测试UI代码的模式 200

8.2.1经典MVP 201

8.2.2Supervising Controller 201

8.2.3Passive View 203

8.3 测试视图控件的工具 205

8.3.1为什么要用工具 205

8.3.2TDD友好的工具 206

8.4 测试驱动视图组件 210

8.4.1着手设计 211

8.4.2添加及操作标准控件 212

8.4.3绘图 216

8.4.4给点添加行为 224

8.5小结 227

第三部分基于ATDD构建产品 230

第9章 解析验收测试驱动开发 230

9.1用户故事介绍 231

9.1.1故事的格式 231

9.1.2讲故事的力量 231

9.1.3用户故事的例子 232

9.2验收测试 232

9.2.1故事的样例测试 232

9.2.2验收测试的特征 233

9.2.3实现验收测试 236

9.3 理解过程 237

9.3.1 ATDD周期 237

9.3.2 迭代内的ATDD 242

9.4作为团队活动的ATDD 245

9.4.1客户角色定义 245

9.4.2客户与谁一起写测试 246

9.4.3需要多少测试人员 247

9.5 ATDD的好处 247

9.5.1“完成”的定义 247

9.5.2协作 248

9.5.3信任及承诺 249

9.5.4通过例子验收 249

9.5.5弥合差距 249

9.6我们究竟要测试什么 250

9.6.1应该针对UI测试吗 250

9.6.2可以使用部分系统的伪实现吗 251

9.6.3应该直接测试领域逻辑吗 251

9.7工具概览 252

9.7.1基于表格的框架 252

9.7.2基于文本的框架 253

9.7.3基于脚本语言的框架 254

9.7.4自制工具 254

9.8小结 254

第10章用Fit创建验收测试 256

10.1 Fit是什么 256

10.1.1用Fit进行ATDD 257

10.1.2包含夹具表的测试文档 259

10.1.3夹具:表格和类的结合 260

10.2三个内建夹具 261

10.2.1 ColumnFixture 261

10.2.2 RowFixture 263

10.2.3 ActionFixture 266

10.2.4扩展内建夹具 268

10.3 FitLibrary对内建夹具的扩展 269

10.3.1 DoFixture 269

10.3.2 SetUpFixture 272

10.3.3还有更多功能 273

10.4执行Fit测试 273

10.4.1单个测试文档 274

10.4.2把所有测试放在一个目录结构中 274

10.4.3把测试整合进自动化测试中 275

10.5小结 276

第11章 执行验收测试的策略 277

11.1验收测试该检测什么 277

11.1.1抓住问题本质 278

11.1.2避免波动频繁界面 278

11.1.3在技术障碍最小的地方越过 279

11.2实现方式 279

11.2.1端到端 280

11.2.2绕过UI进行测试 281

11.2.3直接测试内部逻辑 284

11.2.4替换无关组件 285

11.2.5测试后门 286

11.3技术相关考虑 287

11.3.1库 287

11.3.2无界面的分布式系统 288

11.3.3控制台应用 289

11.3.4 GUI应用 290

11.3.5 Web应用 293

11.4常见问题的处理技巧 295

11.4.1加快测试执行速度 296

11.4.2减少测试的复杂度 299

11.4.3管理测试数据 300

11.5小结 301

第12章TDD应用 302

12.1成功采用TDD的必要条件 302

12.1.1理解本质 302

12.1.2紧迫感 303

12.1.3成就感 303

12.1.4表现诚实 304

12.1.5变革的时机 304

12.2让其他人参与进来 305

12.2.1引导变革的角色和能力 305

12.2.2改变需要时间 307

12.3如何应对阻力 307

12.3.1识别阻力 307

12.3.2应对阻力的三种常见方法 309

12.3.3应对阻力的技巧 310

12.3.4挑选战场 312

12.4如何推进变革 313

12.4.1造势 313

12.4.2降低门槛 314

12.4.3培训 315

12.4.4共享及感染 316

12.4.5指导和督促 317

12.4.6通过分配角色让人们参与进来 318

12.4.7打破稳定状态 319

12.4.8迟后的奖励 319

12.5小结 319

附录A JUnit 4简明教程 321

附录B JUnit 3.8简明教程 323

附录C EasyMock简明教程 325

附录D 通过Ant运行测试 327

相关资源 331