浅谈即时验收在敏捷开发中的应用

[注]:这是2008年末写的一篇关于即时验收(即常说的BA sign off)的文章,原文发表于《程序员》杂志。从去年刚开始加入ThoughtWorks,对敏捷懵懂了解,到如今随着经历的增多,对敏捷的了解也有了愈来愈多的体会。即时验收是敏捷中很小、很容易被人忽视的实践,甚至不少人都不知道。但我参加了几个项目以后,愈来愈体会到了即时验收的重要性:每当项目中的bug数量明显增多,我都会提醒本身以及团队:是否是忽略了BA sign off这一环节?程序员

 

敏捷软件开发相对于传统软件开发过程,在生产效率、 项目质量、成本控制等方面均有不一样程度的改进与创新。这得益于敏捷开发方法中许多好的实践,仅技术相关的最佳实践就有结对编程、测试驱动开发、持续重构与 持续集成等。这些实践能够提升代码质量、提升生产效率,并最终提升项目按时交付的成功率。敏捷实践中还有另一个比较好的实践──即时验收,它能够尽早检 验代码实现与业务需求是否契合并能协助及时发现、修复并验证bug,从而有效地提升开发效率、保证质量。编程


什么是即时验收 
即时验收也叫BA signoff,是指迭代开发过程当中,每一个story开发完成之后,开发人员并不立刻开发下一个story,而是由BA快速验收测试。若是验收时发现了明显的bug,或者验收条件没有达到,开发人员能够当即进行修改。如此反复,直到BA验收经过为止。
具体说来,其通常步骤包括:  
1.开发人员初步完成story的开发;
2.BA在开发环境进行验收;
3.在BA的快速验收过程当中,若是发现明显bug或代码实现没有彻底覆盖story中的所有业务逻辑,则开发人员当即修改代码以修复bug、补全业务逻辑。从新从步骤1开始;
4.在BA的快速验收过程当中,若是没有发现bug,则开发人员能够提交代码,认为此story开发完成,进入迭代中的下一步骤:产品环境中的测试。
在即时验收过程当中,特别强调简单和快速:一是验收直接在开发机器上进行,不须要搭建产品环境;二是BA不须要测试每个细节,而只关注于story的基本功 能是否实现、开发人员是否无心中漏掉了某些状况、写入story中的验收条件是否所有知足等问题。除此以外,若是发现一些没有写入story中的业务逻 辑,也能够由BA和开发人员甚至客户讨论是否修改。
通常来讲,即时验收花费几分钟到十几分钟的时间便可完成。分布式


即时验收与QA测试的区别 
即时验收强调的是简单和快速,这是为了与QA的测试区分开来,由于它并不能取代QA的测试,而是对QA测试的一个有益补充。从实践上来看,它与QA测试的区别在于:
1.即时验收是在开发者的机器上(也即开发环境下)进行,而不须要从新部署测试环境(即模拟的生产环境);
2.BA不须要准备测试用例以及复杂的测试数据,只需经过鼠标点击或其它简单的方式验收。而QA通常须要准备详细复杂的测试用例以及完备的测试数据,按照测试用例的步骤测试;
3.BA发现问题以后,不须要建立bug,直接由开发人员修复。而QA测试通常须要建立bug,经过bug跟踪管理系统进行修复、验证与关闭;
4.从时间上来讲,即时验收是在story刚刚开发完成之后当即进行,能够当即收到BA做为用户业务表明的质量反馈。而QA通常会有本身的测试计划,测试会比story的开发完成滞后必定的时间段,反馈也会较慢。测试


为何采用即时验收 
那么,采用即时验收有什么好处呢?
1.充分发挥了BA对story的业务理解与把握。通常状况下,BA对story了解的更全面、更接近于真实用户。BA能够从业务用户表明的角度对story进行验收,利于检验代码实现是否契合业务需求;
2. 即时验收使得反馈更及时。传统软件开发中,极可能在项目完成之后才能收到客户的反馈,而这时的反馈对开发人员的代码修改来讲每每是费时而致命的。敏捷采用 迭代式开发,每次迭代均可以有可运行的产品让客户体验,并根据用户反馈进行及时修改。而即时验收让反馈更及时,频率更高。若是开发现场有客户合做而且愿意 协助进行即时验收,那么用户反馈的效果更好;
3.以最低的成本尽早发现并修复bug。在开发过程当中发现的bug是最容易修复的,由于此时代码的逻 辑对开发人员来讲新鲜而清晰。及时验收中BA不须要部署测试环境,也不须要像QA同样经过bug跟踪系统建立bug,包括录入复杂的bug主题、重现步骤 以及优先级等。开发人员当时就能明确bug的所在,不须要根据描述重现bug或找QA确认bug。这不只仅节省了大量时间和人力,也尽早发现了潜在的 bug,并以最低的成本修复,确保了QA在产品环境下测试的代码的基本功能与质量;
4.可以提升代码质量和开发效率。BA的即时验收与QA的测试,双重保证了发现问题和bug,从而有效提升代码质量。经过提早发现并修复bug,减小了后期QA测试阶段发现的bug量,能够减小陷入开发-测试发现bug-修复bug-再测试-再修复的糟糕循环的概率。
即时验收的以上优势,充分体现了它在敏捷开发过程当中的重要性。固然,即时验收也有一些问题须要注意:
首先就是把握好尺度。每一个story完成之后,能够花费几分钟到十几分钟进行即时验收。从花费的成本与得到的收益来讲,是彻底值得的。可是若是即时验收花费的时间过长,反而形成时间和人力成本太高,可谓过犹不及。
其次,即时验收不是BA一我的的事情,须要开发人员的支持和配合。双方一块儿验收,一块儿讨论交流,会使得验收过程更加顺利并能发现更多bug。
除此以外,分布式团队如何使用即时验收?每一边的分布式团队最好拥有本身这边的BA(事实上绝大多数的分布式团队都有本身这方的BA),保证每一个story开发完成之后,均可以进行即时验收。
即时验收在实际项目中的应用介绍开发

结论 
即时验收做为敏捷开发过程的一个重要实践,对提升敏捷开发效率有重要的做用。可是在实际的敏捷开发的实践过程当中,有的团队为了节省时间,有意无心间忽视了这一最佳实践。
即时验收的本质是投入尽量低的成本,收到尽量快的反馈,尽早的发现并修复bug,从而达到提升生产效率、保证产品质量的目的。但愿全部的敏捷团队都能尝试或者坚持(若是已经在使用)这一实践,体验即时验收给项目带来的好处。部署

相关文章
相关标签/搜索