ThoughtWorks文集精选版 - 5篇敏捷实践文章

概述

本文集从《ThoughtWorks文集》精选5篇文章编撰而成,是敏捷入门手册。文章共同点是介绍最根本、最易施行、又能立竿见影的敏捷实践,帮助读者从持续集成和测试入手,建立项目健康保障体系。


核心文章摘要

1. 对象健身操 - Jeff Bay

九步迈向优秀软件设计

作者给出”九诫”作为练习规则,在1000行代码的微型项目中严格实践,提升面向对象编程和重构能力:

  1. 方法只使用一级缩进 - 每个方法只做一件事,嵌套控制结构意味着同时做多件事
  2. 拒绝使用else关键字 - 用多态、策略模式、卫语句和提前返回替代
  3. 封装所有的原生类型和字符串 - 使用小对象(如Hour、Money)提高可维护性
  4. 一行代码只有一个”.”运算符 - 遵循迪米特法则,避免对象间过度耦合
  5. 不要使用缩写 - 抵制类名、方法名缩写诱惑
  6. 保持实体对象简单清晰 - 类不超过50行,包不超过10个文件
  7. 任何类中的实例变量不要超过两个 - 降低类的内聚性
  8. 使用一流的集合 - 包含集合的类不能再有其他成员变量
  9. 不使用任何Getter/Setter/Property - 让对象自己管理自己的行为

关键洞察:优秀设计背后的核心概念其实并不高深——内聚性、松耦合、零重复、封装、可测试性、可读性以及单一职责。困难在于如何付诸实践。


2. 项目生命体征 - Dave Farley

如何运用沟通技巧获悉项目健康情况

介绍适用于敏捷项目的度量标准和展现方式:

度量维度信息指示器用途
范围增量图燃尽图发现瓶颈
交付质量缺陷数量图监控质量问题
预算燃尽预算燃尽图跟踪资源消耗
开发状态故事板与故事卡可视化当前工作
团队心情团队心情图关注团队状态

关键原则:度量数据是用来衡量软件质量和测试成果的,而不是用来考核个人的。


3. 一键发布 - Dave Farley

全生命周期的持续集成

持续集成覆盖范围从开发阶段延伸至整个软件生命周期:

持续集成管道设计:

  • 提交测试门:单元测试 + 冒烟测试,快速失败
  • 验收测试门:端到端功能测试,证明满足业务需求
  • 部署准备阶段:标准服务器镜像、自动化配置

关键实践:

  • 将构建或部署脚本分成多个部分,每个只完成一个具体任务
  • 使用受控的二进制文件仓库,保存历史版本
  • 自动部署流水线,消除人为错误

核心观点:持续集成在消除人为错误方面效果显著,不但可以提高生产效率,还能提高交付质量,降低交付压力。


4. 企业Web应用中的敏捷测试和瀑布测试 - Kristan Vingrys

测试生命周期对比

测试类型敏捷标准瀑布特点
单元测试100%自动化,纳入持续构建不关注,随意为之
功能测试90%以上自动化测试团队主导
探索性测试关键测试阶段没有此分类
性能测试尽早启动项目尾声才做

测试角色分配:

  • 敏捷项目:所有团队成员都参与测试
  • 瀑布项目:测试人员主导

测试环境要求:

  • 开发环境:集成+构建+测试 ≤ 15分钟
  • 系统集成环境:以天计部署频率
  • 试机环境:与产品环境镜像一致

5. 实用主义的性能测试 - James Bull

性能需求驱动的性能测试策略

性能测试四要素:需求、度量数据、沟通、流程

需求采集要点:

  • 要度量什么:最大吞吐量、给定吞吐量下的响应时间、伸缩性、可靠性
  • 谁来决定:关注性能的客户
  • 如何设定目标:分析用户数量、使用模式、UI响应时间

运行测试策略:

  • 频繁进行:性能测试本质需要长时间运行
  • 环境模拟:尽量模拟生产环境,或至少保持相对比例一致
  • 数据库规模:与生产数据规模相当或更大

沟通机制:

  • 定期会议:每周与关注性能的客户开会
  • 展示方式:网站展示最新测试结果,而非邮件报告
  • 异常优先:只讨论异常之处,正常结果无需每次都报

核心洞察总结

敏捷测试 vs 瀑布测试的关键差异

维度敏捷项目瀑布项目
测试时机尽早启动,贯穿全程等待前阶段完成
测试自动化全力追求100%部分自动化
测试责任全员参与测试人员主导
缺陷修复快速迭代修复后期集中修复

持续集成的价值

  1. 消除人为错误 - 自动化流程减少手工操作
  2. 快速反馈 - 问题早发现早解决
  3. 可重复部署 - 标准化的构建和部署过程
  4. 二进制文件管理 - 历史版本可追溯

性能测试的流程化

  • 项目启动阶段:识别关注性能的客户,启动需求采集
  • 开发阶段:编写性能测试脚本,逐步增加覆盖
  • 每周循环:与客户讨论需求,展示测试结果
  • 关键:性能测试必须与开发同步,不能等到项目结束

与其他知识的关联


可行动点

  1. 对象健身操练习 - 在小项目中实践九诫规则
  2. 建立项目健康看板 - 使用范围增量图、缺陷趋势图等度量
  3. 构建持续集成管道 - 从提交测试门开始,逐步扩展到验收测试
  4. 性能测试左移 - 项目启动时就确定性能需求
  5. 测试自动化策略 - 单元测试100%自动化,功能测试90%+