当前位置: 首页 > news >正文

【接口测试】如何定位BUG的产生原因

我们从在日常功能测试过程中对UI的每一次操作说白了就是对一个或者多个接口的一次调用,接口的返回的内容(移动端一般为json)经过前端代码的处理最终展示在页面上。http接口是离我们最近的一层接口,web端和移动端所展示的数据就来自于这层,那么我们如何知道在测试过成功UI上的每一次点击都触发调用了那些接口呢?请在下面的场景中找答案。

如下场景:

你负责测试某一个电商网站一个用户的订单列表功能,测试过程中你发现页面上展示的订单数量与实际数据库里的数量不一致,请大家结合自己平时的工作方式回忆下如何快速的定位该问题是不是BUG或者BUG产生的原因是什么。

下面说下我认为比较合适的定位方式:
1、 用chrome浏览器打开你正在测试的项目 F12打开开发者工具,切到network 标签,访问订单列表页面,如下图


抓取到展示订单列表的接口,可以看出本次请求一共传递了9个参数,此时打开RD提供的接口文档确认需要传递的参数是否传递的正确,或者参数个数一致,如果不正确,那可以判断是前端的Bug。
有人说如果没有接口文档怎么办?能看得懂代码的直接去看这个接口的定义或者实现,看不懂的就只能找后端开发去确认了
2、 点击Response标签将标签内的内容复制出来,问了更好的查看可以将其粘贴到格式化json的工具上(如果返回类型是json)工具地址:http://json.parser.online.fr/,然后查看这里面展示的记录数是不是跟UI上展示的一致,如果不一致可以判断是前端的Bug

3、 如果上一步没有问题,请打开系统的debug日志,获取订单的操作说白了最后落到数据库层面就是一条带条件的select 查询语句,我们从日志中可以获取到select 语句的参数,这个参数一般情况下就是在调用接口时传递的那9个,此时抓取到本次接口调用产生的sql语句然后放到数据库客户端上执行,分析查询条件和执行结果的关系,这个过程就是找出错误参数的过程。类似的debug日志如下:

从截图可以看出有一些select 语句如:select * from model where id = ? 

总结:测试过程遇到问题时先别急着喊开发,先自己有个初步的判断,或者直接定位到Bug产生的原因,这样既可以减少一些不必要的沟通还可以让开发直奔Bug的产生原因,提高问题的解决速度。

2023最新Jmeter接口测试从入门到精通(全套项目实战教程)

相关文章:

  • qt简单连接摄像头
  • 论文阅读——Flamingo
  • webpack之介绍
  • electron GPU process isn‘t usable. Goodbye
  • 实现linux与windows进行文件共享
  • C语言之字符串函数
  • 竞赛保研 基于GRU的 电影评论情感分析 - python 深度学习 情感分类
  • 本地websocket服务端结合cpolar内网穿透实现公网访问
  • Unity protobuf中repeated转C#文件List只读问题
  • C语言中关于操作符的理解
  • 【大数据】NiFi 中的 Controller Service
  • 【Amazon 实验②】使用缓存策略及源请求策略,用于控制边缘缓存的行为及回源行为
  • 攻防世界——game 游戏
  • 10 本让我 2023 年「生产力」暴增 5 倍的经典书|收藏
  • 05. Springboot admin集成Actuator(一)
  • [ JavaScript ] 数据结构与算法 —— 链表
  • HashMap剖析之内部结构
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • JS实现简单的MVC模式开发小游戏
  • k8s如何管理Pod
  • TCP拥塞控制
  • V4L2视频输入框架概述
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 编写符合Python风格的对象
  • 如何进阶一名有竞争力的程序员?
  • 算法---两个栈实现一个队列
  • 湖北分布式智能数据采集方法有哪些?
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​MySQL主从复制一致性检测
  • #Z0458. 树的中心2
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (学习日记)2024.01.09
  • (一)为什么要选择C++
  • (译) 函数式 JS #1:简介
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET6 开发一个检查某些状态持续多长时间的类
  • /bin、/sbin、/usr/bin、/usr/sbin
  • /etc/shadow字段详解
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @软考考生,这份软考高分攻略你须知道
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [AutoSAR 存储] 汽车智能座舱的存储需求
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [C# 开发技巧]实现属于自己的截图工具
  • [C]整形提升(转载)