ThoughtWorks文集第二辑:敏捷实践的艺术

基本信息

  • 来源:/books/ThoughtWorks2.pdf
  • 页数:94页
  • 作者:覃其慧、章昱恒、陈金洲、乔梁、胡凯、李光磊、熊节、李贝等
  • 性质:ThoughtWorks敏捷实践案例合集(续集)
  • 出版:InfoQ企业软件开发丛书,C4Media Inc. 2010

核心内容

本书记录了ThoughtWorks中国团队在多个敏捷项目中积累的最佳实践,涵盖测试策略、数据迁移、富客户端开发、版本控制、持续集成、TDD实践等领域。

第一章:我和敏捷团队的五个约定

作者:覃其慧

测试人员在敏捷团队中的角色定位:

  1. 约定1:参加客户需求会议——预防胜于治疗,尽早了解需求,减少缺陷
  2. 约定2:为自动化测试提供意见——测试人员更了解用户行为模式和易错点
  3. 约定3:不要测试所有路径——按价值优先级测试,关注高风险功能
  4. 约定4:项目经理应咨询测试人员关于交付风险
  5. 约定5:测试人员也要参与敏捷实践——结对编程、INVEST原则等

核心观点:测试人员不是”找bug的人”,而是”质量守护者”,需要深度参与需求分析和设计阶段。

第二章:在敏捷开发中做好数据迁移

作者:章昱恒

CRM系统数据迁移案例(旧系统50GB数据):

  • DBA需要有自己的”故事墙”管理任务
  • 参加IPM(迭代计划会议),理解每个story的数据需求
  • 制定目标:7个数据迁移story
  • 风险评估:数据质量、脏数据、遗留技术债

关键实践:

  • 渐进式数据库开发
  • 测试驱动 + 持续集成用于数据迁移
  • 引入精益软件开发技巧保障数据质量

第三章-四章:富客户端/RIA原则与实践

作者:陈金洲

富客户端开发原则:

  • 职责分离:UI、业务逻辑、数据访问
  • 可测试性设计
  • 模块化架构

第五章:为什么我们要放弃Subversion

作者:乔梁

分析SVN的局限性,推荐分布式版本管理工具。核心观点:分布式版本控制系统能更好地支持并行开发和代码审查。

第六章:“持续集成”也需要重构

作者:胡凯

持续集成系统的维护问题:

  • CI脚本需要像产品代码一样维护
  • 定期重构CI配置
  • 保持反馈快速和稳定

第七章:Mock不是测试的银弹

作者:未知

讨论Mock框架的适用场景:

  • Mock适用于隔离外部依赖
  • 但不应滥用,过度Mock会降低测试可信度
  • 真实系统集成测试更有价值

第八章:环境无关的环境

作者:李光磊

如何建立规范、统一开发环境:

  • 统一IDE设置、shell配置
  • Docker/虚拟机实现环境一致性
  • 一键部署脚本

第九章:Tech Lead的三重人格

作者:熊节

Tech Lead的三个核心职责:

  1. 技术决策者:架构设计、攻克技术难题、确定设计方案
  2. 流程监督人:开发环境、持续集成、测试
  3. 干扰过滤器:与客户技术团队沟通、与BA/QA协作、处理杂事

核心观点:Tech Lead不是”最厉害的程序员”,而是”团队效率的最大化者”。

第十章:自动化测试的分层结构

作者:李贝

提出三层架构:

  1. 测试用例层:表达测试逻辑,使用业务语言
  2. 领域层:封装HTTP请求、浏览器控制、结果解析
  3. 待测系统层:实际被测试的系统

优势:

  • 测试逻辑清晰易理解
  • 减少测试脆弱性
  • 降低维护成本

番外篇:TDD实践之实用主义

作者:李光磊

三个TDD实践创新:

  1. 用中文写测试用例名——在特定团队场景下,中文比英文表达更精确
  2. 用大量测试来驱动——先写所有测试名称,再逐步实现
  3. 一个环境,多个断言——共享测试环境的批量断言

核心思想:遵循原则背后的精神,而非死板遵守形式。

关键概念

  • INVEST原则(独立、可协商、价值、可估算、短小、可测)
  • 故事墙(Story Wall)
  • IPM(迭代计划会议)
  • 分层测试架构
  • Tech Lead三重人格

与其他知识的关联