首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
Ubuntu环境使用TPC-DS工具生成测试数据
2
cookie机制及其原理
3
网络测试,带宽测试,流量测试
4
使Edge浏览器打开仅支持IE兼容模式的网站
5
【Linux】挂载硬盘、镜像文件、rpm软件包管理器、yum软件包管理器、软件安装jdk、tomcat、mysql
6
【Spring Boot 项目创建】002-代码关联 Git 远程仓库
7
用ChatGPT生成测试数据
8
手机APP测试(测试点、测试流程、功能测试)
9
web前端好帮手 - Jest单元测试工具
10
用ChatGPT生成测试数据
11
Redis 精简笔记
12
一句话就能提Bug,这个自动提交Bug Skill 太好用了
13
从0到1做出可复用的 iOS 自动化测试 Skill,附真机演示效果
14
大厂测开面试都在问AI,这个实战项目直接帮你准备好了
15
OpenClaw 拿什么吃掉测试岗?
16
一篇理清Prompt,Skill,MCP之间的区别
17
AI 测试必备:推荐一款能让自动化失败脚本「自己修好」的 AI skill!
18
【Selenium 自学系列】(一)看源码分析交互原理
19
什么是CI/CD
20
这到底是前端还是后端Bug
21
详解接口测试(2)- HTTP接口用例设计与测试方法(拿B站练手)
22
比羊了个羊还火的ChatGPT,玩法全攻略讲解
23
爱心代码文字升级版
24
自动打包、装机、生成用例、真机回归,AI 测试流水线终于跑通了
25
AI生成注册用户测试用例
26
AI驱动的测试报告分析:从数据中挖掘测试洞察
27
WEB功能测试说明
28
APP功能测试要点
29
不输ChatGPT,kimi秒画流程图
30
聊天功能如何测试?
31
订单支付功能测试
32
app功能测试--需要测试哪些要点
33
【软件测试】使用QTP进行功能测试
34
TestZeus Hercules:功能测试写 Gherkin,让 AI Agent 去跑冒烟流程
35
非功能需求的测试
36
【功能篇】如何测试报表?
37
VFP AI 插件(ver:20251007)测试报告
38
VFP AI 插件使用指南(三)
39
「 支付功能 」的测试思路
40
研发、测试提效攻略:利用Apipost AI 6 大核心功能实现接口测试全流程
41
功能测试之app测试要点提取与分析
42
网站测试中短信发送功能测试点
43
常用功能的测试用例
44
20行代码,用Python实现异常测试用例
45
新梦想干货——软件测试中的43个功能测试点(下)
46
《打造你的 AI 知识库:用 Skill 实现项目文档的自动生成与维护》
47
Apifox和Apipost:2025 API工具巅峰对决
48
接口测试--apipost接口断言详解
49
ApiPost自动化测试基础之:如何使用测试校验(测试用例)?
50
教你用 Node.js 模拟自动发送邮件验证码
清单首页测试文章详情

这到底是前端还是后端Bug

前言

大家好,我是洋子。在日常测试过程中,我们或多或少碰到如下场景:

QA(我):这个页面打开白屏了,前端开发你看下,抓紧给我改(做测试就是要硬气一点)

前端:这不是我的Bug呀,你看后端接口都没返回数据

QA(我):那我找后端开发看看吧

后端:这接口数据返回是正常的呀,找前端看吧

QA(我):......(我TA MA心态崩了呀,到底是谁的Bug)

为了避免让我们自己陷入被动的局面,学会定位前端还是后端Bug是一件非常重要的技能,在软件测试的面试当中,面试官也时常会考察这方面的知识

前端和后端的定义

要想清晰的定位是前端还是后端问题,我们需要对前端和后端的划分,有基本的了解,即哪些部分是属于前端,哪些部分是属于后端

前端相对比较好理解,我们打开Web网站看到的HTML5(简称H5)页面,打开手机APP看到的Native页面或者H5页面,都是属于前端的范畴(APP客户端,也认为是前端)

一个H5页面上,有着精美的布局,把各种按钮,页面元素,后端返回的数据给组合起来

后端主要是为前端提供数据,前端如何展示这些数据就都是前端的事了

那前后端是如何进行交互的呢,在前言当中,我提到一个名词接口,通俗的理解,接口就是后端暴露给前端进行调用的,前后端交互大多都是通过HTTP协议(但不仅限于HTTP)的接口来进行

前端传入请求URL和请求参数,调用后端提供的HTTP接口,在正常情况下,就可以拿到后端返回的数据,用于页面的展示

前后端交互原理

前后端问题定位方法

在有了对前后端的基本认识后,就可以开始进行问题定位,问题定位一般需要借助Charles、Fiddler或浏览器F12调试等抓包工具

在问题定位的思路上面,我一般是依据如下原则,以点击某个按钮没有响应的Bug为例:

(1)以是否有HTTP请求为界定。先抓包看是否捕捉到HTTP请求,如果没有部署到HTTP请求,排除掉抓包代理设置的问题,95%以上都是前端的问题,至于为什么会有5%的小概率事件是后端的问题,可以看下这张图

即进入某页面后前端会调用后端接口A,预加载信息,而前端根据预加载信息去决定按钮点击后,是否调用接口B。因此,如果后端接口A返回字段有问题,就会导致点击按钮后无响应的结果。在这种情况下,无HTTP请求就是后端的问题啦

(2)通常情况下,点击前端页面后都是可以去捕获到HTTP请求的,那抓到包以后,咱们怎么定位Bug呢

一般先看HTTP状态码是不是200,如果状态码是5xx开头,那么就是后端有问题,如果状态码是4xx开头,那么就是前端有问题

状态码

类别

产生原因

1xx

Informational 信息性状态码

接收的请求正在处理

2xx

Success 成功状态码

请求正常处理完毕

3xx

Redirection 重定向状态码

需要进行附加操作以完成请求

4xx

Client Error 客户端错误状态码

服务器无法处理

5xx

Server Error 服务端错误状态码

服务器处理请求出错

那要是状态码是200成功怎么办呢,这时候可以对照接口文档,排查前端调用接口的请求参数是否正确,如果请求参数不正确,就是前端的问题。然后查看接口返回结果是否正确,如果接口返回结果中某字段和接口文档对不上,那就是后端的问题

再教大家一个小技巧,如果是测试APP的话,可以拿出一台安卓手机以及一台苹果手机,如果问题只在安卓手机上出现,而苹果手机正常,那100% 就是前端(客户端)的问题,从而排除后端的问题

出现单端问题情况有可能是接口请求参数传入错误导致,也可能是客户端业务逻辑处理有问题

问题定位小结

问题类型

问题定位依据

前端

没有HTTP请求

前端

接口响应HTTP状态码为4xx

前端

接口请求参数传入错误

前端

问题只在单端出现(安卓出现,IOS正常)

后端

接口返回字段错误

后端

接口响应HTTP状态码为5xx

前后端问题排查思路

前面我们谈到了如何定位前端还是后端问题,假如我们已经定位到了这个问题是前端还是后端产生的,该如何进一步排查到问题产生的根本原因呢,别慌,现在就教大家一些排查方法和思路

前端问题排查

前端一般包含了APP客户端,H5页面

当问题是出在APP客户端,如果是安卓APP,可以使用数据线连接手机,使用Android Studio选择 Logcat 工具抓取到日志,也可以使用ADB命令,导出APP所产生的日志;如果是IOS系统,则可以使用Xcode工具

当问题是出在H5页面,浏览器F12调试工具的Console 控制台,可以打印出H5的log信息以及报错信息

点击报错js文件,这时候就会跳转到浏览器调试工具的Source页面

这时候就能定位到js文件中报错的函数,接着就可以分析报错原因了

后端问题排查

后端问题排查,排查问题主要有以下3种方式

  • 看后端log
  • 查询数据库或者Redis,存储信息是否正确
  • 在有代码权限的基础上,还可以打断点,打印调试信息用于辅助排查

新手小白会问,服务器上的log如何查看呢,不妨试试如下的步骤

  1. SSH命令登陆上linux服务器后,先用cd命令进入到log存放的目录
  2. 输入find -mmin -1,查询到最近1分钟内新写入内容的log文件
  3. 使用tail -f filename打开log文件查看内容,也可以使用grep keyword filename --color=auto只搜索关键词信息,还可以把两个命令结合起来使用tail -f ./filename | grep -ni "keyword"

当我们找到fatal,error,connection refuse,warning等词,就要高度重视了,错误往往发生在这些地方

如果你拥有查看代码的权限,可以先理清后端的数据流,一般后端Web开发框架都是采用MVC结构,从入口Controller层,到Page层,最后到Data层做出了哪些业务逻辑处理

然后在代码当中添加log,或者打印变量的值来辅助排查,后端为php语言可以使用var_dump($var_name);die;,后端为Go语言,可以使用fmt.Printf(" %+v", var_name),也就是运用最基本的print方法就可以找到错误

更往上一步,如果你拥有超强的代码review能力,直接通过看代码就可以发现错误原因,当然洋子目前还在这个阶段修炼当中,只有15%左右的后端问题能通过直接看代码发现

按照过往经验,后端问题一般高频出现在参数传递,函数返回值,上下游接口调用,数据库操作这几个地方

结束语

在实际工作当中,我们会遇到各种各样的问题,当我们遇到问题后,先冷静分析并充分理解需求,看是测试环境有问题,还是真的有Bug。实在定位不了可以寻求开发人员帮助,在描述问题过程中,提供有效信息(问题发生时间点,问题视频/图片,问题现象等,抓包结果等排查依据),做到清晰明了,这样能大大提高问题排查效率

下一篇
举报
领券