说起 BUG,我相信各位作为大佬无论作为测试,或者测开,或者研发等各位大佬,都不陌生,但是在自己当前的团队中,你们是如何度量和处理 BUG 的呢?作为菜鸡的我在团队中是这样做的?
测试 BUG 按照严重等级分为严重、普通、轻微、优化四类,按照 BUG 类别分为功能,界面、数据处理、流程、优化建议、性能、常识七类,对应各种 BUG 情形如下
由于程序造成系统崩溃、自身程序崩溃、网络中断、系统内存或文件资源耗尽、破坏或丢失数据库数据
统计缺陷相关的度量指标,无外乎几个目的,想知道我们目前的项目或产品的质量怎么样。可能对关心项目和产品的领导来说,只是单纯主观的描述质量好或者不好肯定是不能被接纳的,因此需要量化一些指标。
细化来说大概分为上线前的过程指标以及上线后的结果指标。
事故个数及等级:一般来说等级根据影响情况分为 P0、P1、P2,P3 等。具体细节定义可根据项 目、产品最核心价值来定,例如服务不可用时间、例如影响线上请求的数量等来定级。
线上 Bug 率:核心就是看线上发现的 Bug 等级和个数对应于某段时间开发出来的软件代码的占比 关系。个人实践算法,在某个时间周期内(半年或者三个月)线上 Bug 个数乘以对应的 Bug 重要 等级对应的分值(严重 10 分、普通 8 分、轻微 5 分、优化类 3 分)然后除以开发工作人日。
线上 BUG 率计算公式为 BUG 数 *BUG 等级分/研发工作日/项目数
线上漏测率:分析一段时间内发现的所有线上 Bug,如果跟测试过程强相关的,例如没有用例覆 盖、或者有用例覆盖但是未执行,这种属于漏测问题,将漏测问题除以总的线上问题数,就可以 得出线上漏测率。如果跟用例没有强相关,可能是设计层面或需求层面的问题、或者是运维或配 置引入的不可测试出来的问题则认为非漏测。也有可能有另外一种定义,就是拿线上 Bug 除以线下 Bug,以代表即使测出来这么多线上 Bug,仍然有未评估到遗漏到线上的问题比例。这个指标最终 是为了改进我们的测试过程质量,将测试用例设计弥补的更加完善,在不影响上线效率的情况下 尽最大可能挖掘软件质量方面的 Bug。
本人生产与 96 的小白鼠,今年跳槽踏入一家小公司,公司主要做 TOB 的业务,公司有 A,B 两个测试团队
A 团队负责标准产品研发的测试
B 团队负责对客相关的交付测试
本人就在 B 团队做一个小管理,复制组建 B 团队和 B 团队交付的质量建设等系列工作
在这里请大家考虑 3 个问题:
上面科普这么多缺陷方面的指标,也说了统计的一些规则,建议的公式等
1. 那么如何降低质量度量的人工成本呢?
2. 统计周期定在多久统计一次合适呢?
3. 线上线下人肉统计和工具统计比例如何分配呢?
极端考虑,如果统计周期为一天,那么每天就会疲于收集和统计数据,对比效果也不好,因为很 难说今天比昨天的度量数据变好了就说明软件质量就变好了,因为很有可能今天就没有在做测试 执行的活动,或者今天运气比较差,一下子来了好几个线上 Bug,也不能说明今天的软件质量就比 昨天的差。建议线下的指标统计周期跟项目交付周期关联,例如有些服务一个月一个版本,有些 一个 月两个版本,或者一周一个版本,都比较合适作为度量数据拉取的一个时间周期。而线上 的指标 可以更加长一些,可以考虑跟绩效评估周期强相关,例如三个月或者半年为一个度量周 期,可以 更加有参考性,也可以将部分指标作为项目整体打分或者个人绩效的一些参考指标
工具/平台,如果所有的统计工作都人肉完成,那么有两方面的弊端,一个是统计成本高,另外一 个就是数据不完全可靠,有可能存在偏差。建议使用平台或者工具来完成统计。一方面需要源数 据填写准确,基于 Jira 和禅道以及公司内部 ASANA 或者其他缺陷管理平台的字段要准确。另一方 面平台和工具需要支持 可以定时拉取数据以及人工触发拉取数据并且自动计划预设好的各种指 标
研发单月背负 BUG 指标为 60,超过 60,需要给出说法,低于 60 什么都不干,修复 BUG 就行
例如公司最近一个项目单月统计如下
项目名称 | BUG 总数 | 线下 BUG | 功能 BUG | 非功能 BUG | 验收 BUG | 交付 BUG |
---|---|---|---|---|---|---|
XX 项目 | 100 | 90 | 75 | 15 | 8 | 2 |
YY 项目 | 120 | 115 | 101 | 4 | 3 | 1 |
研发人员 | 月度指标 (60) | 线下 BUG | 验收 BUG | 交付 BUG |
---|---|---|---|---|
A | 70 | 60 | 8 | 2 |
B | 55 | 50 | 4 | 1 |
总体来说,无论线上线下出现问题后应先把问题都收集起来,把原因了解清楚,责任人分清楚。总之:“应急方案” 处理得很好,先稳住客户或者用户,告知客户或者用户要稍后回复他们,然后去找技术同事解决,而且解决的方法的确可以缓解了一时之急,遇到问题的时候不要慌张就好了。急的问题就先应急,然后再跟踪问题