软件测试阶段:单元测试,集成测试,系统测试,验收测试

测试人员参与的软件测试阶段一般来说只有集成测试和系统测试阶段。集成测试阶段主要测试的是接口;系统测试阶段主要是功能测试,兼容性测试等,涉及到定位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的更多相关文章

  1. 软件测试之BUG分析定位概述(QA如何分析定位BUG)

    你是否遇到这样的场景? QA发现问题后找到DEV说: 不好了,你的程序出问题了! DEV(追查半小时之后): 唉,是你们测试环境配置的问题 唉,是你们数据不一致 唉,是你们**程序版本不对 唉,是** ...

  2. 定位bug的基本要求

    很多人觉得qa只是负责发现问题,这个实在太狭隘了,现代qa除了发现问题这种基本功外,定位问题,提出解决方案,提出预防方案也是要掌握的技能.这里先说定位问题的要求,定位问题要向深入,前提当然是对功能.产 ...

  3. 怎么定位bug

    测试发现bug,怎么定位?不同领域不同的测试对象,具体定位方法都不一样.自己定位bug的方法通常是以下过程: 1.发现bug,首先要查看bug的详细信息,根据描述初步分析是哪个模块哪段代码的问题 2. ...

  4. 软件测试之BUG分析定位概述(QA如何分析定位BUG)【转自 https://blog.csdn.net/kaka1121/article/details/51538979】

    你是否遇到这样的场景? QA发现问题后找到DEV说: 不好了,你的程序出问题了! DEV(追查半小时之后): 唉,是你们测试环境配置的问题 唉,是你们数据不一致 唉,是你们**程序版本不对 唉,是** ...

  5. 使用f12定位bug

    为什么找到网站中的bug后还要去分析它到底是属于前端bug还是后端bug 三个原因: 1.在一些公司,一个系统可能是由前端团队和后端团队共同开发出来的,因此在分配bug的时候,不同模块的bug一般都会 ...

  6. springmvc请求参数异常统一处理,结合钉钉报告信息定位bug位置

    参考之前一篇博客:springmvc请求参数异常统一处理 1.ExceptionHandlerController package com.oy.controller; import java.tex ...

  7. (高德地图)marker定位 bug 解决总结

    项目背景: 一个项目bug,项目中用到高德地图,默认打开页面会生成一个marker(下图红色icon),然后用户拖动marker到想要的位置,并且保存. 用户反映定位不准确,在当前页面编辑的位置,到后 ...

  8. 接口测试:如何定位BUG的产生原因

    转自公众号<QA之道> 我们从在日常功能测试过程中对UI的每一次操作说白了就是对一个或者多个接口的一次调用,接口的返回的内容(移动端一般为json)经过前端代码的处理最终展示在页面上.ht ...

  9. 定位bug的姿势对吗?

    举个例子来说明 WEB页面上数据显示错误,本来应该显示38,  结果显示35,这个时候你怎么去定位这个问题出在哪里? 1.通过fiddler抓包工具(或者其他抓包工具), 分析接口返回的数据是35还是 ...

  10. Web测试中定位bug方法

    在web测试过程中,经常会遇到页面中内容或数据显示错误,甚至不显示,第一反应就是BUG,没错,确实是BUG.进一步了解这个BUG的问题出在那里,是测试人员需要掌握的,可以简单的使用浏览器自带开发者工具 ...

随机推荐

  1. JavaScript代码是怎么在浏览器里面运行起来的?

    JavaScript代码是怎么在浏览器里面运行的?下面简单探索一下 浏览器内核 浏览器内核(Rendering Engine),常见的叫法如:排版引擎.解释引擎.渲染引擎,现在流行称为浏览器内核. 浏 ...

  2. Scala- Cannot run program "powershell.exe": CreateProcess error=5, 拒绝访问

    安装scala后,按照官网的helloworld教程学习执行 sbt new scala/hello-world.g8 的时候,出现下图错误. 解决方案:关闭360

  3. c++题目:吃西瓜

    吃西瓜 [问题描述] 老胡买了是长方体形的西瓜来犒劳大家.... 这块西瓜长m厘米,宽n厘米,高h厘米.他发现如果把这块西瓜平均地分成m*n*h块1立方厘米的小正方体,那么每一小块都会有一个营养值(可 ...

  4. 【Java Web】项目通用返回模块ServerResponse:枚举code状态码、泛型返回值、序列化注解限制数据

    一.枚举类编写ResponseCode package com.boulderaitech.common; /** * 编写枚举类的步骤 * (1)编写所需的变量 * (2)编写枚举类构造方法 * ( ...

  5. 这玩意也太猛了!朋友们,我在此严正呼吁大家:端好饭碗,谨防 AI!

    你好呀,我是歪歪. 最近几天大火的 ChatGPT 你玩了吗? 如果你不知道它是个什么东西,那么我让它给你来个自我介绍: 说白了,就是一个可以对话的人工智能. 我开始以为就是一个升级版的"小 ...

  6. Dijkstra 算法说明与实现

    Dijkstra 算法说明与实现 作者:Grey 原文地址: 博客园:Dijkstra 算法说明与实现 CSDN:Dijkstra 算法说明与实现 问题描述 问题:给定出发点,出发点到所有点的距离之和 ...

  7. 源码解读之TypeScript类型覆盖检测工具type-coverage

    因为团队内部开启了一个持续的前端代码质量改进计划,其中一个专项就是TS类型覆盖率,期间用到了type-coverage这个仓库,所以借这篇文章分享一下这个工具,并顺便从源码阅读的角度来分析一下该工具的 ...

  8. uniapp input框聚焦时软键盘弹起整个页面上滑,固定页面不让上滑问题

    根据需求,软键盘弹起时,不允许页面整体向上滑动 用到的属性是:  :adjust-position="false" uni-app 软键盘顶起底部fixed定位的输入框 页面就不会 ...

  9. Pytorch基础-张量基本操作

    一,张量的基本操作 二,维度变换 2.1,squeeze vs unsqueeze 维度增减 2.2,transpose vs permute 维度交换 三,索引切片 3.1,规则索引切片方式 3.2 ...

  10. JavaScript 中如何拦截全局 Fetch API 的请求和响应?

    本文翻译自 Intercepting JavaScript Fetch API requests and responses 拦截器是可用于预处理或后处理 HTTP 请求的代码块,有助于全局错误处理. ...