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

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

上文和大家一起讨论了人工智能样本的评价参数:准确度、精准度、召回率和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%为不合格产品,由此可见这款测试机器人刚刚合格。

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


软件安全测试

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

目录
相关文章
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
778 1
|
数据采集 人工智能 监控
人工智能驱动的软件工程:测试左移的崛起价值
本文探讨了人工智能驱动下测试左移理念在软件工程中的重要性,分析测试工程师在需求评估、AI代码生成及遗留系统优化中的关键作用,揭示AI带来的挑战与机遇,并指出测试工程师需提升技能、关注合规与可维护性,以在AI时代保障软件质量。
751 89
|
机器学习/深度学习 人工智能 测试技术
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
EdgeMark是一个面向嵌入式AI的自动化部署与基准测试系统,支持TensorFlow Lite Micro、Edge Impulse等主流工具,通过模块化架构实现模型生成、优化、转换与部署全流程自动化,并提供跨平台性能对比,助力开发者在资源受限设备上高效选择与部署AI模型。
1062 9
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
|
数据可视化 JavaScript 前端开发
利用Postman和Apipost进行API测试的实践与优化-动态参数
在API测试中,Postman和Apipost是常用的工具。Postman内置变量功能有限,面对复杂场景时需编写JavaScript脚本,增加了维护成本。而Apipost提供丰富的内置变量、可视化动态值配置和低代码操作,支持生成真实随机数据,如邮箱、手机号等,显著提升测试效率和灵活性。对于复杂测试场景,Apipost是更好的选择,能有效降低开发与维护成本,提高测试工作的便捷性和可维护性。
|
人工智能 安全 测试技术
Burp Suite Professional 2025.3 发布,引入 Burp AI 通过人工智能增强安全测试工作流程
Burp Suite Professional 2025.3 发布,引入 Burp AI 通过人工智能增强安全测试工作流程
1286 0
Burp Suite Professional 2025.3 发布,引入 Burp AI 通过人工智能增强安全测试工作流程
|
数据可视化 JavaScript 前端开发
从Postman到Apipost:我的动态参数测试实战踩坑记
作为一名全栈开发工程师,在开发用户中心模块时,我遇到了复杂参数API测试的挑战。最初使用Postman时,发现其在生成动态参数(如邮箱、手机号和日期)时存在诸多问题,导致测试效率低下甚至出错。例如,随机生成的邮箱格式无效等 后来,CTO推荐了Apipost,它提供了更智能的参数生成方式:支持真实邮箱、符合规范的手机号以及合法日期范围,极大提升了测试效率和准确性。通过对比,Apipost在处理复杂动态参数方面明显优于Postman,减少了维护成本并提高了团队协作效率。现在,我们已全面切换到Apipost,并利用其「参数组合测试」功能发现了多个边界条件bug。
|
弹性计算 运维 Java
OS-Copilot参数功能全面测试报告
作为一名运维工程师,我主要负责云资源的运维和管理。通过使用OS Copilot的-t/-f/管道功能,我顺利解决了环境快速搭建的问题,例如Tomcat的快速部署。具体步骤包括购买ECS服务器、配置安全组、远程登录并安装OS Copilot。使用-f参数成功安装并启动Tomcat,自动配置JDK,并通过|管道功能验证了生成内容的正确性。整个过程非常流畅,极大提升了工作效率。
321 12
|
机器学习/深度学习 人工智能 搜索推荐
人工智能与体育:运动员表现分析
【10月更文挑战第31天】随着科技的发展,人工智能(AI)在体育领域的应用日益广泛,特别是在运动员表现分析方面。本文探讨了AI在数据收集与处理、数据分析与挖掘、实时反馈与调整等方面的应用,以及其在技术动作、战术策略、体能与心理状态评估中的具体作用。尽管面临数据准确性和隐私保护等挑战,AI仍为体育训练和竞技带来了新的机遇和前景。
|
机器学习/深度学习 人工智能 自然语言处理
软件测试中的人工智能:改变游戏规则的革新
在这篇技术性文章中,我们将深入探讨人工智能(AI)如何彻底改变了软件测试领域。从自动化测试到智能缺陷检测,AI不仅提高了测试的效率和准确性,还为软件开发团队提供了前所未有的洞察力。通过具体案例,本文揭示了AI在软件测试中应用的现状、挑战及未来趋势,强调了技术创新在提升软件质量与开发效率中的关键作用。
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
1586 1