ThoughtWorks 文集 - 敏捷开发最佳实践精选
本书从《ThoughtWorks 文集》13篇文章中精选5篇,涵盖持续集成、项目度量、测试策略、面向对象设计等核心敏捷实践。
核心内容
1. 对象健身操 - 九步迈向优秀软件设计(Jeff Bay)
作者提出9条规则来提升面向对象设计质量:
- 方法只使用一级缩进 - 每个方法只做一件事,避免多层嵌套控制结构
- 拒绝使用 else 关键字 - 用卫语句、提前返回、策略模式替代复杂条件分支
- 封装所有原生类型和字符串 - 用领域对象(如 Hour、Money)替代裸类型参数
- 一行代码只有一个”.”运算符 - 遵守迪米特法则,减少对象间耦合
- 不要使用缩写 - 保持类名方法名简洁可读
- 保持实体对象简单清晰 - 类不超过50行,包不超过10个文件
- 任何类中实例变量不超过两个 - 高内聚,单一职责
- 使用一流的集合 - 集合类只包含集合,不含其他成员变量
- 不使用任何 Getter/Setter/Property - 彻底封装,“Tell, don’t ask”
2. 项目生命体征 - 敏捷项目度量(Dave Farley)
5个关键度量指标:
- 项目范围增量图 - 追踪已完成的故事/特性数量,发现瓶颈
- 交付质量 - 缺陷数量趋势,越早发现越便宜
- 预算燃尽 - 剩余工作量 vs 时间
- 当前开发状态 - 故事板与故事卡
- 团队感觉 - 团队成员情绪状态
3. 一键发布 - 全生命周期持续集成(Dave Farley)
持续集成管道五阶段:
- 提交测试 - 快速失败,单元测试+冒烟测试
- 验收测试套件 - 端到端功能验证
- 部署准备 - 环境基线化,标准化配置
- 后续测试 - 性能测试、集成测试可选
- 部署到生产 - 自动化部署流程
关键原则:
- 二进制文件统一管理,避免重复编译
- 配置信息版本控制,代码与配置分离
- 每一步都自动化,减少人为错误
4. 企业Web应用中的敏捷测试 vs 瀑布测试(Kristan Vingrys)
敏捷测试特点:
- 测试阶段可重叠,无需严格准入标准
- 单元测试和功能测试是重点
- 100%自动化目标
- 所有团队成员参与测试
测试类型与标准:
- 单元测试: 100%自动化,>90%覆盖率
- 功能测试: 90%+自动化
- 探索性测试: 结构化的随机测试
- 集成测试: 100%自动化
- 性能测试: 容量、负载、压力三类
- 用户验收测试(UAT): 业务代表认可
5. 实用主义的性能测试(James Bull)
性能测试四要素:需求、数据、沟通、流程
关键建议:
- 性能需求要与客户共同确定
- 从项目一开始就进行性能测试
- 每周运行全套性能测试
- 用mock/stub替代第三方系统
- 测试环境与生产环境按比例模拟
核心观点
- 持续集成是敏捷项目的基石,越早发现问题修复成本越低
- 面向对象设计需要刻意练习,9条规则是有效训练方法
- 性能测试应贯穿整个项目周期,而非最后阶段
- 测试自动化程度直接决定敏捷项目的质量保障能力