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

news2025/1/7 22:17:08

一、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.coloradmin.cn/o/2272247.html

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

相关文章

C语言:调试的概念和调试器的选择

所谓调试(Dubug),就是跟踪程序的运行过程,从而发现程序的逻辑错误(思路错误),或者隐藏的缺陷(Bug)。 在调试的过程中,我们可以监控程序的每一个细节&#xff…

30分钟搭建 Typecho 个人博客教程

Typecho是一款PHP博客程序,相比于WordPress,Typecho显得更加的轻量级和简洁。现在越来越多的人倾向于用Typecho来搭建个人博客——众所周知,能跑WordPress的机器都不便宜。 Typecho是一款国人团结打造的开源博客系统,和WordPress…

【软考网工笔记】计算机基础理论与安全——网络安全

病毒 Melissa 宏病毒 1. 是一种快速传播的能够感染那些使用MS Word 97 和MS Office 2000 的计算机宏病毒。 2. 前面有**Macro** 表示这是宏病毒; 3. 宏病毒可以感染后缀为.xls的文件;Worm 蠕虫病毒 1. 通常是通过网络或者系统漏洞进行传播。 2. 利用信…

数字图像处理 三 空间滤波

空间滤波是一种图像处理技术,它通过对图像像素及其邻域进行运算,利用均值,高斯,梯度,拉普拉斯等线性滤波和中值,最大最小,双边滤波等非线性滤波改变像素值,实现图像的平滑&#xff0…

记录一次电脑被入侵用来挖矿的过程(Trojan、Miner、Hack、turminoob)

文章目录 0、总结1、背景2、端倪3、有个微软的系统更新,就想着更新看看(能否冲掉问题)4、更新没成功,自动重启电脑5、风险文件(好家伙命名还挺规范,一看名字就知道出问题了)6、开机有一些注册表…

ES-深度分页问题

ES分页查询基本语法 # 分页 GET /hotel/_search {"query": {"match_all": {}},"sort": [{"price": "asc"}],"from": 0,"size": 10 }上面是ES查询hotel这个索引库的语句,其中做了分页查询&a…

弹性云服务器ECS“规格”

规格详细资料:规格清单(x86)_弹性云服务器 ECS_华为云 通用计算型 各规格详细介绍请参见通用计算型。 规格名称 计算 磁盘类型 网络 通用计算型X1 CPU/内存配比:自定义vCPU数量范围:1-16处理器:第三…

connect to host github.com port 22: Connection timed out 的解决方法

原因是 Github 被 GFW 屏蔽了。 Windows 系统,打开 C:\Windows\System32\drivers\etc,复制其中的 hosts 文件至桌面,用文本编辑器或者其他工具打开。 复制以下内容进去: 140.82.114.4 github.com 151.101.1.6 github.global.ss…

22408操作系统期末速成/复习(考研0基础上手)

第一部分:计算题: 考察范围:(标红的是重点考) 第一章:CPU利用率: 第二章: 进程调度算法(需要注意不同调度算法的优先级和题目中给出的是否可以抢占【分为可抢占和不可抢占&#xff…

html本地字符串处理工具|去重、分割、求交集、求并集

源代码&#xff08;保存到本地文件命名为 xxx.html&#xff0c;用浏览器打开该文件即可使用&#xff09; <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>数据处理</title><style>inpu…

基于Python的考研学习系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

计算机网络 —— 网络编程(TCP)

计算机网络 —— 网络编程&#xff08;TCP&#xff09; TCP和UDP的区别TCP (Transmission Control Protocol)UDP (User Datagram Protocol) 前期准备listen &#xff08;服务端&#xff09;函数原型返回值使用示例注意事项 accpect &#xff08;服务端&#xff09;函数原型返回…

Vue 项目自动化部署:Coding + Jenkins + Nginx 实践分享

前言 本文详细记录如何使用 Coding (以 Jenkinsfile 为核心) 和 Nginx 部署 Vue 项目&#xff0c;包含完整流程、配置细节及注意事项&#xff0c;为开发者提供一个高效的实践参考。 准备工作 这里借用一个优秀的开源项目做演示&#xff1a;芋道源码/yudao-ui-admin-vue2。 以…

Mysql运维利器之备份恢复-xtrabackup 安装

1、插件下载 xtrabackup 下载地址 找到自己mysql版本对应得 插件版本下载 2、执行安装命令 yum localinstall percona-xtrabackup-80-8.0.26-18.1.el7.x86_64.rpm 安装完毕&#xff01;查看版本信息 xtrabackup --version 安装完毕&#xff01;&#xff01;&#xff01;

【JAVA】神经网络的基本结构和前向传播算法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…

ip属地的信息准确吗?ip归属地不准确怎么办

在数字化时代&#xff0c;IP属地信息成为了我们日常生活中不可或缺的一部分。在各大社交媒体平台上&#xff0c;IP属地信息都扮演着重要的角色。然而&#xff0c;随着技术的不断进步和网络的复杂性增加&#xff0c;IP属地信息的准确性问题也日益凸显。那么&#xff0c;IP属地信…

Flask----前后端不分离-登录

文章目录 扩展模块flask-wtf 的简单使用定义用户数据模型flask-login完成用户登录 扩展模块 flask-sqlalchmy&#xff0c;连接数据库flask-login&#xff0c;处理用户的登录&#xff0c;认证flask-session&#xff0c;会话保持&#xff0c;默认对用户数据加密&#xff0c;存储…

[读书日志]从零开始学习Chisel 第一篇:书籍介绍,Scala与Chisel概述,Scala安装运行(敏捷硬件开发语言Chisel与数字系统设计)

简介&#xff1a;从20世纪90年代开始&#xff0c;利用硬件描述语言和综合技术设计实现复杂数字系统的方法已经在集成电路设计领域得到普及。随着集成电路集成度的不断提高&#xff0c;传统硬件描述语言和设计方法的开发效率低下的问题越来越明显。近年来逐渐崭露头角的敏捷化设…

计算机网络掩码、最小地址、最大地址计算、IP地址个数

一、必备知识 1.无分类地址IPV4地址网络前缀主机号 2.每个IPV4地址由32位二进制数组成 3. /15这个地址表示网络前缀有15位&#xff0c;那么主机号32-1517位。 4.IP地址的个数&#xff1a;2**n (n表示主机号的位数) 5.可用&#xff08;可分配&#xff09;IP地址个数&#x…

【阅读笔记】基于FPGA的红外图像二阶牛顿插值算法的实现

图像缩放技术在图像显示、传输、分析等多个领域中扮演着重要角色。随着数字图像处理技术的发展&#xff0c;对图像缩放质量的要求也越来越高。二阶牛顿插值因其在处理图像时能够较好地保持边缘特征和减少细节模糊&#xff0c;成为了图像缩放中的一个研究热点。 一、 二阶牛顿插…