前几天,笔者与一位在大型互联网公司从事质量保证的朋友交谈,作为互联网产品质量和测试的负责人,他近负责的质量管理方面遇到了很多困难。主要有:
1)测试团队在敏捷开发模式下的价值非常有限;
2)开发人员只顾自已写代码,没有任何文档,测试人员无从下手,
3)由于进度的原因,测试人员测试的时间非常有限,上线后出现很多问题;
4)由于测试人员得不到开发团队的认可,离职率非常高;
5)质量部门无法收集到数据,不能进行质量度量;
6)测试团队也有一批自动化测试专家,但派不上用场…。
这些问题可能很多开发团队都会遇到,总结一下,大致是这几个方面:
1、越来越多的企业希望采用,但没有把握
2、习惯于传统的瀑布式产品开发流程已不满足快速发展需要,但大规模改动不现实
3、缺少敏捷软件开发专家和人才
4、技术人员需要观念的转变和方法培训
5、缺乏相应的质量控制方法
6、需要经常的和及时的质量度量、测试、决策
7、自动化测试不能落到实处,每日构建仍是纸上谈兵
在现在行业中,需求变化太快,不管我们怎么努力去做,发现还是不能满足客户的需要,不管需求搞得多么细,到交付产品给客户的事情,总是有这样那样的问题,这个时候不得不去修改我们的软件,这是目前很多企业尤其是互联网公司面临的一个挑战,如何解决这个问题?
笔者先后在华为、阿里巴巴软件质量部门任职,近也深入研究了腾讯敏捷开发平台TAPD(腾讯敏捷产品开发)和IGD(集成游戏开发)一些资料,对国内敏捷项目的质量管理有很多独到的见解,结合汉捷咨询公司多年的项目经验,总结如下:
1)QA角色的转变
QA要从警察的角色转变到一个教练的角色。在以前,团队实施CMM的时候,QA更多的是一个警察的角色,他整天拿着一个checklist、报告什么的到处去团队里面看,你是否ok,不ok要怎么怎么样,整天干这个活,但是引入敏捷之后,QA觉得有点失落,都敏捷了,我都不知道该怎么下手了,在的通信企业华为的做法是将QA转变了一下,将QA更多的充当教练的角色,充当SCRUMMaster的角色,他去指导项目团队该如何去开这个站立式会议,该怎么去做迭代的计划等等指导性的工作,这样QA也觉得挺好,这样他能参与到在不同的团队中去,QA的角色更多的偏向于全过程的敏捷活动指导,以提高产品开发效率和质量。QA在这个过程中也能得到一些数据,如代码缺陷率,版本的不良率,上线遗留问题数,团队成员配合度等等。
2)要使敏捷团队整体参与
QA和测试人员也是敏捷团队的一部分,作为敏捷教练,要向他提供支持和训练,以使作们适应开发的快节奏。比如,如果你是敏捷团队中的测试人员,并且计划会议和设计讨论没有邀请你,或者业务用户正在独立定义故事和需求,那你应该主动站出来和团队的其他成员交流,并偿试“三方协作”,即测试人员、开发人员和业务专家。腾讯公司把业务专家称为BA,即BussinessAnalyst,BA和开发人员DE、测试人员TE组成了敏捷开发团队,这些成员不仅仅把都在忙着终的交付而努力,他们还乐于收集和分享信息,与客户或者产品负责人协作以帮助他们充分展示自已的需求,从而得到他们的需要的功能,同时向所有人提供项目进展的反馈。
3)自动化回归测试
敏捷团队没有自动化会成功吗?可能也会成功,但我们所知道的成功团队都依赖于自动化回归测试,如腾讯和支付宝公司的Selenium框架,阿里巴巴和淘宝网的QTP框架。汉捷咨询认为,敏捷开发利用测试来指导开发,为了编写的代码使测试通过,需要快速而简单地运行测试,没有短期反馈周期和安全的回归测试,团队将很快陷入技术债务,缺陷不断增加,速度越来越慢。
4)提供并获取反馈
反馈是敏捷的核心价值,敏捷的短期迭代可以提供持续的反馈以帮助团队正常运转,测试人员则通过自动化测试结果、探索性测试的发现和系统实际用户的观察结果的形式帮助提供支馈。如你怎么知道客户手里拿到了预期行为的正确示例?你怎么知道编写的测试用例正确地反映了这些示例?开发人员通过查看测试用例能够理解应该编写什么代码吗?QA和测试人员应该询问开发人员是否得到了足够的信息以理解需求并是否能够指导编码,询问客户是否理解质量标准,应花时间参与迭代计划会议和回顾会议以讨论这些问题并提出改进方案。
5)构造核心的敏捷实践活动
软件行业有一名老话是:软件质量是设计出来的。对于敏捷开发也是如此,汉捷咨询认为没有一些基础的实践活动,无法产生出高质量的软件。