为什么SCRUM越跑越慢,质量问题越来越多

很多敏捷团队跑SCRUM时候都会发现开始时候挺顺利,团队跑起3355来也有模有样的,但是几个迭代过去后就逐步开始出现开发效率降低,测试资源不足,质量问题频出的情况。

为什么会这样呢,其中一个主要原因就是:工程实践技能不足,缺少自动化测试。套用个别激进的敏捷实践者经常说的一句话 “一切没有自动化支撑的敏捷都是伪敏捷”,这句话看上去武断,但是其实说的确是一个基本事实。

假设一个执行scrum的团队,开发速率是稳定的,每个迭代可以完成10个故事点的开发,经过五个迭代后,开发和测试工作量的比例变化如下图

image

可以看出,因为我们每个冲刺都要交付可以工作的软件,所以每个冲刺都需要确保交付的全量软件的质量是可靠的,在只采用手工测试的情况下,经过五个迭代后手动测试需要覆盖到的需求范围已经比第一个迭代膨胀了五倍,五个迭代测试总工作量是150个点所覆盖的需求范围,这还没有算开发因为需要配合完成测试工作所需要付出的代价。

作为对比,如果是瀑布过程,因为可能要几个月才发布一次,日常只需要测试新功能,最后发布前做一次全量回归就可以了,其工作量只是敏捷条件下的一半甚至更少,这也成为了很多人攻击scrum拉低了团队效率的主要论据之一。

面对这种情况团队常见的处理方式是什么呢?

  1. 尽量只测这个冲刺变动的部分功能,至于有没有旧有功能在本次冲刺内被破坏就要看团队成员感觉了,如果发现了可能会被修改的功能则会提醒QA测试时候覆盖那部分旧功能,如果忘了那就只能等着用户带来的惊喜了。
  2. 通过架构上解耦来解决,例如通过拆分微服务,抽取基础服务等方法分离已完成功能代码与新代码,这样已发布的服务和功能已经经过测试了,并且大部分代码新的迭代内不会动到,这样可以大大降低旧代码被误动的风险,也可以极大的降低回归测试工作量。
  3. 提高单元测试覆盖率和自动化测试比例,让回归过程自动化,降低手动测试工作量,这个是敏捷推荐的方法,也是实现真正的CI/CD的基础。

多数情况下,不光是SCRUM,任何通过高频率短周期迭代的产品交付方法,如果没有自动化回归测试做保护,都会面临因为手动测试工作量膨胀而拖慢交付速度或者拉低产品质量的问题。

有没有例外情况呢?

  1. 产品功能很少,每个迭代都在围绕的固定的一部分功能开发或者修改,回归测试工作量很快就达到稳定的水平。
  2. 并未强制要求每个迭代都发布到生产环境,也没有要求每个迭代都做全量回归。
  3. 系统没人用,所以也没人反应质量问题。

所以不是Scrum把团队效率和质量降低了,而是Scrum暴露了团队在工程实践方面不足的现实,大部分人这时候不愿意面对自己的不足,反而会找一堆理由来质疑Scrum,实际上如果你没打算在工程实践上做出努力与改善,只是尝试Scrum的话多数情况下只能退回到传统方法的老路上。

更多文章请关注 @敏捷新视界
(原文链接)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 笔者09年的时候在Sybase工作,那时候公司就在内部开始推广极限编程XP(ExtremeProgrammi...
    monkey01阅读 5,048评论 0 13
  • 1、在项目的Sprint回顾会后,团队成员指出那是抱怨会,不是非常有效。Scrum主管应该怎么做?A 建议团队尊重...
    隔壁老李头阅读 12,238评论 1 16
  • 什么是Scrum敏捷开发 Scrum是敏捷开发的一种,是一种以人为本,迭代式增量软件开发的过程,以英式橄榄球争球队...
    Monica_Wang阅读 18,891评论 4 53
  • 你的光芒甚是耀眼 可惜我不是追光者 你的小河如此长流 可惜我爱辽阔大海 你的世界戒备森严 可惜我愿更爱远方 ———...
    纯情小哒哒阅读 278评论 0 1
  • 湖面波光涟涟,无数双明亮的眼在看我,我也在看它们,以黑色忧郁吸纳进一面碎裂镜子的光。空气里不安分地浮荡着白昼的梦,...
    林嘉梓阅读 892评论 25 92