上文和大家一起讨论了人工智能样本的评价参数:准确度、精准度、召回率和F1分数。这篇文章,我们结合这些参数来讨论基于Bug的软件测试质量分析。
软件测试质量分析是软件测试工作中非常重要的管理工作,其实在没有了解准确度、精准度、召回率这些概念之前,我们其实已经多多少少使用了这些概念。现在假设讨论的周期为一次正式的版本发布,版本经过研发,并且在客户现场运行了一段时间,目前基本上发现不了Bug了。在这期间发现了m个Bug,其中研发人员发现的Bug数量为a个(a1个为有效缺陷、a2个为无效缺陷,a1+a2=a),研发人员发现的Bug数量为b个(b1个为有效缺陷、b2个为无效缺陷,b1+b2=b)。这样我们就可以定义真阳性Bug为a1个,假阳性Bug为a2,真阴性Bug为b1个,假阴性Bug为b2。接下来我们将缺陷乘以严重等级(严重×5,一般×3 轻微×1),就可以获得混淆矩阵。
假设Bug情况如下表:
研发发现的 |
客户发现的 |
||||||||||||||
有效 |
无效 |
有效 |
无效 |
||||||||||||
严重 |
一般 |
轻微 |
合计 |
严重 |
一般 |
轻微 |
合计 |
严重 |
一般 |
轻微 |
合计 |
严重 |
一般 |
轻微 |
合计 |
50 |
104 |
198 |
10 |
24 |
46 |
5 |
14 |
25 |
2 |
7 |
12 |
||||
250 |
312 |
198 |
760 |
50 |
72 |
46 |
168 |
25 |
42 |
25 |
82 |
10 |
21 |
12 |
43 |
站在研发角度,我们可以得到:
- 真阳——研发发现的有效缺陷(加权后):760;
- 真阴——客户发现的无效缺陷(加权后):43;
- 假阴——客户发现的有效缺陷(加权后):82;
- 假阳——研发发现的无效缺陷(加权后):168。
所以混淆矩阵为
P |
N |
|
T |
760 |
168 |
F |
82 |
43 |
所以可以得到:
- 准确率:(760+43)/(760+168+43+82)=803/1053=76%;
- 精确度:760/(760+168)=760/928=82%;
- 召回率:760/(760+82)=760/842=90%;
- F1分数:82%×90%×2 /(82%+90%)=1.479/1.72=86%。
可以看见准确率反应整体发现缺陷的水平,准确度反应研发发现缺陷的质量,召回率反应研发发现缺陷的水平。作为测试工作,我们的目标是在准确率、精确度和召回率上都要加强。准确率的提高主要目标是减少整体误报率,精确度的提高主要目标是减少研发人员的误报率,召回率的提高是保证在出厂之前产品的质量的指标。如果精确度与召回率比较低,而准确率高,说明研发人员的测试水平存在一定问题,许多缺陷都是用户测试出来的;反之,如果召回率比较高,而精确度或准确率低,说明发现了大量无效缺陷,需要对产品业务进行有效沟通。