前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >由人工智能参数讨论基于Bug的软件测试质量分析

由人工智能参数讨论基于Bug的软件测试质量分析

作者头像
顾翔
发布2020-06-17 10:45:12
8120
发布2020-06-17 10:45:12
举报

上文和大家一起讨论了人工智能样本的评价参数:准确度、精准度、召回率和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情况如下表1:

研发发现的

客户发现的

有效

无效

有效

无效

严重

一般

轻微

合计

严重

一般

轻微

合计

严重

一般

轻微

合计

严重

一般

轻微

合计

50

104

198

10

24

46

5

14

25

2

7

12

250

312

198

760

50

72

46

168

25

42

25

92

10

21

12

43

站在研发角度,我们可以得到:

  • 真阳——研发发现的有效缺陷(加权后):760;
  • 真阴——客户发现的无效缺陷(加权后):43;
  • 假阴——客户发现的有效缺陷(加权后):92;
  • 假阳——研发发现的无效缺陷(加权后):168。

所以混淆矩阵为表2:

P

N

T

760

168

F

92

43

所以可以得到:

  • 准确率:(760+43)/(760+168+43+82)=803/1063=76%;
  • 精确度:760/(760+168)=760/928=82%;
  • 召回率:760/(760+92)=760/852=89%;
  • F1分数:82%×89%×2 /(82%+89%)=1.4596/1.71=85%。

可以看见准确率反应整体发现缺陷的水平,准确度反应研发发现缺陷的质量,召回率反应研发发现缺陷的水平。作为测试工作,我们的目标是在准确率、精确度和召回率上都要加强。准确率的提高主要目标是减少整体误报率,精确度的提高主要目标是减少研发人员的误报率,召回率的提高是保证在出厂之前产品的质量的指标,召回率越高,漏报率越低。如果精确度与召回率比较低,而准确率高,说明研发人员的测试水平存在一定问题,许多缺陷都是用户测试出来的,研发人员漏报了不少Bug;反之,如果召回率比较高,而精确度或准确率低,说明发现了大量无效缺陷,需要对产品业务进行有效地理解。

当然,我们也可以按照Release的时间,把这个时间之前发现的有效缺陷标记为真阳性;这个时间之前发现的无效缺陷标记为假阳性;把这个时间之后发现的有效缺陷(不管是研发还是客户发现的)标记为假阴性,这个时间之前发现的无效缺陷(不管是研发还是客户发现的)标记为真阴性。假设在上表中客户发现的有效缺陷中严重50中4个是事后发现的;一般104中23个是事后发现的;轻微198中43个是事后发现的。上表中客户发现的有效缺陷中严重10中2个是事后发现的;一般24中5个是事后发现的;轻微46中15个是事后发现的。所以上表变为表3:

Release之前发现的

Release之后发现的

有效

无效

有效

无效

严重

一般

轻微

合计

严重

一般

轻微

合计

严重

一般

轻微

合计

严重

一般

轻微

合计

46

81

155

8

19

31

9

37

68

4

12

27

230

243

155

628

40

57

31

128

45

111

68

224

20

36

27

83

于是得到混淆矩阵为表4:

P

N

T

628

128

F

224

83

所以可以得到:

  • 准确率:(628+83)/(628+128+224+83)=741/1063=70%;
  • 精确度:628/(628+128)=628/756=83%;
  • 召回率:628/(628+224)= 628/842=75%;
  • F1分数:83%×78%×2 /(83%+78%)=1.2948/1.61=80%。

这里的度量指标反映了版本发布之前的质量效率。

现在假设有一个测试机器人来进行软件测试,我们如何来评估这个测试机器人的测试质量呢?测试机器人发现的正确的缺陷为真阳性,发现的错误的缺陷为假阳性,同时配合人工测试,人工测试发现的正确的缺陷去除与测试机器人发现的重复的正确的缺陷为假阴性,人工测试发现的错误的缺陷去除与测试机器人发现的重复的错误的缺陷(测试机器人与人发现的判定为错误的缺陷应该仔细判断,理论上应该为0)为真阴性。表5为测试机器人发现的缺陷数据。

测试机器人发现的缺陷数据

有效

无效

严重

一般

轻微

合计

严重

一般

轻微

合计

30

76

186

10

32

32

150

228

186

564

50

96

32

178

表6为人工测试发现的缺陷数据,括号内为与机器人发现重复的。

人工测试发现的缺陷数据

严重

一般

轻微

严重

一般

轻微

45(25)

135(46)

212(109)

4(0)

15(0)

3(0)

这样人工测试发现的去除测试机器人发现的缺陷数据为表7:

人工测试发现的缺陷数据

严重

一般

轻微

严重

一般

轻微

20

189

103

4

15

3

合并表5和表7,得到表8:

测试机器人发现的缺陷数据

人工测试发现的缺陷数据

有效

无效

有效

无效

严重

一般

轻微

合计

严重

一般

轻微

合计

严重

一般

轻微

合计

严重

一般

轻微

合计

30

76

186

10

32

32

20

189

103

4

15

3

150

228

186

564

50

96

32

178

100

567

103

770

20

45

3

68

得到混淆矩阵为表9:

P

N

T

564

178

F

770

68

所以:

  • 准确率:(564+68)/(564+178+770+68)=632/1580=40%
  • 精确度:564/(564+178)=564/742=76%;
  • 召回率:564/(564+770)=564/1334=42%;
  • F1分数:76%×42%×2 /(76%+42%)=0.6384/1.18=54%。

由此可见,测试机器人的测试精确度还可以,也就是说误报率比较低。但是准确度和召回率就比较低了,也就是漏报率比较高。并且F1分数仅有54%,一般系统如果F1分数低于50%为不合格产品,由此可见这款测试机器人刚刚合格。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试培训 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档