优秀测试的核心能力!2招高效定位分析BUG!

news2024/9/21 0:38:35

 

之所以写这一篇文章,是突然想起来曾经在测试过程中被开发嘲讽过,事情是这样的,当时发现了一个疑似前端的Bug就草草提交到了禅道,结果刚来的女前端看到了就有点生气地问我为啥不查清到底是前后端问题就直接派给她前端了,因为那个问题其实是后端的。

而且她还抛出了一句,她们以前公司的测试都是能准确分清前后端的问题再指派的。从那之后我就长了个记性,凡是遇到的Bug都尽量搞清楚到底是前后端哪边的问题再具体指派到开发。

相信很多人应该也有过类似的经历,但是可能为了快速测试或者因为不太会定位前后端问题而直接将Bug随便挂到了某个开发头上,聪明一点的呢直接挂到了开发组长头上让他重新指派!

其实这样对自身的成长以及塑造自己专业测试的形象都是不利的,如果刚开始做测试还好,做的久了必须是要像老中医一样把脉把准了才“开药”!

而且还有一点就是有些团队缺乏有效的管理,如果测试人员不区分前后端问题直接指派,可能导致前后端人员踢皮球,都说不是自己的问题,浪费很多时间在这种相互消耗上。

再退一步说,即使指派对了人,可是测试人员并未准确指明具体问题的原因。比如接口传参错误,那么对于有些新手开发来说也可能修改不到正确的地方。

这种情况我也遇到过,最后导致一个Bug来来回回修改了多次,耽误了时间也累了双方,而且你会发现到最后有些问题其实是同一个原因导致的。

如果你不能够找出具体“症结”,可能会导致将同一个问题提交多个Bug,这也会浪费掉很多宝贵的测试时间,所以说测试人员自己能够清楚地辨别前后端问题且能分析出具体原因,是利人利己之事!

上了写了这一堆,我相信凡是做过测试的人肯定深有体会,所以很多测试小伙伴也开始意识到Bug的定位与分析是非常重要的,它需要很强的综合素质,是整个测试过程中的核心能力,需要很强的逻辑判断力,敏锐的观察力,丰富的经验等。

虽然是功能测试,可是有时候也需要其它测试领域的技能辅助,因为这门功夫要懂的实在太多,限于篇幅此文章仅围绕Bug的定位与分析简单聊聊,希望能够起到抛砖引玉的作用。

我们先从Bug的定位说起,一般来说bug大多数存在于3个模块中:

  • 前台的界面,也就是UI层面的,包括界面的显示,兼容性,数据提交的判断,页面的跳转,信息的收发等等,这些bug基本都是很直观的,不太需要定位,刚开始做测试的小白也能一眼辨认。

    当然也不排除一些特殊情况,本身数据传过来的时候就有问题,所以显示会出问题的情况。

  • 后台的程序,包括代码逻辑的实现,前台调用的接口,中间层缓存和转发数据,定时任务脚本异步处理数据,程序之间的相互调用等等。

    而这些bug往往都是不可见的,大部分还好,可能从功能上就能发现,但是还有些藏得比较深,这就需要凭借一些开发经验和辅助工具去定位了。

  • 数据库,包括数据库无法连接,表中缺少字段,字段定义错误,数据重复,字段长度限制等等。

    这些bug需要通过数据库工具(如Navicat等数据库管理工具)以及一些基本的数据库查询语句来定位,当然前提是要遍历到每个表,每个字段甚至每一个值。

以上提到很多问题是显而易见的,但是还有一些藏的较深的问题,那么这些隐藏较深的bug该如何定位呢?

像此类Bug其实也很多,只是有时候由于各种原因我们放跑了它们,现在就举个最常见的例子:比如我们偶尔会遇到提交表单会发现正常的数据提交时会失败,那么如何定位呢?

  • 1.首先要打开抓包工具,随便你用Fiddler还是Wireshark等,然后提交正常的表单,看是调用后台接口的时候传的参数是否和之前填写的一致。

    比如表单填的是数字,而接口需要传的是字符串,那么就是前台传的问题,如果一致说明不是前台问题,继续往下排查;

  • 2.需要一方面继续看抓包的数据,接口返回的错误是什么,如果能明确看到错误原因的消息,也就能定位到问题,如果不能看到则要继续连接测试服务器查看日志,看是程序处理到哪一步有问题;

  • 3.如果程序是正常的,那继续往下查,看是否数据库字段定义错误,亦或是超过数据库字段限制的长度,字段定义错误等等。

    就这样追寻着程序执行的轨迹一步一步去排查,基本上都能定位到问题所在。

  • 4.有时候前端和服务端的交互都正确,但是从测试的角度看不合理,这个时候我们应该翻翻需求文档。

    如果和需求文档不符,那么就要看下改什么比较合理,是改前端,还是改服务端,或者两者都要改。这里有一个原则,就是前端尽可能少地去承担逻辑,只负责渲染展现。

  • 5.常见的bug可能还有构建方面的原因,比如代码本身没错,但是合并代码到主干后出现了问题,比如代码存在冲突时手动解决的情况,如果排除了各种情况还是查不到原因,可以从这个层面考虑!

以上只是举了一个简单的表单提交遇到问题如何定位的例子,其实现实中测试遇到稀奇古怪的问题是层出不穷的,比这复杂的问题也多的是,所以我们还是要学会分析问题可能出现的地方,在这个过程中不断去验证自己的猜想,反复排查缩小问题原因存在的半径。

只有掌握了这种思路才能以不变应万变。当然本文只是建立在最基础的网络架构下的定位与分析,如果对于复杂的架构定位就更加棘手了,有机会我再写一篇关于复杂网络定位与分析的文章与各位分享。

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1680335.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

React框架-Next 学习-1

创建一个 Next.js 应用,node版本要高,16.5以上 npm淘宝镜像切为https://registry.npmmirror.com npm config set registry https://registry.npmmirror.com npx create-next-applatest//安装后 使用npm run dev 启动 Next.js 是围绕着 页面(pages&am…

uac驱动之const修饰的变量和const修饰的指针

const int*p // p所指向的空间是常量 不可修改 ,但p可以修改 int*const p // p所指向的空间是可以修改 ,p不可以修改 #include <stdio.h> #include <string.h>struct usb_string {char id;const char *s; };enum {STR_ASSOC,STR_AC_IF,STR_USB_OUT_IT,STR_USB_O…

单位个人怎样向报社的报纸投稿?

作为一名单位的信息宣传员,我肩负着每月定期在媒体上投稿发表文章的重任。然而,在投稿的道路上,我经历了不少波折和挫折。 一开始,我天真地以为只要将稿件发送到报社的投稿邮箱,就能轻松完成任务。然而,现实却远比我想象的复杂。邮箱投稿的竞争异常激烈,编辑们会在众多稿件中挑…

ROS2系统与px4通信测试

参考文章&#xff1a; No communication with ROS2 using MicroXRCEAgent with px4 board ROS2官方安装及测试程序 概要 新安装的ROS2与PixHawk开发板进行通信。 操作步骤 启动示例程序&#xff0c;在&#xff5e;/ws_sensor_combined/src路径下执行&#xff1a; ros2 l…

MYSQL-9.问题排查

问题排查的思路与方向 问题排查思路 分析问题&#xff1a;根据理论知识经验分析问题&#xff0c;判断问题可能出现的位置或可能引起问题的原因&#xff0c;将目标缩小到一定范围&#xff1b;排查问题&#xff1a;基于上一步的结果&#xff0c;从引发问题的“可疑性”角度出发…

【C++ 高阶数据结构 Test】AVL ~ 二叉搜索树

文章目录 1. AVL 树概念2. AVL 树节点的定义3. AVL树的插入4. AVL树的旋转4.1 新节点插入较高左子树的左侧---左左&#xff1a;右单旋4.2 新节点插入较高右子树的右侧---右右&#xff1a;左单旋4.3 新节点插入较高左子树的右侧---左右&#xff1a;先左单旋再右单旋4.4 新节点插…

【计算机毕业设计】springboot房地产销售管理系统的设计与实现

相比于以前的传统手工管理方式&#xff0c;智能化的管理方式可以大幅降低房地产公司的运营人员成本&#xff0c;实现了房地产销售的 标准化、制度化、程序化的管理&#xff0c;有效地防止了房地产销售的随意管理&#xff0c;提高了信息的处理速度和精确度&#xff0c;能够及时、…

九游娱乐携手云达不莱梅共谋跨界新发展!

近日&#xff0c;九游娱乐正式宣布&#xff0c;成为德国著名足球俱乐部云达不莱梅俱乐部的亚洲官方合作伙伴。此次跨界合作将携手开创体育与娱乐融合的新篇章&#xff0c;不仅彰显九游娱乐在全球体育和娱乐领域的影响力&#xff0c;也为云达不莱梅俱乐部在亚洲市场带来了新的机…

js之选项卡制作实例

大家好&#xff0c;今天给大家书写选项卡实例&#xff0c;话不多说&#xff0c;直接上干货 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, in…

UVM寄存器模型——手写Ralf问题debug

寄存器模型是UVM中至关重要的一部分&#xff0c;如果没有寄存器模型&#xff0c;那么验证平台对于DUT内寄存器的访问方式将十分有限&#xff0c;对DUT运行状态的把控也会变得更为复杂。 在验证过程中&#xff0c;scoreboard或者其他验证组件经常需要了解当前时间某个寄存器的值…

c++20---std::erase----std::erase_if

问题&#xff1a;如何删除满足条件的所有元素。 erase #include <iostream> #include <algorithm> #include <vector>int main(){std::vector<int> vec{1,2,3,1,1,1,1,1};std::erase(vec,1);for(int v:vec) std::cout<<v<<" "…

详细分析Vue3中的reactive(附Demo)

目录 1. 基本知识2. 用法3. Demo 1. 基本知识 reactive 是一个函数&#xff0c;用于将一个普通的 JavaScript 对象转换为响应式对象 当对象的属性发生变化时&#xff0c;Vue 会自动追踪这些变化&#xff0c;并触发相应的更新 Vue2没有&#xff0c;而Vue3中有&#xff0c;为啥…

[AI智能摄像头]RV1126部署yolov5并加速

导出onnx模型 yolov5官方地址 git clone https://github.com/ultralytics/yolov5 利用官方命令导出python export.py --weights yolov5n.pt --include onnx 利用代码导出 import os import sys os.chdir(sys.path[0]) import onnx import torch sys.path.append(..) from m…

如何使用JMeter测试导入接口/导出接口?

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号&#xff1a;互联网杂货铺&#xff0c;回复1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 今天上班&#xff0c;被开发问了一个问题&#xff1a;JM…

怎样恢复E盘里删了的文件夹,2024让EasyRecovery来帮你轻松恢复

使用EasyRecovery易恢复进行数据恢复非常简单。首先&#xff0c;用户需要选择需要恢复的数据类型&#xff0c;如文档、图片、视频等。然后&#xff0c;软件会对选定的存储设备进行全面扫描&#xff0c;以寻找可恢复的数据。在扫描过程中&#xff0c;用户可以预览部分已找到的文…

一周学习总结:数组与链表

学习内容&#xff1a;数组与链表、计算机网络知识 数组&#xff1a; 从数组的基础知识到相关应用 数组的基础知识&#xff1a;数组在内存中的存储、数组的相关操作&#xff08;获取与更新&#xff09;、数组的相关应用&#xff1a; 二分查找法⭐⭐⭐⭐⭐ ● 掌握左闭右闭的…

matlab使用教程(71)—控制坐标区布局

1.与位置相关的属性和函数 有几个属性和函数可用于获取和设置坐标区的大小与位置。下表摘要显示了这些属性和函数。 函数或属性描述 OuterPosition 属性 使用此属性可以查询或更改坐标区的外边界&#xff0c;包括标题、标签和边距。要更改外边界&#xff0c;请将此属性指定为…

暴利的副业兼职,抖音蓝海赛道,批量复制这个项目,1年200个

在有小孩的家庭中&#xff0c;父母都非常重视孩子的教育&#xff0c;并愿意为此投入大量资金。根据之前的新闻报道&#xff0c;有些父母会毫不犹豫地为孩子花费数千甚至上万元报名参加各种培训课程。尤其是在独生子女家庭中&#xff0c;家长更注重培养孩子的各方面能力。 周周近…

基于springboot实现社区智慧养老监护管理平台系统项目【项目源码+论文说明】计算机毕业设计

基于SpringBoot实现社区智慧养老监护管理平台系统演示 摘要 如今社会上各行各业&#xff0c;都在用属于自己专用的软件来进行工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。互联网的发展&#xff0c;离不开一些新的技术&#xff0c;而新技术的…

Linux交叉编译

目录 一. 下载交叉编译工具 1.使用环境要求 2.获取Linux SDK 方法一&#xff1a;从github上下载orangepi-build 方法二&#xff1a;从百度网盘下载提前编译好的Linux SDK包 通过以下命令进行合并解压 3.修改配置脚本 4.首次编译完整的SDK 1.运行build.sh脚本 2.选择F…