首先由于我自己是做测试的,因此这篇文章页主要是从测试的角度出发,对几个测试相关的维度进行分析,说明它们是如何影响项目质量的。这7个维度是根据以往做项目的经验再加上网上一些前辈的总结提炼出来的,并非来自于教科书,所以仅供参考。这7个维度也只是从功能测试出发,对于性能测试、安全性测试、用户体验测试等并没有过多的涉及,至于从这些方面如何去度量,以后再做讨论。

  首先,我们要明确几个概念,是“严重Bug”和“缺陷修复率”。这7个维度,有很多都和这两个概念有关。“严重Bug”指的是在项目中,优先级为A和B的Bug。由于我们公司用的JIRA不像Bugzilla那样,对Bug分为“严重程度”和“优先级”两个维度,因此我们在报Bug时根据情况综合这两点的影响,统一以“优先级”来衡量Bug级别。A级Bug是指程序无法正常运行或者是测试无法正常进行;B级是指各个主要功能模块出现用户不可接受的错误。C级和D级大多也是一些功能方面的问题,还有一些用户体验易用性的问题,用户可以接受少量这种类型的Bug。

  好,下面开始讨论这7个维度,我会说明计算方法,以及它们的战略意义。

  1、严重bug数 / 测试用例数

  这个维度代表了一个项目的严重bug数量是否正常,让测试用例参与计算,是为了平衡规模不同的项目的数据。

  2、第三轮系统测试出现的严重bug数 / 严重bug总数

  由于需求变更和项目并行比较常见,又不可避免,因此目前我们的测试流程尽可能的控制不超过四轮系统测试,四轮的目标分别是:发现bug、验证bug并响应变更、继续验证Bug、稳定回归。如果在第三轮系统测试时,还出现大量严重bug,那说明可能是之前的测试做的不到位,或者有新的变更,再或者开发修改缺陷带来的成本太高,肯定是不正常的,也会对第四轮的回归带来巨大风险。因此这个数字应该要控制在一个很低的水平。

  3、被重开的严重bug / 严重bug总数

  重开指开发修复缺陷后,测试验证不通过,或者是已经关闭的Bug又复发。这个维度也应该被控制在一个很低的水平,如果偏高,说明开发修复bug的效率偏低,代码不稳定,发布后出现bug的几率可能会增加。

  4、第二轮、第三轮测试用例平均通过率

  因为第二轮和第三轮的目标是修复bug,所以如果第三轮结束的时候,严重bug全部被修复,并且第三轮没有出现新的严重bug,那么可以说项目的质量是非常稳定的。这里判定第二轮、第三轮用例通过与否的标准,是看这两轮测试结束时,如果有严重bug没有关闭,那相关的测试用例是failed。此外,C、D级bug如果没有关闭,除非有确定的用例与之对应,否则不会影响用例的通过率。

  5、测试工作量(人月) / 测试用例数

  这个维度代表投入的测试资源是否充足,这里的工作量,指的是从测试设计到测试执行的所有人月数。如果数字过低,说明测试资源紧张,无法保证测试质量;如果过高,说明有可能测试效率低,测试负责人需要进行解释。

  6、严重bug平均关闭时间(天)

  bug 关闭时间,指bug从创建开始,到close为止,经过的时间,要精确到小数点后1位。只有状态是closed的bug,才会计算关闭时间。平均关闭时间的计算方法也很简单,把所有closed严重bug求平均值即可。这个维度代表项目组解决bug的效率,如果时间太长,说明项目组对bug重视不够,或者开发组资源不足。

  7、已修复Bug / Bug总数

  这个维度代表测试人员所报Bug的总体修复率,如果修复率过低说明在测试过程中对于项目的控制出现了问题,可能是在测试过程中产品变更过于频繁,对变更的控制不合理,或者测试组对于项目的理解有偏差,项目经理和测试负责人需要给出解释。

  其实要度量项目的质量,还有很多维度要考虑,比如需求文档、设计方案、代码等等,不过我们还是先在测试的范畴进行讨论,欢迎大家对这些维度提改进建议,或者提出新的维度。