为什么TDD是敏捷的核心实践

为什么TDD是敏捷的核心实践

这两天在更新Scrum的基础知识。Scrum的定义说,它是一种迭代和增量的软件交付方式,其目标是在最短实践交付最大价值的软件

任何一种迭代和增量的交付方式,都会遇到一个严肃的灵魂拷问:频繁对软件做修改,如何保障软件不被改坏?这个问题,用人肉测试解决不了。交付越频繁,人肉测试就越不可能跟上节奏。自动化的、快速且可靠的、覆盖完善的测试必不可少。这种要求,后补式的、黑盒的测试方法不可能达到,必须在开发软件的过程中内建。

当团队被迫采用迭代和增量的需求管理和项目管理方式,对应的配置管理和质量保障手段就必须跟上。TDD不是锦上添花,而是迭代和增量交付不可或缺的基石

===== 以下内容出自《敏捷中国史》 =====

对于“为什么要以短迭代方式交付软件”这个问题,极限编程给出的答案是“应对风险”:软件项目的进度可能延迟、甚至整个项目被取消;软件团队可能误解了用户的需求,业务的变化也可能导致需求变更。极限编程通过快速的短迭代,及早交付价值最大的功能,并及时获得真实有效的反馈,从而消减上述风险。另一些敏捷实践者还指出,采用短迭代方式交付软件可以提早软件上线运营、并创造经济效益的时间,从而改善整个项目的现金流。

为了让短迭代交付方式成为可能,极限编程提出了一系列相互关联的实践:

  • 需求管理角度:以用户故事的形式分析和记录需求,使软件需求以一种允许乃至鼓励多次迭代交付的形式出现在软件团队面前;
  • 项目管理角度:围绕用户故事开展的迭代管理方法,包括计划会议、成果展示、每日站会等,加上对进度与质量的度量和可视化呈现,使项目随时处于透明、受控的状态;
  • 配置管理角度:以持续集成为核心,对修改动作的频度和方式作出了严格要求,使软件在迭代演化的过程中始终保持可用状态;
  • 质量管理角度:测试驱动开发使软件获得很高的自动化测试覆盖率,在自动化测试的保护下,通过频繁而小步的重构改善软件内部质量,从而消减软件频繁改动带来的质量风险。

扫码开始你的十四天编程训练营

打好TDD基础

编辑于 2019-04-27

文章被以下专栏收录