软件测试公式之如何高质量的做BUG分析?

对于BUG分析,测试人员再熟悉不过了。但如果是面对大量的BUG,要如何有效的分析呢?有什么好的方案和行动项?今天聊聊这个话题。

01

BUG分析简单可以分为两类:宏观BUG分析 和 微观BUG分析

宏观BUG分析:在某个迭代或者版本的周期内(或者更长时间),对BUG产生的原因、修复周期、累积趋势进行分析。总结分析bug和测试过程问题,形成的质量报告不仅能准确评估过去产品质量,还能为未来产品提出改进建议,持续推进产品质量的不断提高和完善。

微观BUG分析:指深入分析某个bug产生的根因、探讨后续如何避免。

02

众所周知,早期发现并修复bug所需的资源更少。因此,我们应该尽早预防和发现bug,而不仅仅是修复它们。适当借鉴过去的经验是一种较好的预防bug方法。通过分析现有的bug,找到引起它们的根本原因和流程中的缺陷,并思考如何从各个方面进行优化改进,可以有效地预防bug,降低质量风险,提高产品质量。

这,是我们进行BUG分析的原始动力,也是让我们不迷失在茫茫BUG之海中的锚点。

03

常见的BUG分析有以下几种方法:

分类法:对所有的BUG进行分类,识别出共性的问题。根据分析的角度不同,也会有不同的分类方法,下面是笔者常用的分类方法,仅供参考:

发生阶段:冒烟测试、迭代测试、SIT测试、UAT测试、生产;根据BUG的发生阶段,我们可以观察BUG是否收敛,如果整体趋势是收敛的,那么分析的重点就可以放到UAT和生产的具体BUG上。如果发现BUG没有收敛,或者趋势不明显,那就要优先分析流程和测试策略,这时候去分析某个BUG的根因意义就不大了。

产生原因:这个就有很多维度,比如需求问题、设计问题、编码问题、接口问题、数据问题等等;根据产生的原因,我们可以观察BUG集中发生在哪个阶段,大概的原因是什么。有助于研发去规范和改进研发过程,毕竟这是BUG产生的直接原因。

分类法适用于宏观BUG分析,有助于我们从整体审视BUG的生命周期,发现流程性的问题,而不是只关注某个BUG。

根因法:针对某类或者某个具体的BUG,进行刨根问底,找到BUG的根源。常用的方法有5Y法和5M1E法。

5Y法:是一种问题解决技术,旨在找出一个问题的根本原因。它通过连续追问"为什么"来深入挖掘问题的本质,直到找到最终的根本原因。让问题不浮于表面。(较常见,就不举例了哈)

5M1E法:是一种用于问题解决和过程改进的工具,它通过分类和归类来识别和分离影响某个过程的因素。5M1E代表的是材料、方法、人力、机器、测量/环境和效应,其中效应是该模型中最重要的一个部分。(文末有个具体的案例)

对于根因分析法,分析到什么程度才是“根因”呢:最直接的指标就是产生的结果是否是“可行动的”。如果一个结果是不可行动的,往往意味着深度或者抽象不够。

04

在实践过程中,我们经常会发现,虽然我们经常进行根因分析和复盘,但问题往往总是在重复,每次分析到最后,原因总是那几个,然后就逐步放弃这件事。笔者认为,最核心的问题在于我们缺少对PDCA中A(Act 行动)的确认,分析只留在当时,而没有持续跟踪改进。

经过分析或者复盘后,我们的流程是否发生了变化?研发过程是否发生了变化?哪些检查项被集成到流程中?有什么好的研发方法被推广了?还是什么都没发生。

当下次进行BUG分析前,是否确认之前的行动项已经被落地,同类型的BUG是否得到了收敛?如果没有,请不要再投入精力去做分析。请把上一次的行动项做好。

05

附:关于5M1E分析法的一个案例,假设一款软件出现了一个常见的问题:某个功能无法正常使用。

明确问题:某个功能无法正常工作。

识别过程:确定该功能所在的开发流程和测试流程。

分类:将过程中的所有因素按照5M1E分类,如下所示:

材料 (Material): 程序代码、测试数据等

方法 (Method): 开发和测试方法、流程等

人力 (Manpower): 开发和测试人员的技能水平、经验等

机器 (Machinery): 开发和测试设备、硬件环境、软件环境等

测量/环境 (Measurement/Environment): 测试工具、开发环境、测试环境等

效应 (Effect): 缺陷或错误的产生会影响什么

分析:分析每个因素如何影响该问题,并确定其中的关键因素,如下所示:

材料: 程序代码可能存在缺陷或bug,导致程序不能正常工作。

方法: 可能没有足够的测试覆盖率或测试用例来检测程序的缺陷或bug。

人力: 测试人员可能没有足够的经验或技能来检测程序的缺陷或bug。

机器: 测试环境可能与实际环境不匹配,导致未发现问题。

测量/环境: 可能使用的测试工具或开发环境存在问题,无法正确检测问题。

效应: 该缺陷或错误导致了产品质量问题,影响了客户满意度和公司品牌形象。

5M1E法给出了更聚焦的分析方向,可以多尝试使用,分析时,原因可能是5M中的一个或者多个,需要根据实际情况来确认。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/616292.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【python】进阶--->MySQL数据库(一)

一、mysql数据库 关系型数据库 : 一些相关的表和其他数据库对象的集合。 表是由行和列组成。列包含一组命名的属性(也称为字段)。 行包含一组记录,行和列的交集称为数据项(也叫字段值)。 数据库(database) : 存储数据的仓库,本质上就是一个文…

《C++ Primer》第14章 重载运算与类型转换(二)

参考资料: 《C Primer》第5版《C Primer 习题集》第5版 14.8 函数调用运算符(P506) 如果类重载了函数调用运算符,则我们可以像使用函数一样使用该类的对象。这样的类同时也能存储状态,所以它们比普通函数更加灵活。…

x-cmd pkg | czg - git commit 智能生成工具

目录 简介首次用户功能特点竞品和相关作品进一步探索 简介 czg 源于 commitizen/cz-cli 交互插件中 cz-git 的延伸项目,重新使用 TypeScript 编写的零依赖独立的 Node.js 命令行工具。旨在使用交互友好的方式,辅助用户生成规范的 git commit message 约…

游泳耳机哪种款式好?最值得入手的游泳耳机大全

在如今注重健康和娱乐的生活方式中,游泳作为一项全身性的运动备受欢迎。然而,对于热爱水中活动的人们来说,选择一款出色的游泳耳机至关重要。好的游泳耳机不仅能提供清晰的音质,还能有效防水,让您在水中尽情畅游的同时…

MySQL中约束是什么?

🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:重拾MySQL 🍹文章作者技术和水平很有限,如果文中出现错误&am…

记录由客户端http请求原因引起的5xx响应问题排查过程

看到 http 状态码 5xx,很多开发者第一感觉就是服务端的问题,其实并不全是。下面我遇到的问题就是一个例外。 问题描述 最近在为反向代理 nginx 配置 auth_request 后,出现了请求504错误。 504状态码是HTTP协议中的一种服务器错误状态码。当…

Windows压缩包的MySQL安装方式

1.下载压缩包 https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.35-winx64.zip 2.解压压缩包(建议将解压到非C盘,路径不要出现特殊符号) 3.在MySQL主目录下,创建my.ini空文件(先创建一个txt文件,进…

JavaScript删除数组中指定元素的5种方法

文章目录 目录 文章目录 前言 一、数组是什么? 二、讲解数组 总结 前言 在JavaScript开发中,处理数组是一项非常常见的任务。有时候我们需要从数组中删除特定的元素,以便对数组进行进一步操作或者满足特定的需求。幸运的是,JavaS…

Swoft - Bean

一、Bean 在 Swoft 中,一个 Bean 就是一个类的一个对象实例。 它(Bean)是通过容器来存放和管理整个生命周期的。 最直观的感受就是省去了频繁new的过程,节省了资源的开销。 二、Bean的使用 1、创建Bean 在【gateway/app/Http/Controller】下新建一个名为…

7.vue学习笔记(模板引用+组件组成+组件嵌套关系)

文章目录 1.模板引用2.组件组成3.组件嵌套关系3.1.App.vue3.1.1.Header.vue3.1.2.Main.vue3.1.3.Aside.vue 1.模板引用 在Vue直接读取DOM 虽然Vue的声明性渲染模型为你抽象了大部分对DOM的直接操作(事件,内容,属性), …

持久双向通信网络协议-WebSocket-入门案例实现demo

1 介绍 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输。 HTTP协议和WebSocket协议对比: HTTP是短连接&#xff0…

【MATLAB】小波_LSTM神经网络时序预测算法

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 小波-LSTM神经网络时序预测算法是一种结合了小波变换和长短期记忆神经网络(LSTM)的时间序列预测方法。 小波变换是一种信号处理方法,能够将信号分解为…

<蓝桥杯软件赛>零基础备赛20周--第14周--BFS

报名明年4月蓝桥杯软件赛的同学们,如果你是大一零基础,目前懵懂中,不知该怎么办,可以看看本博客系列:备赛20周合集 20周的完整安排请点击:20周计划 每周发1个博客,共20周。 在QQ群上交流答疑&am…

NowinAndroid—2024 Android现代开发全功能应用

NowinAndroid—2024 Android现代开发全功能应用 现代Android开发全功能示例应用Now-in-Android,它是用Kotlin和Jetpack Compose开发的,功能非常强大。这个应用遵循了安卓设计和开发的最佳方法,旨在给开发者提供实用的参考资料。无论你是新手…

2024年甘肃省职业院校技能大赛信息安全管理与评估 样题一 模块一

竞赛需要完成三个阶段的任务,分别完成三个模块,总分共计 1000分。三个模块内容和分值分别是: 1.第一阶段:模块一 网络平台搭建与设备安全防护(180 分钟,300 分)。 2.第二阶段:模块二…

002 Golang-channel-practice

第二题: 创建一个生产器和接收器,再建立一个无缓冲的channel。生产器负责把数据放进管道里,接收器负责把管道里面的数据打印出来。这里我们开5个协程把数据打印出来。 直接上代码! package mainimport ("fmt" )func …

“人工智能”领域的高含金量证书接受报名!

由国家工信部权威认证的人工智能证书是跨入人工智能行业的敲门砖,随着人工智能技术的发展越来越成熟,相关的从业人员也会剧增,证书的考取难度也会变高。如果已经从事或者准备从事人工智能行业的人员,对于考证宜早不宜迟&#xff0…

作业--day43

使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数,将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c…

git常用命令及概念对比

查看日志 git config --list 查看git的配置 git status 查看暂存区和工作区的变化内容(查看工作区和暂存区有哪些修改) git log 查看当前分支的commit 记录 git log -p commitID详细查看commitID的具体内容 git log -L :funcName:fileName 查看file…

Springboot注解@EnableConfigurationProperties和@ConfigurationProperties关系和作用

目录 EnableConfigurationProperties和ConfigurationProperties关系是什么? 简介 ConfigurationProperties EnableConfigurationProperties 二者之间的联系 总结 EnableConfigurationProperties和ConfigurationProperties关系是什么? 其实我能明白…