前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >测试人!当遇到bug该怎么分析,字节5年老司机是这么秀操作的...

测试人!当遇到bug该怎么分析,字节5年老司机是这么秀操作的...

作者头像
伤心的辣条
发布于 2022-09-08 07:33:34
发布于 2022-09-08 07:33:34
7480
举报
文章被收录于专栏:伤心的辣条伤心的辣条

作者:伤心的辣条

主要分享测试的学习资源,帮助快速了解测试行业,帮助想转行、进阶、小白成长为高级测试工程师。

有很多测试新手小白因为没有经验,遇到了bug就立马慌了,不知道该从何下手。

本文就给大家详细说说作为一名测试老鸟遇到线上bug,是如何应对的。

定位问题很重要

1.可以明确一个问题是不是真的“bug”

2.很多时候,我们找到了问题的原因,结果发现这根本不是bug。原因明确,误报就会降低

3.多个系统交互,可以明确指出是哪个系统的缺陷,防止“踢皮球”,提高问题解决的效率

4.增强开发对测试的信任度,沟通更有效,配合的更好,开发修改bug时效增强

5.更有效的了解系统的内部逻辑、数据流处理流程,更能提高测试人员的水平,缺陷修复后,影响的测试范围评估更精准,复测更准确

6.可以降低缺陷率

这个可以说是最重要的。在bug系统中,会要求开发人员记录bug产生的原因。只有我们自己对bug有一个较全面的认识,才会判别出开发写的是不是真正的原因,也才能有助于我们后续对bug进行分析归类,根据bug分析,有针对性地未雨绸缪,进而提升产品质量,降低缺陷

01、定位原因之前

遇到问题时,先别急着去定位原因。

1、保存bug产生的记录:

首要做的是保存bug产生的记录,保证可以复现。

为什么要保存记录?因为如果以后不能复现,那就不能证明bug的存在。

2、排除低级问题:

然后是排除QA的低级问题,常见的低级问题:

【hosts不对】

hosts文件主要是加快某个域名或者网站的解析速度,从而达到快速访问的作用,也可以屏蔽网站。

hosts异常可能会导致部分网页无法访问,能够加载,但是网页无法正常显示。

【网络不通】:抓包、ping

工具的影响导致的,例如fiddler

以及操作姿势不正确等。

3、排除数据问题(脏数据):

有时候会遇到服务端报500错误,查看日志后,报空指针,那么很有可能就是数据库中关联表的数据被人为删掉导致的。

脏数据:从目标中取出的数据已经过期、错误或者没有意义,这种数据就叫做脏数据

脏读:读取出来脏数据就叫脏读

02、定位问题的思路

排查顺序:

用户环境层面 -> 展示层面 -> 逻辑控制层面 -> 服务层面 -> 数据库层面

1、用户环境层面

主要是指基础环境是否可以使用。比如:

网络是否ping通

ip和端口配置是否正确

jdk版本是否符合标准

有可能是由于jdk版本不兼容导致系统运行异常,这种问题根据实际情况来决定要不要兼容。

网络设了代理

弱网(如js/css未加载完全、请求超时)

浏览器不支持

系统版本不支持

数据库被删除

测试环境脏数据

项目配置开关

测试环境切了分支等

检查完成后,可以转到第二步

2、用户展示层

用户在使用过程中,通过查看等操作发现的一些问题:

页面样式(css样式问题)

交互过程中js的提示(js交互问题)

终端控制的提示信息

文本的展示(html文本问题)

3、逻辑控制层

用户操作过程中,业务的处理逻辑有没有按照前期的设计实施。或者中间环节出现异常,比如缓存服务器(如redis)、消息中间件(如rabbitMQ)、数据存取中间件等。

4、服务层

服务层往往检查服务器的配置,如可能是tomcat配置、nginx配置、jdbc配置等的问题。测试人员最好能够了解下它们的各项配置。

5、数据库层

可能出现测试环境和正式环境数据库版本不同,前后端数据格式、长度限制不同。用户操作完成后,交易流程非常顺畅,这样也不代表整个交易没有问题,还需要测试人员检查数据库登记的表和字段是否正确

如果发现登记的字段与预期的结果不一致,则可以查看日志,检查请求报文送的字段是否正确,是否与前台填写的一致

有的一个操作会登记多张表,所以要检查多张表登记或者更新的是否正确,测试人员也需要对被测系统的数据表结构熟悉

6、经验法则

有经验的测试人员对于有部分bug已经见过多次,能够很快找到根源,直奔主题,迅速报告或者解决bug

7、其他

常见的bug可能还有构建方面的原因

比如代码本身没错,但是合并代码到主干后出现了问题

比如代码存在冲突时手动解决的情况

03、定位问题的方法

1、常用的定位策略:

常用的定位策略分为三类:原始类(brute force)、回溯类(backtracking)、排除类(causeeliminations)

原始类定位方法

原始类定位方法是最常用也是最低效的方法,只有在万般无奈的情况下才使用它,主要思想是“通过计算机找错”。

回溯法

回溯法能成功地用于程序的排错

方法是从出现bug征兆处开始,人工地沿控制流程往回追踪,直至发现出错的根源,不幸的是程序变大后,可能的回溯路线显著增加,以致人工进行完全回溯到望而不可及。

排除法

基于归纳和演绎原理,采用“分治”的概念。

首先确定所有与bug出现有关的所有数据,设想一个导致bug的原因,用这些数据证明或反驳它。或者一次列出所有可能的原因,通过测试一一排除。只要某次测试结果说明某种假设已呈现倪端,则立即精化数据,乘胜追击

2、查看状态码

4xx状态码:一般表示是客户端问题(当然也有可能是服务器端配置问题),比如:

发生了401,那么要看下是否带了正确的身份验证信息

发生了403则要看下是否有权限访问

404则要看下对应的URL是否真实存在

5xx状态码:一般表示服务端出现问题。比如:

发生了500错误,则表明是服务器内部错误,这个时候要配合服务器log进行定位

发生了502错误则可能是服务器挂了导致的问题

发生503错误可能是由于网络过载导致的问题

发生504错误则可能是程序执行时间过长导致超时

3、查看服务器日志

如果发生5xx问题,或者需要检查后端接口执行的sql是否正确,我们最常见的排查方法就是去看服务器日志,比如tomcat日志。开发人员一般会打出关键信息和报错信息,从而找到问题所在,所以,测试人员也要养成看日志的习惯。

4、检查配置

很多时候,bug不是代码的问题,而是tomcat配置、nginx配置、jdbc配置等的问题。在这个层面上,测试人员最好能够了解下它们的各项配置,在发现问题后可能就会想到这方面的问题。

5、查看需求文档

有时候,前端和服务端的交互都正确,但是从测试的角度看不合理。这个时候,我们应该翻翻需求文档。如果和需求文档不符,那么就要看下改什么比较合理,是改前端,还是改服务端,或者两者都要改。

这里有一个原则,就是前端尽可能少地去承担逻辑,只负责渲染展现。当然,不要以为需求文档就全部正确,它也可能会有错误,我们也应该去发现需求文档的bug,然后再去协调PM,敦促FE或者RD进行修改。

6、向开发寻求可测性支持

有时候,涉及到开发过程的一些测试,也需要开发提供可测性支持。

比如,要查看接口给另一个接口发的请求是否正确,可以让开发打印出完整的请求log,还有一些逻辑开关、修改页面数据条数等,都属于可测性支持的范畴。

04、bug定位常用工具

Firefox——firebug、web developer、live http - headers、http fox

IE插件——httpwatch

第三方工具——fiddler

慢速网模拟工具——firefox throttle

05、如何区分前端/后端bug

为什么要区分前端/后端BUG?

如果是一个多人开发的系统,不能明确定位到这个bug是谁造成的,容易提交给错误的开发人员。

同时提交给前后端开发人员,每个人都会有依赖心理,bug会像皮球一样被开发踢来踢去,耽误开发解决bug的时间。

另外,如果团队规模较大,或者由各地的项目组拼凑而成,势必会增加沟通成本,这更需要我们在类似禅道或者Jira等项目管理软件中提交bug时,先指明是谁的bug,避免互相踢皮球的现象。

所以测试必须要自己学会区分出是前端还是后端bug,经过bug分类处理,整个团队的效率都会有所提高。

前后端BUG各有什么样的特点?

1、利用抓包工具来进行分析

一般有httpwatch,firebug,fiddler,charles等抓包(数据包)工具。

httpwatch,firebug都是浏览器的插件,需要额外下载

fiddler,charles也需要额外下载安装包另行安装

还有一个简单实用的抓包工具,那就是浏览器的F12调试器

2、定位前端的bug

前端的bug通常是功能、界面和兼容性等有关,涉及到jstl,jsp,js,css,html方面比较多。bug主要有两块:

JS相关

页面

3、定位后端的bug

后台涉及到servlet,jms,ejb,还有很多框架struts,hibernate,spring,ibatis等

bug 比较难改,但是好找,主要就是看控制台报错,然后定位错误行号。如果配置文件没有问题,那么一般的报错就是空指针,或者是数组下标越界。看附近变量,看方法的参数基本上都可以定位错误。

06、定位完问题后

在发现问题或者定位到问题原因后,一定要进行一步,就是再次确认问题。所谓确认问题,就是弄清楚问题是否每次都发生,还是概率事件,或者是工具相关的问题:

比如换个浏览器是否依然出现?如果换个浏览器不出现的话,很可能就是前端的兼容性问题。

比如翻页控件,待测的系统有很多页面都有翻页控件,那么就要看下是否每个页面都会出现这个问题,进而报bug时进行统一说明,也更加方便开发人员批量处理,防止漏改。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 伤心的辣条 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
面试必问:如何快速定位BUG?BUG定位技巧及N板斧!
很多测试人员可能会说,我的职责就是找到bug,至于找原因并修复,那是开发的事情,关我什么事?
测试开发技术
2022/12/27
2.1K0
面试必问:如何快速定位BUG?BUG定位技巧及N板斧!
测试人员怎样定位bug原因
作为测试人员,和我们最常打交道的,莫属bug。当你发现bug后,会采取什么样的行动?是直接报出来,亦或找找问题原因?
测试开发社区
2020/08/27
2.2K0
定位bug的思路
做测试这一行,总有一道绕不过去的坎就是定位bug,这其实是非常花费时间的。也许有很多人不以为然,觉得无非就是发现bug后提交bug管理系统,描述操作步骤,预期结果和实际结果哪里不一致,然后继续测试。并不是说这样做的不对,只是说这样做的不够好,看似节约了测试时间,实则对于项目的进度没有起到应有的推动作用。学会定位原因也是自我提升的一个过程
Meccer
2021/03/23
7650
软件测试如何定位分析bug?
软件测试日常工作中,每天可能都会遇到不同的问题和bug,有些刚入行的测试喜欢不加分析就直接甩给开发去解决。
测试小牛
2022/04/25
1.2K2
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(2)-初识Fiddler让你理性认识一下
  今天的理性认识主要就是讲解和分享Fiddler的一些理论基础知识。其实这部分也没有什么,主要是给小伙伴或者童鞋们讲一些实际工作中的场景,然后隆重推出我们的猪脚(主角)-Fiddler。
北京-宏哥
2022/08/19
1.7K0
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(2)-初识Fiddler让你理性认识一下
这到底是前端还是后端Bug
QA(我):这个页面打开白屏了,前端开发你看下,抓紧给我改(做测试就是要硬气一点)
Bug挖掘机
2022/09/28
1.2K0
这到底是前端还是后端Bug
从业2年,我被一个女前端鄙视了!
"我朋友做测试基本条件跟你差不多,但是平时跟我聊到她懂得帮助开发定位问题,协助开发解决相关bug,现在薪资比你高多了,玩笑了玩笑了,不要在意!"
测试小兵
2023/03/03
2250
从业2年,我被一个女前端鄙视了!
开发:"你会不会提BUG , 责任人都指派错了!"
昨晚熬夜通宵码字,今天给大家分享如何定位分析BUG的方法与技巧,估计这篇文章之后得等一段时间才能进行更新了,最近2个项目并行版本都是月底上线,且读且珍惜
测试小兵
2021/01/20
6680
开发:"你会不会提BUG , 责任人都指派错了!"
【测试面试】2022年软件测试面试题大全(精品带回答的)
软件测试 员是在项目的不同阶段一直从事着各种各样的测试,但是当需要测试所需技能状况时,却找不到一个合适的方法。
伤心的辣条
2022/12/14
3750
除了 Wireshark,这 10 款抓包神器让你效率翻倍!运维老司机都偷偷收藏
作为网工最为熟悉的肯定是Wireshark,它无疑是最耀眼的明星。但网络世界纷繁复杂,不同场景下往往需要更专精的工具。今天,阿祥就为大家盘点那些能与 Wireshark 并肩甚至在特定领域更胜一筹的抓包工具,帮助你成为网络诊断的多面手。
ICT系统集成阿祥
2025/03/24
1400
除了 Wireshark,这 10 款抓包神器让你效率翻倍!运维老司机都偷偷收藏
软件测试/测试开发|如何定位bug,一篇文章告诉你
在我们对软件进行测试时,遇见bug是无法避免的,但是我们如何对出现的bug进行定位呢?bug究竟是哪个原因引起的就是我们解决bug的关键所在了,本文就来介绍一下如何定位bug。
霍格沃兹测试开发Muller老师
2023/12/28
4770
把这10款网络抓包工具学会了,以后好到“川爷”那里打工!
在日常运维工作中,掌握网络抓包工具对于诊断网络问题、分析协议行为以及监控网络流量至关重要。
ICT系统集成阿祥
2024/12/03
1.2K0
把这10款网络抓包工具学会了,以后好到“川爷”那里打工!
测试工程师的面试基础题目
根据项目计划和开发人员的时候指定测试计划,包含测试内容、测试规划、测试环境、项目的任务和目的。
软件测试君
2023/09/14
2960
测试工程师的面试基础题目
内幕:阿里老测试员告诉你,新人如何做好功能测试,学会这几项
根据一份报告,应用程序崩溃导致71%的卸载。迫使用户卸载应用程序的其他原因是页面响应时间,混乱的UI,电池消耗等。这表明功能测试和非功能测试对于交付用户友好型应用程序的重要性。
憨憨默默成神
2021/10/12
4330
如何判断一个bug归属于前台还是后台?
  最近在测试的产品是一个类似于途牛的旅游网站,公司只有本人一个菜鸟测试,之前从未接触过测试相关。最近在提bug的时候,发现自己越来越容易纠结于一个bug到底是该分给前端还是后台。之前测试其他产品的时候,由于业务逻辑相对简单,bug也不多,也就很少留意到这个问题,但是现在手头的项目让我对于bug定位的问题再也无法忽略。遂查了一些资料,再加上自己的理解,输出了这篇文章,谨以记录以及相互的交流学习,如有不当之处,欢迎指出。
顾翔
2020/11/03
1K0
如何判断一个bug归属于前台还是后台?
面试题之接口测试
1、所谓接口测试就是通过测试不同情况下的入参与之相应的出参信息来判断接口是否符合或满足相应的功能性、安全性要求。
wangmcn
2022/07/26
5060
老谈酸菜接口测试
计算机世界里的接口这两个字具有两种众所周知的含义:其一是指软件本身的狭义“接口”,比如各种软件开发API等。其二则指的是人与软件之间的交互界面。
测试小兵
2019/07/22
6700
老谈酸菜接口测试
测试过程中如何快速定位一个bug
作为测试人员,和我们最常打交道的,莫属bug。但是测试不只是负责发现问题,除了发现问题这种基本功外,定位问题,提出解决方案,提出预防方案也是要掌握的技能。
用户7880705
2020/12/02
5440
面试题之软件测试基础
一般情况下有输入框的时候会考虑用到等价类;当出现最大最小、最轻最重字眼的时候会用到边界值来考虑测试点;当出现业务流程的时候会考虑场景法和流程分析法。
wangmcn
2022/07/26
8910
接口测试面试题
GET请求:用于信息获取,相对而言是安全和幂等的;在做数据查询时,建议用GET方式,如:商品信息接口、搜索接口、博客访客接口...
找Bug
2022/07/22
1.2K0
推荐阅读
相关推荐
面试必问:如何快速定位BUG?BUG定位技巧及N板斧!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文