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

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 由人工智能参数讨论基于Bug的软件测试质量分析

上文和大家一起讨论了人工智能样本的评价参数:准确度、精准度、召回率和F1分数。这篇文章,我们结合这些参数来讨论基于Bug的软件测试质量分析。


软件测试质量分析是软件测试工作中非常重要的管理工作,其实在没有了解准确度、精准度、召回率这些概念之前,我们其实已经多多少少使用了这些概念。现在假设讨论的周期为一次正式的版本发布,版本经过研发,并且在客户现场运行了一段时间,目前基本上发现不了Bug了。在这期间发现了mBug其中研发人员发现的Bug数量为a个(a1个为有效缺陷、a2个为无效缺陷,a1+a2=a),研发人员发现的Bug数量为b个(b1个为有效缺陷、b2个为无效缺陷,b1+b2=b)。这样我们就可以定义真阳性Buga1个,假阳性Buga2,真阴性Bugb1个,假阴性Bugb2。接下来我们将缺陷乘以严重等级(严重×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的时间,把这个时间之前发现的有效缺陷标记为真阳性;这个时间之前发现的无效缺陷标记为假阳性;把这个时间之后发现的有效缺陷(不管是研发还是客户发现的)标记为假阴性,这个时间之前发现的无效缺陷(不管是研发还是客户发现的)标记为真阴性。假设在上表中客户发现的有效缺陷中严重504个是事后发现的;一般10423个是事后发现的;轻微19843个是事后发现的。上表中客户发现的有效缺陷中严重102个是事后发现的;一般245个是事后发现的;轻微4615个是事后发现的。所以上表变为表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为人工测试发现的缺陷数据,括号内为与机器人发现重复的。


人工测试发现的缺陷数据

严重

一般

轻微

严重

一般

轻微

4525

13546

212109

40

150

30


这样人工测试发现的去除测试机器人发现的缺陷数据为表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%为不合格产品,由此可见这款测试机器人刚刚合格。

————————————————————


软件安全测试

https://study.163.com/course/courseMain.htm?courseId=1209779852&share=2&shareId=480000002205486

接口自动化测试

https://study.163.com/course/courseMain.htm?courseId=1209794815&share=2&shareId=480000002205486

DevOps 和Jenkins之DevOps

https://study.163.com/course/courseMain.htm?courseId=1209817844&share=2&shareId=480000002205486

DevOps与Jenkins 2.0之Jenkins

https://study.163.com/course/courseMain.htm?courseId=1209819843&share=2&shareId=480000002205486

Selenium自动化测试

https://study.163.com/course/courseMain.htm?courseId=1209835807&share=2&shareId=480000002205486

性能测试第1季:性能测试基础知识

https://study.163.com/course/courseMain.htm?courseId=1209852815&share=2&shareId=480000002205486

性能测试第2季:LoadRunner12使用

https://study.163.com/course/courseMain.htm?courseId=1209980013&share=2&shareId=480000002205486

性能测试第3季:JMeter工具使用

https://study.163.com/course/courseMain.htm?courseId=1209903814&share=2&shareId=480000002205486

性能测试第4季:监控与调优

https://study.163.com/course/courseMain.htm?courseId=1209959801&share=2&shareId=480000002205486

Django入门

https://study.163.com/course/courseMain.htm?courseId=1210020806&share=2&shareId=480000002205486

啄木鸟顾老师漫谈软件测试

https://study.163.com/course/courseMain.htm?courseId=1209958326&share=2&shareId=480000002205486

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
2天前
|
数据采集 人工智能 自然语言处理
探索软件测试中的人工智能应用
在当今快速发展的技术世界中,软件测试作为确保软件质量的关键环节,正经历着前所未有的变革。随着人工智能技术的不断成熟和应用,其在软件测试领域的潜力逐渐显现,为提升测试效率、准确性和自动化水平提供了新的可能性。本文将深入探讨人工智能在软件测试中的应用现状、面临的挑战以及未来的发展趋势,旨在为读者提供一个关于AI如何改变软件测试行业的全面视角。
|
1天前
|
人工智能 算法 测试技术
软件测试中的人工智能革命
本文深入探讨了人工智能在软件测试中的应用,揭示了这一技术革新如何改变传统的测试流程。通过分析人工智能技术的优势、具体应用案例以及面临的挑战,文章展示了AI如何提高测试效率、减少人为错误,并预测其在未来软件测试中的趋势。此外,文章还提出了针对当前挑战的解决策略,为软件测试行业的从业者提供了宝贵的参考和启示。
15 4
|
1天前
|
机器学习/深度学习 人工智能 算法
软件测试中的人工智能:现状与未来
本文探讨了人工智能在软件测试中的应用,包括自动化测试、缺陷预测、测试用例生成等方面。通过分析当前AI技术的优势和不足,提出了未来可能的发展方向,为软件测试领域提供了新的思路和方法。
15 4
|
1天前
|
设计模式 人工智能 算法
PHP中的设计模式:策略模式的深入解析与实践软件测试中的人工智能革命:提升效率与准确性的新篇章
在PHP开发中,理解并运用设计模式是提升代码质量和可维护性的重要途径。本文聚焦于策略模式(Strategy Pattern),一种行为型设计模式,它允许在运行时选择算法或业务规则。通过本文,我们将深入探讨策略模式的定义、结构、使用场景以及如何在PHP项目中有效地实现和利用策略模式。不同于性能优化等技术性摘要,本文着重于提供对策略模式全面而实用的理解,助力开发者编写出更加灵活和可扩展的应用程序。 本文深入探讨了人工智能在软件测试领域的应用,揭示了其如何显著提高测试过程的效率和准确性。通过实际案例分析,展示了AI技术在自动化测试、缺陷检测及结果分析中的关键作用,并讨论了实施AI测试策略时面临的挑
11 3
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
探索软件测试的未来:自动化与人工智能的融合
在本文中,我们将一起踏上一段激动人心的旅程,探索软件测试领域的未来趋势。从手工测试的繁琐到自动化测试的便捷,再到人工智能(AI)技术的引入,我们将揭示这些变革如何影响测试流程、提升效率并减少错误。文章将深入浅出地分析自动化测试工具的进步和AI技术如何赋能软件测试,预测未来可能的发展路径,并提供一些行业案例作为参考。无论你是软件测试领域的新手,还是寻求进阶知识的资深人士,这篇文章都将带给你新的启示和思考。
|
6天前
|
机器学习/深度学习 数据采集 人工智能
软件测试中的人工智能:现状与未来
随着人工智能技术的迅猛发展,软件测试领域正经历着深刻的变革。本文将探讨人工智能在软件测试中的应用、挑战以及未来的发展趋势,旨在为读者提供全面而深入的理解。
|
1月前
|
人工智能 自然语言处理 搜索推荐
【人工智能】人工智能(AI)、Web 3.0和元宇宙三者联系、应用及未来发展趋势的详细分析
人工智能(AI)、Web 3.0和元宇宙作为当前科技领域的热门话题,它们之间存在着紧密的联系,并在各自领域内展现出广泛的应用和未来的发展趋势。以下是对这三者联系、应用及未来发展趋势的详细分析
46 2
【人工智能】人工智能(AI)、Web 3.0和元宇宙三者联系、应用及未来发展趋势的详细分析
|
2天前
|
机器学习/深度学习 人工智能 算法
软件测试中的人工智能应用
在当今快速发展的科技世界中,人工智能(AI)已经在各个领域中展现了其强大的影响力。软件测试作为软件开发过程中的关键步骤,也正在逐渐受到AI技术的深刻影响。本文将探讨AI在软件测试中的应用,分析其带来的优势与挑战,并提供一些实际案例来说明这些变化。通过深入理解AI在软件测试中的角色,我们可以预见一个更加高效、智能的软件测试未来。
16 0
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
软件测试中的人工智能应用
本文探讨了人工智能在软件测试中的应用,包括自动化测试、缺陷预测和测试用例生成等方面。通过实际案例分析,展示了如何利用AI技术提高软件测试的效率和准确性,并讨论了未来的发展趋势。
13 0
|
1月前
|
机器学习/深度学习 人工智能 算法
【人工智能】传统语音识别算法概述,应用场景,项目实践及案例分析,附带代码示例
传统语音识别算法是将语音信号转化为文本形式的技术,它主要基于模式识别理论和数学统计学方法。以下是传统语音识别算法的基本概述
46 2