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

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

    1.安装docker-compose curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-c ...

  2. npm安装hexo报错

    报错提示 npm WARN saveError ENOENT: no such file or directory, open '/home/linux1/package.json' npm noti ...

  3. python选课系统项目详解

    选课系统项目详解 选课系统简介及分析 选课系统架构设计分析 选课系统目录设计 管理员视图 注册 登录 创建学校 创建课程 创建讲师 学生视图 注册 登录 选择学校 选择课程 查看分数 教师视图 登录 ...

  4. 第2-4-1章 规则引擎Drools介绍-业务规则管理系统-组件化-中台

    目录 规则引擎 Drools 1. 问题引出 2. 规则引擎概述 2.1 什么是规则引擎 2.2 使用规则引擎的优势 2.3 规则引擎应用场景 2.4 Drools介绍 规则引擎 Drools 全套代 ...

  5. SpringBoot2.5.1+Mybatis-Plus3.4.3:(Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required)

    项目引发这个问题: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required <parent> <group ...

  6. vue3响应式原理以及ref和reactive区别还有vue2/3生命周期的对比,第二天

    前言: 前天我们学了 ref 和 reactive ,提到了响应式数据和 Proxy ,那我们今天就来了解一下,vue3 的响应式 在了解之前,先复习一下之前 vue2 的响应式原理 vue2 的响应 ...

  7. 【书籍知识回顾与总结-2022】Java语言重点知识-多线程编程、流式编程

    一.多线程编程 二.流式编程 1.目的 简化集合和数组的操作 注意:每个流只能使用一次 2.获取流的方式 (1)单列集合:stream方法 KeySet()/values()/EntrySet() ( ...

  8. JavaEE Day08 HTML&CSS

    今日内容 HTML标签:表单标签 CSS:页面样式控制,美化页面,完成页面布局 一.表单标签 1.概述 用于采集用户输入数据的,如输入的用户名和密码,用于与服务器进行交互 使用from标签  form ...

  9. Rust 学习之旅(7):Package,Crate,Module

    Rust 学习之旅(7):Package,Crate,Module 这是第 7 章的读书笔记,Cargo Workspace 在第 14 章. Packages and Crates As a pro ...

  10. JAVA中的注解可以继承吗?

    前言 注解想必大家都用过,也叫元数据,是一种代码级别的注释,可以对类或者方法等元素做标记说明,比如Spring框架中的@Service,@Component等.那么今天我想问大家的是类被继承了,注解能 ...