在我的公司中,我们成功地采用了敏捷实践,但没有使用迭代。主要原因是我们找不到在迭代周期中适合QA的干净方法。
我们认为质量检查是对特定版本(候选版本)进行额外验证的一部分,然后再将其部署到客户。关键是要避免单个恶意提交会损坏整个发行版。由于您永远都不知道它是哪一个,因此质量检查人员必须等到该版本的所有功能/提交都在构建中。(不允许使用著名的最后一句话“这只是微小的变化”。)
如果质量检查人员在候选发行版中发现错误,则开发人员会在相应的发行分支中修复这些错误(并将其合并到主干中)。修复所有错误后,将部署新版本以进行质量检查以进行重新测试。仅当在某个发行候选版本中未发现错误时,才将其提供给客户进行验证。
每次发布通常需要大约2-3个候选人,大约一周。编写修补程序的时间通常比测试工作要少得多。因此,为了让开发人员忙,他们在版本N + 1上工作,而质量检查则在N上工作。
不使用迭代,这没问题,因为我们可以将版本N和N + 1的工作重叠。但是,据我了解,这与Scrum或XP等基于迭代的方法不兼容。他们要求在迭代结束时发布一个迭代,并将所有测试工作都包含在迭代中。
我发现这必然导致以下不良结果之一:
(A)开发人员在迭代结束时处于闲置状态,因为质量检查需要时间来验证发布候选版本,并且错误修复工作并未完全使开发人员处于忙碌状态。
(B)质量保证在准备好第一个候选版本之前就已经开始工作。这是Stack Exchange上最推荐的方法。但这不是我公司所理解的质量检查,因为没有经过测试的特定候选发布版本。破坏一切的“微小变化”仍然可以被忽略。
(C)错误将继续进行下一次迭代。在Stack Exchange上也建议这样做。我认为这根本不是解决方案。从根本上讲,这意味着我们永远不会获得经过验证的内部版本,因为只要进行了错误修复,就会将未经验证的新提交也添加到同一分支中。
有没有办法摆脱这种困境?