敏捷开发模型现在已经被越来越多的公司熟知并使用,很多公司会选择敏捷开发模式的转型,其主要目的就是为了不断适应变化以及客户快速交付的诉求。为什么敏捷开发能够被诸多大众接受?可以从两个维度来看:
首先,从开发人员角度,他们肯定乐意接受这个变化,接受这种开发模式带来的益处。因为他们可以将部分精力从之前繁琐的过程和大量的文档工作中释放出来,更能够全身心地投入到代码开发的工作中。
其次,从客户角度,敏捷开发可以让客户不断看到新功能。相比之前开发模式到一段时间或者上线才能够看到完整功能,敏捷开发算是提升了一大步。这个模式能够尽早地让客户参与进来,并可以及时地进行纠偏。
看到上面的这些变化,我们会发现敏捷开发实际上对一类人的要求变高了,这类人就是QA人员。为什么这么说?因为我们知道,目前大多数软件公司选用的开发模型是瀑布模式。对于瀑布模式,它的特点是在开发过程中,开发只需要提供一个稳定的测试版本和稳定的需求给到测试和QA。但是,如果按照敏捷的开发模式,你会发现没有所谓的稳定版本。QA需要对一个不断在变化的过程负责,没有大量时间部署和采取自动化的环境和架构,这无形中大大增加了QA的工作难度。
但对开发来讲,可以把精力从繁琐的文档和流程上释放出来,发挥想象和创意来提供更好的解决方案。所以这种高效运转,对QA提出更高的要求。
早期文章中我介绍过CMMI中的QA角色,在CMMI模型中我将QA看作是4类角色:老师、医生、警察、宣传员。在CMMI过程改进的历程中,我们需要这么一位QA,充分发挥QA的作用和职责,这是CMMI过程改进中质量管理体系良好运转的基础。QA在平时的工作中要不断地在老师,医生,警察,宣传员角色中进行切换,发挥各个角色的强项,并全生命周期的参与项目。
今天我们主要谈的是敏捷开发中的QA,如何看待他的地位和作用?
站在敏捷开发的角度看QA人员,也可以看作三种层级的角色,在敏捷开发转型过程的不同阶段,QA的角色定位和作用也是逐层深入:
1、质量保证
这个层级的角色职责是最基础的岗位要求,总体就是需要我们最终交给客户的软件产品是满足客户需求的,可以正常使用的,简单讲就是做好基础的质量保障工作。例如,在敏捷开发中参与单元测试的审查,审查单元测试的覆盖率,跟进审查的结果,调整单元测试以及检查后续接口测试和回归测试的覆盖率等。
我们知道大多数的敏捷开发中,单元测试用例和接口测试用例编写者都是开发人员,需要QA从他的维度来保证代码质量。那么如何保证?开发人员关注测试覆盖,QA关注的重点在测试的边界值,关注异常处理的解决等。
这个角色定位通常处于敏捷转型的初期,测试工作可能还是手工测试为主,QA人员也可能只是兼职参与。
虽然敏捷开发团队的交付周期缩短了,变成了2-3周一个周期,但团队成员还是喜欢原来瀑布开发模型固有的阶段式方式合作,任务一环扣一环,敏捷形式上变成了小瀑布,不同角色只关注自己不要出问题,缺乏团队质量认识,只关注自己跟前的一亩三分地,整体效率也不高。
在这样的情况下,需要把质量把控统一到一个角色上刻不容缓,需要有QA(质量保证)这个角色。敏捷 QA 流程必须严格遵守,从需求分析到生产环境,QA需要参与每一个环节,跟多个角色进行充分地沟通与合作,确保交付给客户的产品可以正常使用的。
2、质量分析
这个层级的QA工作重点是质量分析,敏捷开发的核心就是小版本迭代,快速出版本,所以项目一般会延续多个版本。
项目过程质量可以在每个sprint结束后均有对应的质量数据输出,经过一系列迭代后,可以看出这个项目的质量趋势。如果同期有多个项目在进行,那么也可以通过质量数据的对比,得出各个项目的质量优劣,同时辅以图表来直观分析对比。例如:常见的有质量趋势分析,质量波动对比等。
当然,质量分析离不开工具的支持。例如,我可以使用了项目管理工具进行项目管理,管理需求和开发过程;使用QC工具计划测试时间和测试次数等,在迭代结束后只要花少量的时间就可以进行快速统计质量数据,迭代质量数据也可以呈现出来。包括:开发效率、版本不良率、上线BUG遗留数等,QA在很短时间内就可以统计出项目的质量分数并进行后续分析。
这个职责定位通常处于执行期,到了这个时期,随着硬件设施、软件工具的不断投入,团队成员之间合作不断默契,整体研发效率稳中有升。
敏捷团队有了QA这个角色来负责项目质量,测试工作范围及频率相比之前大大增加。这个阶段的QA,工作压力比较大,总担心进度延误,影响迭代周期。工作中会不断思考:过程中如何更精准地执行QA;如何从已有缺陷的规律中让开发人员吸取经验,从而提升开发的稳定性;怎样才能前瞻性地预防问题发生?因为这些实际的需求,QA职责中慢慢增加了质量分析师的内容,肩负起更多的质量分析的重担,他可以通过测试、数据收集的方式,分析系统的质量,识别风险,并反馈给团队,确保交付的质量是合格的。
3、质量传导及改进
第三个层次的 QA 不再局限于只关注质量,在敏捷开发中更多是充当质量宣传员作用。不断传播质量意识,持续关注产品质量,了解产品的质量视图,培养流程持续改进的思维模式,引导整个团队构建质量第一的工作方针,并坚定的执行下去。
由QA去监督项目团队,例如:站立会议规范性;迭代计划规范性;更新任务状态和燃尽图规范性……更多地偏向全过程的敏捷活动指导,让所有人意识到质量在心中。
这个角色职责定义通常在稳定期。敏捷也需要一个持续改进过程,在这个阶段很多的规章制度、开发流程、沟通机制、绩效考核等基本制度都已经完成并在组织内已经执行,这个阶段的敏捷团队关注的是质量如何再提高,项目的反馈周期如何再进行缩短。
在这个阶段,质量传导者不仅仅是QA一个人的事情,他更需要借助团队里每个人的力量,快速反馈,持续跟进,这正是QA在质量传导者职责上的重要工作方针。QA通过培养对流程持续改进的思维模式,了解改进的整体质量目标和持续关注质量的意识,引导整个团队构建正确的项目和产品目标,持续改进。
通过上面对敏捷QA职责及工作定位的详细讲解,你还觉得他可有可无了吗?答案是显而易见的,他的价值和作用也是敏捷团队公认的!敏捷QA的所有实践和活动都需要以价值为核心来驱动,根据不同团队的具体情况可以适当调整,且在不同项目阶段应该也是演进式的。
敏捷QA工作职责能够被有效履行是保证敏捷开发持续有效的重要基础,也是缺一不可的。QA与团队通力协作,在整个敏捷开发周期中为客户创造并实现价值,同时也可以增加内部团队的凝聚力和自信心,在敏捷开发的道路上乘风破浪,最终可以实现个人、团队、组织的价值所在!
更多精彩内容
请关注微信公众号“赛希咨询”