定位bug
软件测试阶段:单元测试,集成测试,系统测试,验收测试
测试人员参与的软件测试阶段一般来说只有集成测试和系统测试阶段。集成测试阶段主要测试的是接口;系统测试阶段主要是功能测试,兼容性测试等,涉及到定位bug的主要还是功能测试。
一、定位bug的原因
1、可以准确地知道,这个bug是前端的bug还是后端的bug
2、通过定位bug准确地分析bug造成的原因,可以减少开发的工作量,提高整个团队的工作效率
3、通过bug的深入了解,可以更加清楚软件的实现原理,方便于今后的提升
4、为之后成为测试开发,全栈做准备
二、什么时候需要去定位bug
当发现了bug之后才需要去定位bug
三、接口测试(后端bug)
明确一点,接口测试发现的bug100%全部都是后端的bug
首先做接口测试时一定要会看状态码,通过状态码来定位bug
1、200:接口200主要分为以下3种情况
① 查询数据类型的接口,返回的数据和数据库中的数据不匹配
- 出现原因:SQL语句写错了
- 提bug:提bug的时候可以把正确的SQL语句写出来告诉开发
② 操作功能型的接口,比如新增、修改、删除等,返回的结果不正确
- 出现原因:代码的逻辑判断不正确
- 场景再现:比如赞赞羊下架这个功能,明明操作是对的,但是系统一直提示任务不存在
- 提bug:我觉得应该是这个接口的逻辑判断没有写正确,请仔细检查
注意:下架功能不是删除,是修改,现在所有的软件公司,几乎都不会在代码里写delete语句(即使我们在页面上删除了什么东西,在数据库里看依然是存在的,通常大家都是把它和别的表关联起来,比如通过状态status=0为下架)——逻辑删除
delete语句是物理删除,它会把数据从数据库里删除
③ 输入的数据不符合要求,但是操作成功了
- 出现原因:开发没有做数据校验
- 场景再现:明明需求上要求了昵称只能输入10个字,但是我输入15个字也能成功;又如:赞赞羊提交任务发表任务的时候,截止的时间可以选择以前的时间;再如:电话号码输123456都没问题
- 提bug:请仔细检查输入数据的校验问题,请控制每一个字段的格式
2、40*
- 出现原因:当出现了40*开头的代码,不是bug,是我们自己操作的问题
3、50*
- 出现原因:当状态码为500,100%是bug,并且100%是开发的代码写的不正确,出现了运行错误,导致的
- 查bug思路:去看日志,找到bug出现的原因,可以详细的定位到开发哪个文件哪行代码出错了
接口测试测得是后端,后端在Linux上运行,所以要去Linux上查日志(找到项目log文件夹下的debug.log文件)
- 提bug:将错误日志截图出来,告诉开发是哪里的问题
一个开发写的代码经常报500错误的话,只能说明这个开发太菜了
四、功能测试(前后端都可能有bug)
明确一点,在系统测试阶段做功能测试的时候,发现的bug可能是前端的bug,也可能是后端的bug,首先做的第一件事就是去区分到底是前端得bug还是后端的bug,通过现在测试的功能是否使用接口来判断,如果和接口无关,百分百是前端的问题,和接口有关可能是前端的bug,也可能是后端的bug。
1、判断一个功能是否和接口有关
通过抓包的方式来判断,去检查在操作的时候有没有发送请求(调用接口),如果没有调用接口,那么就和接口无关;如果有调用接口,那么就和接口有关(在fiddler或者网站开发者工具上看的很直白,没反应就是没调用,反之调用),例如:输入字数问题,在前端做数据校验,如果超出了字数,就不让它发送请求(不调用接口),直接在页面弹窗提示超过字数——和接口无关;字数满足条件才调用接口——和接口有关了。
抓包:对于网站来说,不需要用fiddler,直接打开网站的开发者工具,手机用fiddler抓包,小程序也可以通过fiddler抓包
面试题:你抓包是干什么,你为什么需要抓包?在做系统测试的功能测试阶段,通过抓包的方式,去检查在操作的时候有没有发送请求(调用接口),如果没有调用接口,那么就和接口无关,如果有调用接口,那么就和接口有关,和接口有关的时候,抓包可以帮组我们查看前端的传入数据,判断是否是前端的问题,或者是否是前端的问题导致了后端也出了问题,通过抓包可以帮我们定位bug提供一个思路。
2、和接口有关(前后端都可能有bug)
首先明确,可能是前端的bug,也可能是后端的bug,和接口有关的bug就需要借助状态码并抓包查看bug了。
① 200
假设前提是接口已经测试OK,那么是前端的问题,如果接口没做测试,那么请参考前面的接口测试状态码为200时候的场景定位bug
若此时接口测试已经测试完毕,出现bug可能是以下两种情况:
a、数据没有在正确的位置显示
- 场景再现:数据错乱,没有对应到具体的位置,就比如说状态下边的停用按钮,接口是200,应该在状态下边显示的,结果它跑去了别的地方显示,没有按照正确的位置显示,又例如停用状态status=1,应该在也页面上显示停用按钮,结果按钮上显示的是状态1——SQL语句多加了一个引号
b、后端返回了数据,前端没有显示出来
- 场景再现:明明只有两条数据,但是页码显示了有很多条,还有翻页操作,但是翻页又翻不了——后端页码返回时出错——SQL写错导致的——后端问题
② 40*(前端bug)
- 出现原因:100%是前端的bug,前端操作接口错误,没有按要求去调用接口
我们做的是功能测试,这个时候我们没有接触接口,我们操作的是前端,是前端在调用接口,前端操作接口错误,没有按要求去调用接口
- 场景再现:例如要求传的是json格式,然后前端在写代码的时候把花括号漏了半边;又如:要求传数字格式,结果传了个字符串格式
- 查bug思路:抓包看
- 提bug:提bug时指出是哪里的问题,比如报了400要告诉她,你这个参数用的不对,报405告诉他,你接口类型用错了,get用成post,post用成get
③ 50*
首先明确100%是后端bug,当然也有可能是前端出了问题导致后端出了bug
- 前错导致后错场景再现:例如前端没有对数据进行校验,传了一个很长的数据过去,后端接收这个数据的时候出错了,后端也没有对数据进行校验,最终两者导致出错了;又如:又如前端传了个json格式数据给后端,但是后端想要的是数组格式,结果后端就没办法取数据,导致后端报500错误
- 查bug思路:抓包判断前端发的数据是否有问题,如果前端发送的数据是OK的,那么就是后端的问题;如果前端发送的数据有问题,后端报500,那么前端后端都有问题,后端500问题通过查看日志追踪bug
3、和接口无关(前端bug)
首先明确,功能测试中和接口无关的bug100%是前端的bug,主要分为以下3种情况
① 检查日志是否报错,如果报错是代码的问题
- 如何查看日志:网站打开开发者工具,查看控制台console;APP在手机上打开开发者工具,使用adb logcat;小程序在设置中(三个点)启动开发调试工具查看log
- 提bug:把错误的日志发出来,告诉开发是哪里的问题
② 可以输入不满足需求条件的数据,或者不可以输入满足需求条件的数据
- 出现原因:前端的数据校验的问题
- 提bug:请仔细检查输入数据的校验问题
③ 其他的UI问题,也是前端的问题
the end:思维导图
定位bug的更多相关文章
- 软件测试之BUG分析定位概述(QA如何分析定位BUG)
你是否遇到这样的场景? QA发现问题后找到DEV说: 不好了,你的程序出问题了! DEV(追查半小时之后): 唉,是你们测试环境配置的问题 唉,是你们数据不一致 唉,是你们**程序版本不对 唉,是** ...
- 定位bug的基本要求
很多人觉得qa只是负责发现问题,这个实在太狭隘了,现代qa除了发现问题这种基本功外,定位问题,提出解决方案,提出预防方案也是要掌握的技能.这里先说定位问题的要求,定位问题要向深入,前提当然是对功能.产 ...
- 怎么定位bug
测试发现bug,怎么定位?不同领域不同的测试对象,具体定位方法都不一样.自己定位bug的方法通常是以下过程: 1.发现bug,首先要查看bug的详细信息,根据描述初步分析是哪个模块哪段代码的问题 2. ...
- 软件测试之BUG分析定位概述(QA如何分析定位BUG)【转自 https://blog.csdn.net/kaka1121/article/details/51538979】
你是否遇到这样的场景? QA发现问题后找到DEV说: 不好了,你的程序出问题了! DEV(追查半小时之后): 唉,是你们测试环境配置的问题 唉,是你们数据不一致 唉,是你们**程序版本不对 唉,是** ...
- 使用f12定位bug
为什么找到网站中的bug后还要去分析它到底是属于前端bug还是后端bug 三个原因: 1.在一些公司,一个系统可能是由前端团队和后端团队共同开发出来的,因此在分配bug的时候,不同模块的bug一般都会 ...
- springmvc请求参数异常统一处理,结合钉钉报告信息定位bug位置
参考之前一篇博客:springmvc请求参数异常统一处理 1.ExceptionHandlerController package com.oy.controller; import java.tex ...
- (高德地图)marker定位 bug 解决总结
项目背景: 一个项目bug,项目中用到高德地图,默认打开页面会生成一个marker(下图红色icon),然后用户拖动marker到想要的位置,并且保存. 用户反映定位不准确,在当前页面编辑的位置,到后 ...
- 接口测试:如何定位BUG的产生原因
转自公众号<QA之道> 我们从在日常功能测试过程中对UI的每一次操作说白了就是对一个或者多个接口的一次调用,接口的返回的内容(移动端一般为json)经过前端代码的处理最终展示在页面上.ht ...
- 定位bug的姿势对吗?
举个例子来说明 WEB页面上数据显示错误,本来应该显示38, 结果显示35,这个时候你怎么去定位这个问题出在哪里? 1.通过fiddler抓包工具(或者其他抓包工具), 分析接口返回的数据是35还是 ...
- Web测试中定位bug方法
在web测试过程中,经常会遇到页面中内容或数据显示错误,甚至不显示,第一反应就是BUG,没错,确实是BUG.进一步了解这个BUG的问题出在那里,是测试人员需要掌握的,可以简单的使用浏览器自带开发者工具 ...
随机推荐
- Spring Security(6)
您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来- Spring Security使用MySQL保存cookie记录虽然方便,但是目前更多的主流互联网应用都是用NoSQL来保存非业务数据的,Spr ...
- linux开机进入grub rescue界面修复
一.先输入ls回车,查看显示内容 如: (hd0) (hd0,msdos1) (hd0,msdos2)... 二.然后找出哪个盘安装了系统 ls (hd0,msdos1)/boot/grub/ ls( ...
- APACHE正向代理配置
Apache快速安装和反向代理配置:https://www.cnblogs.com/brad93/p/16718104.html Apache正向代理配置参考教程:https://www.cnblog ...
- Velero 系列文章(二):使用 Helm 安装 Velero
概述 本文是通过 Helm 3 来安装 Velero, 只做最基本的安装.并计划将 YAML (只备份 YAML, 不备份 Volume) 备份到腾讯云的 COS(兼容 S3, 所以可以通过 AWS ...
- 痞子衡嵌入式:我被邀请做贸泽电子&与非网联合推出的《对话工程师》节目嘉宾
<对话工程师>是「贸泽电子」赞助.「与非网」制作的一档网络节目,自2022年11月起,邀请不同技术领域的资深工程师,聊聊开发过程中的经验感悟,栏目共 10 期,痞子衡有幸被邀请做了第 4 ...
- mysql下载及环境配置
目录 mysql简介 mysql下载 启动mysql 系统mysql服务的启动 mysql虚拟环境配置 (可以直接看这个) 卸载说明 mysql简介 为什么是mysql? 虽然数据库软件有很多 但是操 ...
- STM32外部中断(EXTI)控制LED亮灭的代码
led.c #include "led.h" void LED_Config(void) { GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2P ...
- Junti单元测试
Junit单元测试 ## 测试分类 黑盒测试,白盒测试 黑盒测试,不需要写代码,给输入值,看程序是否能够输出期望的值 白盒测试,需要写代码的,关注程序的具体执行流程 Junit使用 是白盒测试 ### ...
- CH432,CH438,CH9434串口扩展芯片常见问题
目前WCH有三款串口扩展芯片CH432,CH438以及CH9434. 型号 CH432 CH438 CH9434 扩展串口数量 2 8 4 通讯接口 并口/SPI(具体需要看芯片封装) 并口 SPI ...
- Vue中实现自定义excel下载
目录 第一种:后端生成excel 第二种:前端合成excel 总结 参考资料 最近在工作中遇到一个需求,就是需要在前端实现一个错误模板Excel的下载功能. 实现下载有两种方式,一种是后端生成一个ex ...