【可实战】Bug的判定标准、分类、优先级、定位方法、提交Bug(包含常见面试题)

一、Bug相关概念

(一)bug判定标准

在这里插入图片描述

(二)常见 Bug 分类

在这里插入图片描述

(三)bug优先级

在这里插入图片描述

1.bug严重程度与优先级的关系

在这里插入图片描述

  • 有些很严重的Bug,只在极端的条件下才出现,用户碰到的概率很低,这种情况优先级就没那么高

  • 有些不是很严重的Bug, 比如界面类的,拼写错误,但如果是公司名称,产品名称拼写错了,虽然不是很严重,但优先级就很高,需要立即处理

二、Bug 定位方法

(一)为什么需要掌握 Bug 定位

  • 提交 Bug 时候追加更多有用信息,方便研发更快的解决问题
  • 分析 Bug 形成原因,进行溯源并建立特征进行批量追踪

(二)Bug从技术层次分析

1.Bug 展现层

条件:测试数据
过程:测试步骤
结果:测试结果
在这里插入图片描述

2.技术架构层次

视图层 View:

Web UI html css
App activity view

控制器层 Controller:

Web:chrome、devtool
App:dalvik art objectc-runtime

模型层 Model:

模型的传递方式 http tcp rpc 串口
模型的形式 json xml binary
模型定义 schema
在这里插入图片描述

3.MVC 三层分析方法

View 层:运行平台、应用调试机制、链路分析
Controller 层:运行平台、应用调试机制、链路分析
Model 层:运行平台、应用调试机制、链路分析

(1)View 层常用分析方法

UI【用户界面】 人工测试 自动化测试
UE【用户体验】 人工测试(主) 自动化测试(辅)
UI Diff 自动化分析

(2)Controller 层常用分析方法

运行平台日志:log
应用调试日志:debug trace hook profile

(3)Model 层常用分析方法

运行平台 log
app 调试机制
链路分析:代理抓包 嗅探抓包

(三)Web Bug分析方法

1.Web UI View 层 Bug 分析方法

主要依赖于 html css js
可以使用 chrome 开发者工具【F12】 elements 与 style
在这里插入图片描述
在这里插入图片描述

2.Web Controller 层分析方法

console 可以了解 js 的输出与报错信息
source 模块可以对 js 进行 debug
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.Web Model 层分析方法-分析数据传递方式与结构

运行平台 log

  • chrome network
    链路分析
  • 代理 proxy: fiddler charles mitmproxy
  • 网络层协议 network: tcpdump wireshark
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

(四)App Bug分析方法

1.App View 层 Bug 分析

UI 界面交互
UX/UE 用户体验
UI Diff:uiautomator dump
在这里插入图片描述
在这里插入图片描述

2.App Controller 层分析

通过 logcat 分析 app runtime 日志
在这里插入图片描述
在这里插入图片描述

3.App Model 层分析方法

运行平台 log
应用:应用日志
链路分析:

  • 代理抓包:charles fiddler mitmproxy
  • 嗅探抓包:wireshark tcpdump

4.Andorid Profiler 网络分析

在这里插入图片描述

5.使用代理工具分析

在这里插入图片描述

6.网络协议层分析

在这里插入图片描述
在这里插入图片描述

(五)性能Bug分析方法

1.H5 性能分析方法

在这里插入图片描述

2.利用 Chrome 分析 Web 性能

在这里插入图片描述

3.分析性能瓶颈 使用 Profile 进行代码剖析

在这里插入图片描述

4.代码覆盖率分析方法

在这里插入图片描述
在这里插入图片描述

(六)总结

  • 明确 Bug 问题的现象与复现步骤
  • 分层分析关键过程的数据与问题特征
  • 积累 Bug 特征与问题根源特征,丰富测试经验,提高 Bug发现的能力

三、提交Bug

在这里插入图片描述

四、经典面试题

(一)如果开发认为你提交的bug不是一个Bug,怎么办?

(考察对bug是否有判断,以及在工作中的软实力:处理问题解决问题的思路)

在什么情况下开发会认为你提交的bug不是一个bug呢?

1.测试人员对bug描述不清楚,比如复现步骤描述不清楚,或者bug概述没描述好,开发没看懂,所以就认为提交的bug不是一个Bug——解决办法是:提高测试人员编写bug报告的能力,复现步骤要清晰,无歧义。提交的bug有截图,录屏,或者日志信息

2.提交的bug并不是每次都出现,是偶现的。——解决思路是先提交bug(标成偶现),重要的截图,日志信息要保留下来,后续再关注这个问题,如果再次触发这个bug, 再提交更多的日志信息,帮助开发定位解决。

3.有争议性的Bug,比如建议类的(美观性的问题,易用性问题,与竞品比较觉得不太好的地方)——解决思路:可以先把自己建议类的bug提上去,然后跟产品,开发讨论,说出自己的理由,把自己的理由,建议说清楚。至于是否要改,就听上一级决定

4.功能性Bug, bug出现的原因可能是开发跟测试对需求的理解不一致。有可能是开发理解错需求了。——解决思路:把需求文档对应的说明给开发看。

(二)怎么判断一个bug到底是前端的bug还是后端的bug?

判断一个bug是前端还是后端的bug通常需要以下几个步骤:

1.复现bug的过程:首先需要详细记录或复现bug的具体步骤和条件,包括在何种情况下出现bug,具体的操作流程等。

重现现场:在处理bug时,重现bug是非常重要的。如果问题可以通过重新执行特定操作或复现特定场景而重现,那么可能是前台bug。如果问题出现在某个特定请求或特定数据条件下,那么很可能是后台bug。

2.查看错误信息:查看控制台输出、日志或错误信息,确定bug发生的具体位置以及错误提示内容,从而判断是前端代码出错还是后端代码出错。

错误日志:查看错误日志是判断bug类型的有用方法。前台bug通常会生成前台错误日志,如前端开发工具(如Chrome浏览器)的控制台输出。后台bug则会在服务器端生成错误日志,例如在服务器日志文件中或开发框架提供的调试工具中查看错误日志。通过查看错误日志,可以确定bug出现的位置和相应的修复方法。

3.网络请求和响应分析:检查网络请求和响应,查看前端与后端的数据传递是否正常,在哪一步出现了异常现象。

调试和测试:在开发过程中,可以通过调试和测试来判断bug类型。使用开发工具的调试功能可以帮助定位前台bug,如在浏览器的开发者工具中断点调试JavaScript代码。对于后台bug,可以编写单元测试或集成测试用例来验证后台功能和逻辑,以确定问题是否出现在后台。

4.根据表现特征判断:根据bug的表现特征来判断。比如,如果是页面显示异常、交互功能问题,可能是前端bug;如果是数据请求失败、数据错误等,可能是后端bug。

前后台交互:首先需要检查bug是否与前后台的交互有关。前台指的是用户可见的界面以及用户的操作,后台指的是服务器端的处理和数据操作。如果问题出现在用户界面或用户操作时,很可能是前台bug。如果问题出现在服务器端的数据处理、数据传输或服务器配置方面,很可能是后台bug。

5.协作与通信:前端和后端开发人员之间进行有效的协作和沟通,共同分析bug的根本原因,找出解决方案。

需要注意的是,有些问题可能涉及前后台交互的复杂性和互相依赖性,可能需要综合多个因素才能做出正确的判断。在解决bug时,团队合作和跨部门协调也是非常重要的,以确保及时修复问题并改进软件质量。

6.修改并测试:根据初步的判断,前端和后端各自修改代码,并在本地测试,确认修复后bug是否得以解决。

7.集成测试:在修复后,前端和后端一同进行集成测试,确认问题是否彻底解决。

通过以上步骤,可以较为准确地判断一个bug是前端还是后端的bug,并采取相应的措施解决问题。同时,建议开发人员之间保持密切的沟通,协作解决bug,提高团队的效率和开发质量。希望对您有帮助!

(三)项目上线后发现bug,测试人员应该怎么办?

通常,如果线上出现bug,用户会通过业务方反馈到项目组这边,项目经理会根据功能模块的负责人,分给对应的开发与测试。

作为测试人员,遇到此类情形先不要慌,我们可以这样处理:

(1)首先,评估bug严重级别

如果严重,则申请紧急变更上线;如果不严重,申请等bug修复好后跟下个版本一起上线。

(2)然后,积极推动解决bug

编写对应的测试用例,在测试环境中重现和定位bug,提交bug交给开发进行修复,完成后进行bug的复测。如果测试环境无法重现,可以导入生产环境的包到测试环境中测试。如果还是不能复现,可以尝试查看生产环境的日志去定位问题。

(3)最后,复盘总结

分析bug产生的深层原因,查漏补缺,总结经验教训,避免后续出现同类问题。

如何做好复盘总结,参见下方面试题(四)

(四)线上问题如何复盘?

从这几个角度去回答:

1.复盘频率,多久复盘一次(when)
2.复盘会参与成员(who)
3.如何复盘(how)

复盘频率

频率通常都是跟着版本周期走的,比如一个版本测完上线,基本在稳定之后,下个版本开始测试之前,一个team,都能抽出来2个小时的时间去开。定期复盘非常重要,一定要有一定的频率。不能偶尔只做几次,一定要有节奏。

参与成员

  • 至少要包含相关功能的所有测试人员
  • 如果复盘出结果,需要其他团队参与的,一定要落地到位。所谓落地到位就是:
    1.是否通知
    2.对方反馈
    3.最终是否实施。

举个例子,如果在复盘过程中发现是因为研发随意提测,导致测试效率下降,那么就要拉项目经理或测试的老大。

1.向对方提出问题
2.磋商一个解决方案,比如制定提测规则
3.要求研发团队按照规范行事。

如何复盘

一般复盘会去复盘问题问题也有基本方法论,有一个方法叫做5why法,有两个基本原则:

1.刨根问到底
2.对事不对人

比如线上出现了生产事故,这是问题的思考路径:

1.生成事故是由什么问题导致的?
2.这个问题测试时为什么没有发现?
3.假设是因为测试漏测,为什么会出现漏测?
4.假设是因为没有考虑到这个场景,就要考虑是否还有同类型的场景,并补充测试用例。

在提出问题和解决方案之后,有一个很重要的步骤就是落地。把问题形成一个闭环。才能避免下次问题再次出现。

总结

面试碰到这个问题,心里一定要有大概思路不要想到什么说什么。重点在于方式方法,不要过分纠结于细节。把从问题的发现、提出,到如何规避。要有一套完善的体系,能尽量确保问题不再出现

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

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

相关文章

SpringBoot之核心配置

学习目标: 1.熟悉Spring Boot全局配置文件的使用 2.掌握Spring Boot配置文件属性值注入 3.熟悉Spring Boot自定义配置 4.掌握Profile多环境配置 5.了解随机值设置以及参数间引用 1.全局配置文件 Spring Boot使用 application.properties 或者application.yaml 的文…

GitLab创建用户,设置访问SSH Key

继上一篇 Linux Red Hat 7.9 Server安装GitLab-CSDN博客 安装好gitlab,启用管理员root账号后,开始创建用户账户 1、创建用户账户 进入管理后台页面 点击 New User 输入用户名、邮箱等必填信息和登录密码 密码最小的8位,不然会不通过 拉到…

1688平台商品关键词搜索的多样性与Python爬虫应用实践

在当今这个信息化、数字化飞速发展的时代,电子商务平台已经成为人们日常生活中不可或缺的一部分。而1688作为国内知名的B2B电商平台,凭借其庞大的商品种类和丰富的供应链资源,为无数商家和消费者提供了便捷的交易渠道。除了广受关注的女装品类…

为深度学习引入张量

为深度学习引入张量 什么是张量? 神经网络中的输入、输出和转换都是使用张量表示的,因此,神经网络编程大量使用张量。 张量是神经网络使用的主要数据结构。 张量的概念是其他更具体概念的数学概括。让我们看看一些张量的具体实例。 张量…

点击底部的 tabBar 属于 wx.switchTab 跳转方式,目标页面的 onLoad 不会触发(除非是第一次加载)

文章目录 1. tabBar 的跳转方式2. tabBar 跳转的特点3. 你的配置分析4. 生命周期触发情况5. 总结 很多人不明白什么是第一次加载,两种情况讨论,第一种情况假设我是开发者,第一次加载就是指点击微信开发者工具上边的编译按钮,每点击…

Tauri教程-基础篇-第二节 Tauri的核心概念上篇

“如果结果不如你所愿,就在尘埃落定前奋力一搏。”——《夏目友人帐》 “有些事不是看到了希望才去坚持,而是因为坚持才会看到希望。”——《十宗罪》 “维持现状意味着空耗你的努力和生命。”——纪伯伦 Tauri 技术教程 * 第四章 Tauri的基础教程 第二节…

Sql 创建用户

Sql server 创建用户 Sql server 创建用户SQL MI 创建用户修改其他用户密码 Sql server 创建用户 在对应的数据库执行,该用户得到该库的所有权限 test.database.chinacloudapi.cn DB–01 DB–02 创建服务器登录用户 CREATE LOGIN test WITH PASSWORD zDgXI7rsafkak…

Ubuntu 20.04安装gcc

一、安装GCC 1.更新包列表 user596785154:~$ sudo apt update2.安装gcc user596785154:~$ sudo apt install gcc3.验证安装 user596785154:~$ gcc --version二 编译C文件 1.新建workspace文件夹 user596785154:~$ mkdir workspace2.进入workspace文件夹 user596785154:~…

计算机网络 (23)IP层转发分组的过程

一、IP层的基本功能 IP层(Internet Protocol Layer)是网络通信模型中的关键层,属于OSI模型的第三层,即网络层。它负责在不同网络之间传输数据包,实现网络间的互联。IP层的主要功能包括寻址、路由、分段和重组、错误检测…

国产游戏崛起,燕云十六移动端1.9上线,ToDesk云电脑先开玩

游戏爱好者的利好消息出新了!网易大型武侠仙游《燕云十六声》正式官宣,移动端要在1月9日正式上线了!你期待手游版的燕云吗?不妨评论区留言说说你的看法。小编分别花了几个小时在台式机电脑和手机上都试了下,欣赏画面还…

【HarmonyOS NEXT】鸿蒙应用实现屏幕录制详解和源码

【HarmonyOS NEXT】鸿蒙应用实现屏幕录制详解和源码 一、前言 官方文档关于屏幕录制的API和示例介绍获取简单和突兀。使用起来会让上手程度变高。所以特意开篇文章,讲解屏幕录制的使用。官方文档参见:使用AVScreenCaptureRecorder录屏写文件(ArkTS) 二…

java mail 535 Login Fail. Please enter your authorization code to login

报错信息提示查看 https://service.mail.qq.com/detail/0/53 帮助页面意思就是说你要使用授权码登录, 但是授权码我已经正确的设置上去了 后面从 QQ邮箱出现错误 Please enter your authorization code to_邮件群发-双翼邮件群发软件官方网 看到 账户 需要是 QQ号 例如…

怎样修改el-table主题样式

起因:el-table有主题样式,部分需要单独设置 环境:ideanodejs插件谷歌浏览器 第一步:找到scss文件: 谷歌浏览器打开表格页面,ctrlshifti打开开发者工具,点击后鼠标移动到表格单元格上单击一下…

记录一次面试中被问到的问题 (HR面)

文章目录 一、你对公司的了解多少二、为什么对这个岗位感兴趣三、不能说的离职原因四、离职原因高情商回复五、你的核心优势是什么六、你认为你比其他面试候选人的优势是什么七、不要提及情感 一、你对公司的了解多少 准备要点: 在面试前,对公司进行充分…

从零开始:使用VSCode搭建Python数据科学开发环境

引言 在数据科学领域,一个高效、稳定的开发环境是成功的关键。本文将详细介绍如何使用Visual Studio Code搭建一个完整的Python数据科学开发环境。通过本指南,您将学会: 安装和配置VSCode,包括基本设置和快捷键配置设置Python开…

【C++习题】20. 两个数组的交集

题目:349. 两个数组的交集 - 力扣(LeetCode) 链接🔗:349. 两个数组的交集 - 力扣(LeetCode) 题目: 代码: class Solution { public:// 函数功能:求两个数组…

【深度学习】深度(Deep Learning)学习基础

深度学习(Deep Learning) 深度学习是一种基于人工神经网络的机器学习方法,通过多个层次(深度)的神经网络从数据中自动学习特征和模式。它是人工智能的一个核心领域,尤其在处理复杂数据(如图像、…

【MySQL 保姆级教学】用户管理和数据库权限(16)

数据库账户管理是指对数据库用户进行创建、修改和删除等操作,以控制用户对数据库的访问权限。通过账户管理,可以设置用户名、密码、主机地址等信息,确保数据库的安全性和可控性。例如,使用 CREATE USER 创建用户,ALTER…

STM32+WIFI获取网络时间+8位数码管显示+0.96OLED显

资料下载地址:STM32WIFI获取网络时间8位数码管显示0.96OLED 1、项目介绍 主控芯片STM32C8T6 接线:串口1:PA9 PA10 OELD :PB6 PB7 数码管使用:MAX7219 8位数码管 Max7219_pinCLK PAout(5) Max7219_pinC…

决定系数(R²分数)——评估回归模型性能的一个指标

目录 1.定义 2.计算举例 3. 结果分析 1.定义 R(R平方)分数,也称为决定系数,是用来评估回归模型性能的一个指标。它表示自变量解释因变量变异性的比例。R分数的取值范围通常在0到1之间,其值越接近1,说明…