Skip to content

敏捷测试 - 概述

敏捷是一种迭代和增量的软件开发方法,其中开发和测试活动是并发且深度集成的。测试不是一个独立的阶段,而是贯穿整个生命周期的持续活动。这种持续集成(CI)和持续测试有助于早期发现缺陷,减少返工,并产生一个真正满足客户需求并适应不断变化需求的更高质量的产品。

敏捷宣言于2001年由一群软件开发者发布,它强调重视开发团队、客户协作、工作的软件以及响应变化。它为敏捷方法提供了基本价值观。

敏捷宣言指出:

我们通过实践并帮助他人实践,发掘了更好的软件开发方法。通过这项工作,我们认识到如下价值:

  • 个体与互动 重于 流程与工具
  • 工作的软件 重于 详尽的文档
  • 客户协作 重于 合同谈判
  • 响应变化 重于 遵循计划

也就是说,尽管右项也有价值,但我们更重视左项。

敏捷测试是一种体现敏捷软件开发原则的软件测试实践。它是一个持续的过程,而不是一个阶段,整个项目团队都参与其中,测试人员贡献他们的专业知识。

在敏捷中,测试与所有开发活动集成在一起,包括需求定义、设计和编码。这种“左移(shift-left)”方法——即测试尽早开始——确保从一开始就构建高质量。测试人员在整个开发生命周期中与开发人员、产品负责人和其他利益相关者密切协作。

这种协作式的全团队方法使测试人员能够为构建正确的软件做出重大贡献,实现更好的设计和更健壮的代码,从而符合客户的期望。敏捷测试涵盖所有测试级别和类型,并适应敏捷的迭代性质。

在传统的瀑布(Waterfall)开发中,活动是顺序进行的,测试通常只在开发完成后才开始。这往往导致缺陷发现较晚,返工成本较高。

敏捷测试与瀑布模型测试的关键区别:

敏捷测试瀑布模型测试
测试是持续活动,与开发并发进行。测试是一个独立的、顺序的阶段,在开发完成后进行。
测试人员、开发人员和产品负责人密切协作(全团队方法)。测试人员通常独立工作,与开发人员和业务人员分离。
测试人员从一开始就参与,协助澄清需求(例如,定义验收标准)。测试人员在需求阶段参与有限。
在每次迭代结束时频繁进行验收测试和获取客户反馈。验收测试通常只在项目结束时进行。
每次迭代交付一个潜在可发布增量,实现持续回归测试。回归测试通常在所有开发完成后进行,是一项巨大的工作。
开发、测试和业务之间存在极其短的反馈循环。编码、测试和反馈之间通常存在长时间延迟。
持续测试,测试活动重叠,并有自动化支持。测试是时间盒活动,有明确、非重叠的测试级别。
质量是集体责任,测试是实现质量的核心实践。测试有时在进度压力下会被赶工或范围缩减。

敏捷测试遵循几个关键原则:

  • 提供持续反馈:测试提供快速持续的反馈,确保项目高质量推进并满足业务需求。
  • 测试不是一个阶段:敏捷团队在开发过程中持续测试。质量是内置的,而不是在最后才检验。
  • 全团队共同承担质量责任:团队中的每个人(开发人员、测试人员、产品负责人、分析师)都对质量负责。测试人员带来专业技能,但质量是共同目标。
  • 缩短反馈循环:业务团队的持续参与和工作软件的频繁交付极大地缩短了反馈周期,降低了变更成本。
  • 保持代码整洁且可测试:缺陷在同一迭代中解决,防止技术债累积。TDD 和 BDD 等实践促进了整洁、可维护的代码。
  • 轻量级且有价值的文档:敏捷看重工作的软件而非详尽的文档。测试人员专注于“恰好够用”的文档、可复用清单以及活文档(例如,BDD 场景)。
  • 自动化以提高速度和可靠性:测试自动化对于快速反馈和支持持续集成/持续交付(CI/CD)至关重要。明确定义的验收标准(例如,BDD 场景)可以作为手动探索和自动化的单一事实来源。
  • 专注于“真正完成”(Done Done):一个特性只有在开发完成、彻底测试(根据“完成的定义”Definition of Done)并可能具备交付条件后才被视为“完成”。
  • 尽早和频繁测试(左移 Shift-Left):测试活动,包括编写测试场景(TDD、ATDD、BDD),从开发过程的最早期就开始,指导开发而非事后验证。

敏捷测试活动跨越不同级别和时间线:

  • 整体项目/发布级别: - 为发布规划做贡献(定义测试策略、范围、主要风险、基础设施)。
  • 每个迭代(Sprint)期间: - 参与迭代规划(需求梳理、任务分解、估算测试工作量)。 - 协作定义验收标准(例如,BDD 场景)。 - 设计和执行测试(单元测试 unit, 组件测试 component, 集成测试 integration, API 测试 API, UI 测试 UI)。 - 开发和维护测试自动化脚本。 - 执行探索性测试。 - 缺陷报告、分类和再测试。 - 持续集成测试。 - 支持产品负责人/利益相关者的用户验收测试(UAT)。 - 报告测试进度和质量状态。
  • 持续活动: - 维护和增强自动化回归测试套件。 - 监控 CI/CD 流水线健康状况和测试结果。
  • 发布活动: - 最终的系统/回归测试。 - 按需执行性能测试、安全性测试和其他非功能测试。 - 支持部署和发布后验证。