快速验证.构建

12009

概述

构建环节是将自然语言的描述转换成计算机可执行的软件,即“质量达标的软件包”。这一环节既要求相关人员能对业务问题及试验方案达成共识,又要求能够准确地将团队的意图转换成最终仅由0和1组成的数字程序。

这一环节的参与角色最多,尤其当开发一个新产品或者产品有重大变更的时候,参与角色如业务人员、产品经理、开发工程师和测试工程师,以及运维工程师。每个角色的背景知识和技能优势各不相同,如何快速将人们头脑中的解决方案变成可以运行的高质量软件包,一直是软件工程领域的一个难题。这是验证阶段不确定因素最多的一个环节。

时间盒管理、工作任务分解和持续验证是应对这种不确定性的好方法。

管理方法

时间盒管理

是一种常见的管理方法,很多项目管理方法中都使用时间盒管理。时间盒方法通常会涉及交付物、交付质量和截止时间。通过建立时间盒管理机制,可以了解当前的项目状态(进度与质量),及时发现风险,制订对策。它可以让团队时刻关注工作产出,及时得到进度和质量反馈。

任务分解

常见的两种任务分解是需求拆分和开发任务拆分。

需求拆分

这里所说的“需求”是指那些由探索产出且已被团队选定即将进入实施阶段的最小可行性解决方案,并不是指最原始的业务领域需求。“需求拆分”是指通过团队讨论,将试验方案分解成更细粒度的子需求的过程,也是团队成员进一步达成共识的过程。它的工作产出物是更细粒度的子需求。通过需求拆分,团队各角色互相交流和提问,使解决方案更加明确清晰,减少二义性。此时,可以将“团队是否达成共识”作为需求明确与否的标准。

开发任务拆分

为了实现某一需求,将其分成多个开发任务,这些开发任务既可以由一人完成,也可能由多人完成。它与需求拆分的不同在于:开发任务完成后,通常无法被其他角色验收。这一过程也是一个需求进一步细化的过程,可以发现更细粒度的风险项。

持续验证

每当完成一项开发任务或需求(包含子需求),就立即对交付质量进行验证,而不是等待多项需求完成后,再进行大批量的质量验证工作。这是一种快速反馈机制,也就是说,一旦完成,即有反馈。例如,这些质量验证工作可能包括代码规范检查、代码安全扫描,验证其是否破坏了原有功能、是否满足设计需求等。尽管此时的工作成果还没有交到用户手中,但是可以验证其是否达到了内部质量标准。

假如所有的持续验证工作都要依赖手工执行,那么持续验证就会产生很高的成本,而“持续集成”与“自动化测试”是降低持续验证成本的一种有效手段。持续集成是指开发人员完成一个开发任务后,尽快与团队其他人的代码(或者系统中其他模块的功能)集成在一起,并验证该任务完成的质量,其中质量要求不但是当前的开发任务质量,还要确保对原有功能没有产生破坏。只有这样,开发人员才可以尽早地得到代码质量反馈,而不将缺陷遗留到下游工作环节。

在持续集成实践中,最重要的质量验证手段就是自动化测试。自动化测试的覆盖率、执行时间以及测试结果可信度直接影响了质量反馈自身的可靠性和可信度,是不可忽视的环节。