关于敏捷开发如何保证软件质量的讨论

发表于:2013-01-07来源:letagilefly.com作者:廖渝强点击数: 标签:质量敏捷
关于敏捷开发如何保证软件质量的讨论!本文是基于敏捷之旅2012北京站的开放空间讨论所做出的总结。 1. 敏捷开发提高软件质量

  本文是基于敏捷之旅2012北京站的开放空间讨论所做出的总结。

  1. 敏捷开发提高软件质量

  关于敏捷如何提高质量的认识:我们认为敏捷可以提高质量。质量的提高和保证不再放在测试环节,而是放在开发阶段。其宗旨是尽可能地在开发阶段保证产品质量。所以才提出了各种有效手段比如测试先行,结对编程等方法。这样做不仅减少了测试工作量,更重要的是可以尽量阻止在测试后期发现问题,解决问题带来的巨大开发成本。

  2. 快速迭代

  对于第一点的最后描述,即李老师所说的“死亡行军”。项目一旦碰到这个问题,不管是何原因造成问题最后发现,开发测试都会痛苦,为了能有效解决这个问题,是否能从流程上加以改进,使问题尽早暴露。这里是否可以借鉴敏捷开发和RUP里明显提到的快速迭代,如下图:

  快速迭代

  对于每一个sprint 其实就是一个小规模试错的过程,这里不仅包括核心功能的开发,同时也是测试过程,比如当SP1结束后,SP2测试组就开始测试SP1功能,这里的测试不仅是功能测试,也必须包括系统集成测试。为了保证所做功能与客户需要一致,当SP3结束后,将已做完的核心功能和客户碰头确认或改进,即客户观察点。

  3. 大型系统的测试模型

  对于大型系统来说,很多公司依然沿用瀑布模型,基本形式依然是调研,需求确定,设计,实施,测试,发布等环节,在测试环节中会有很多组在不同时间段进行测试,比如先功能测试,然后阶段性(一般两周)回归测试,之后集成测试等。关键问题是对于大型系统,设备或系统间依赖性强,而功能测试和回归性测试都是以个体为主进行测试,单个模块,设备,系统没问题,但集成之后由于每个设备的变化,往往导致最后阶段问题频出,甚至是方案一级的设计缺陷,此时再改,压力巨大,成本非常高。如果能把集成测试前移或与开发并行执行,进行核心功能的持续集成,即每一到两个sprint结束后就立刻进行系统级集成,是否会将系统间不匹配问题,提前发现,减小后期压力。所以柔和敏捷开发的一些方式,能否说:

  极限编程(以结对编程为例)是以分钟来保证产品构建质量, 单元测试 是以小时计来保证产品质量, 持续集成测试 是以天计来保证产品质量,三者并行效果更好。

原文转自:http://www.ltesting.net