在我目前的职位上,质量检查已成为瓶颈。不幸的是,当前版本中没有保留功能,因此QA可以完成测试。这意味着开发人员继续进行开发后,可能需要2-3周才能对已完成开发的功能进行测试。随着开发人员加快质量检查的进度,这个时间差距只会越来越大。
我一直翻阅我的Code Complete副本,寻找“ Hard Data”片段,该片段表明修复缺陷的时间越长,其成倍增长。有人能指出我一些支持该概念的研究吗?我试图说服质量保证瓶颈比他们想象的要昂贵得多。
在我目前的职位上,质量检查已成为瓶颈。不幸的是,当前版本中没有保留功能,因此QA可以完成测试。这意味着开发人员继续进行开发后,可能需要2-3周才能对已完成开发的功能进行测试。随着开发人员加快质量检查的进度,这个时间差距只会越来越大。
我一直翻阅我的Code Complete副本,寻找“ Hard Data”片段,该片段表明修复缺陷的时间越长,其成倍增长。有人能指出我一些支持该概念的研究吗?我试图说服质量保证瓶颈比他们想象的要昂贵得多。
Answers:
您不需要任何参考,恕我直言。这是您可以(应该做)的事情:
量化延迟成本!假设需要花费1周的时间来测试这些功能。延迟2-3周意味着该功能至少要到第4周才能使用。而且这也假设100%成功。加上另一周的修复时间,这大约要延迟5周。
现在,如果可能,请访问项目/功能的预期期限。客户期望什么时候?会滑吗?如果没有,其他人会因此滑倒吗?那么,“发布”会因此延迟多少呢?
该版本的“公司成本”是多少,即客户期望从该版本中获利多少?如果他们希望从该版本中获得每年$ 5200的利润,那么每周的收入下滑将使他们损失$ 100的收入。那是客户观点。您可能会或可能不会访问此数据,但是值得考虑并说明延迟如何影响关系。
现在,对开发人员造成的损失是什么?一旦开发人员继续使用其他功能,您就可以要求他/她中断工作周期并“修复”以前的功能。什么是时间/精力损失?结果是将每小时浪费的薪水作为倍数,将其转换为公司成本。您可以用它来表示废物“进食”的“利润/收入”的数量。
您偶然发现的内容可以使用“延迟成本”方便地量化-由Don Reinerstein在“产品开发流程原理”中提倡,以及Dean Leffingwell在“敏捷软件需求”中提倡。您应该能够通过经济因素支持所有此类主张,以说服主要语言为$$的“更高权力”-您必须说出他们的语言才能说服他们:)
幸运兽!(双关语意:)
我真的不认为Code Complete在这里适合您。这不是代码问题,而是过程问题,甚至是管理问题。
如果您的过程中的一部分特别薄弱,那么该破除约束理论的时候了:
确定约束。
这意味着找到整个过程中最慢或最无效率的部分。就您而言,它正在测试。但是测试的哪一部分?是吗:
这些都是非常不同的问题,需要不同的解决方案。您需要确定哪个是最昂贵/最重要的。向管理层证明这一点并不难,因为上述所有活动都需要花费时间(又称金钱),并且只有其中一些是增值时间。
利用约束。
换句话说,围绕约束过程进行优化。永远不要让测试人员闲着。这基本上等于:
这个阶段并不是要优化测试过程本身,而是要减少开销。不要浪费测试人员的时间。消除真正浪费的时间对管理人员来说也很容易。
使其他活动服从约束。
在这一点上,测试人员已经尽可能发挥自己的生产力,因此我们需要从其他领域开始借鉴生产力:
提升约束。
如果测试人员正在全力工作-就生产力和最小的开销而言-仍然不够快,那么您需要开始在测试上投入更多的资金。
返回步骤1。
我想说的是所有常识,但不幸的是,至少在大多数组织中不是这样。如果您受到管理层的很大阻力,那么价值流映射(一种精益生产的技术)是一种非常宝贵的技术,您可以使用它来显示多少时间,因此实际上每天释放发布候选者无法浪费金钱进入下一个阶段。机会成本很难理解,但这是我发现的可视化和演示方法之一。
如果这些都不起作用...那么也许您是一家功能失调的公司,那就为时已晚!
但是您不会仅仅通过在经理的桌子上放几张纸并要求他们把钱扔给这个问题来解决这个问题,因为他们会(正确地)认为向他扔钱可能并不能真正解决问题,甚至可能更糟 您需要提供解决方案,这就是这个答案的目的。如果将问题介绍为“这里是我们以成本/收益降序开始解决此问题的方法的清单”,而不是“我们需要更多的测试人员”,那么您将获得更多的成功。
尽管可能需要跟进,但第29页和第30页可能包含您要查找的数据。
我将调查第30页此句子中提到的研究:
数十家公司已经发现,仅在项目中早于而不是晚于缺陷纠正就可以将开发成本和进度表减少两个或更多的因素(McConnell 2004)。
顺便说一句,正是您的问题让我再次拿起书来刷新它:-)
我一直翻阅我的Code Complete副本,寻找“ Hard Data”片段,该片段表明修复缺陷的时间越长,其成倍增长。有人能指出我一些支持该概念的研究吗?
发现bug的指数成本似乎是基于NIST的研究。该研究是在一项调查中假设不同的瀑布阶段:
Software Development Stage | Cost
-----------------------------------+------
Requirements and Design | 1X
Code and Unit Testing | 5X
Integration and System Testing | 10X
Beta Testing | 15X
Post Release | 30X
(这里的桌子)
敏捷软件开发方法论的目标之一是消除这些不同的阶段并降低这些成本。使用其他方法进行瀑布分析时,这些数字不适用。
您的问题与质量检查无关,实际上,如果您的质量检查正在进行“测试”,则延迟几乎是您所担心的最少。请让我解释一下(再次,这是编程行业中常见的误解)... QA通过从需求(可能更早)到开发,验证,发布和支持,监督整个SDLC,从而确保产品的质量。测试可确保代码中不存在明显的缺陷。有很大的重要区别。如果您有真正的QA,他们将遍历整个Test / V&V部门,询问他们为什么要花费业务时间(以及金钱)来延迟发布,或者遍及整个项目管理,以确保他们正确地管理项目计划,或者遍及整个管理确保有足够的测试人员来生成代码等...
因此,假设您是质量检查人员,则实际上是指测试,回到原始的问题。Code Complete正确无误-缺陷的成本是从插入到纠正所需的时间。早期检测仅在您也及早纠正的情况下才有用,但是大多数人的解释是错误的。
(注意:我在这里扮演Devils的拥护者,不要直视其中的任何一个,因为我对您的情况一无所知)测试部门的延迟原因绝对是代价,但是,我必须问您是否等待他们发现缺陷,您在做什么-您是否不应该发现自己的缺陷?也许,如果他们的工作量较少(通过高质量的输入而带来的缺陷较少),那么延迟就不会那么重要,成本也不会那么低-作为经理,我会问您如何计划减少交付给您的代码中的缺陷测试,因为(根据您的论点)如果通过测试发现的缺陷比您自己发现的缺陷花费更多。
另外,作为您的经理,我可能会说不是Tests工作发现您的缺陷,他们的工作是发现没有缺陷-如果您期望他们发现缺陷,也许您做得还不够好。
请谨慎处理。如果您没有解决问题的方法,那么您很有可能排名第二。