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

 

之所以写这一篇文章,是突然想起来曾经在测试过程中被开发嘲讽过,事情是这样的,当时发现了一个疑似前端的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.mzph.cn/news/838471.shtml

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

相关文章

【python量化交易】—— Alpha选股策略 - Qteasy自定义交易策略【附源码】

使用qteasy创建并回测Alpha选股交易策略 使用qteasy创建并回测Alpha选股交易策略策略思想第一种自定义策略设置方法,使用持仓数据和选股数据直接生成比例交易信号PS信号:第二种自定义策略设置方法,使用PT交易信号设置持仓目标:第三…

【数组中重复的数据】leetcode,python

和上题一样,【找到所有数组中消失的数字】 换个判断条件就行 class Solution:def findDuplicates(self, nums: List[int]) -> List[int]:nlen(nums)for i in nums:x(i-1)%nnums[x]n#只需要替换条件即可return [i1 for i,num in enumerate(nums) if num>(2*n)…

海外云手机的运作原理和适用场景

海外云手机是一种基于云计算技术的虚拟手机服务,通过将手机操作系统和应用程序托管在远程服务器上,实现用户可以通过互联网连接来使用和管理手机功能,而无需实际拥有物理手机。以下是有关海外云手机的相关信息: 海外云手机的运作原…

如何利用命令提示符列出文件?这里提供了几个实例供你参考

序言 什么命令可以用来列出目录中的文件?如何在命令提示符Windows 10/11中列出文件?很多人对这些问题感到困惑。在这篇文章中,我们详细解释了命令提示符列出文件的主题。 CMD(命令提示符)是一个功能强大的Windows内置…

Keil问题解决:结构体数组初始化,初始化后的值不是目标值

省流:使用的编译器为compiler version 6,切换为compiler version 5 如果缺少编译器,请参考:Keil手动安装编译器V5版本 结构体定义: typedef struct _TASK_COMPONENTS {uint8_t Run; // 程序运行标…

雍禾植发张东宏:以诚相待毛发患者

医学道路上的奋斗往往需要坚定的信念和不懈的努力。对于张东宏医生来说,医学并非止步于书本知识,而是一次次与患者对话、一次次实操中的历练和积累。在他的成长历程中,医学之路如同一棵参天大树,每一步都是扎实的打磨,…

STM32F407 2个高级定时器生成2路无刷电机波形以及相电流采集程序(寄存器版)

stm32f407 高级定时1、定时8 生成20k 中心PWM 波形 并分别用其通道4 触发ADC1 ADC2 采样 用于分别两无刷电机foc 电流环控制,ADC1产生50us的电流采集完成中断,用于foc算法周期运算 主要参考高级定时器的寄存器和ADC寄存器 首先,要使用STM32F…

代码复现|Demucs Music Source Separation

一、背景介绍 Demucs是一个开源的音源分离项目。 Demucs在算法层面前后经历了三次大版本的进化,最原始的V1版本是:编解码LSTM。具体算法原理图如下所示。该版本在时域进行音源分离。关于阅读笔记请点击这篇文章。 V1版本原理图 V2版本是同时使用时域和频…

2、快速搭建Vue框架以及项目工程

本篇文章详细讲解在配置完vue2环境后如何快速搭建一个Vue框架和项目工程。(以智慧农业云平台为例) 2.1 Vue工程创建 2.1.1创建想要存放的Vue文件夹 找到想要存放的文件夹并在目录搜索框中,并用管理员的方式打开。 2.1.2创建Vue工程 2、安装…

prompt工程策略(一:使用 CO-STAR 框架来搭建 prompt 的结构)

原文:我是如何赢得GPT-4提示工程大赛冠军的 原文的原文: How I Won Singapore’s GPT-4 Prompt Engineering Competition 为了让 LLM 给出最优响应,为 prompt 设置有效的结构至关重要。CO-STAR 框架是一种可以方便用于设计 prompt 结构的模板…

2024最新Kali Linux安装教程(非常详细)从零基础入门到精通(附安装包)!

什么是Kali Linux? Kali Linux是一个高级渗透测试和安全审计Linux发行版,其功能非常强大,能够进行信息取证、渗透测试、攻击WPA / WPA2保护的无线网络、离线破解哈希密码、将android、Java、C编写的程序反编译成代码等等,是黑客的…

Invalid bound statement (not found) 六种解决方法

前五种参考博文: Invalid bound statement (not found) 五种解决方法-CSDN博客 第六种: 在启动类上加上MapperScan,指定扫描包

【C++】list原理讲解及其实现

目录 一、认识list底层结构 二、list的构造类函数 三、迭代器 四、数据的访问 五、容量相关的函数 六、关于数据的增删查改操作 七、list和vector的比较 前言 要模拟实现list,必须要熟悉list的底层结构以及其接口的含义,在上一篇我们仔细讲解了list的…

Gradio 案例——将 dicom 文件转为 nii文件

文章目录 Gradio 案例——将 dicom 文件转为 nii文件界面截图依赖安装项目目录结构代码 Gradio 案例——将 dicom 文件转为 nii文件 利用 SimpleITK 库,将 dicom 文件转为 nii文件更完整、丰富的示例项目见 GitHub - AlionSSS/dcm2niix-webui: The web UI for dcm2…

JavaScript精粹(一)- 基础入门

JavaScript(简称为JS)是一种广泛应用于网页开发的脚本语言,具有以下几个主要作用: 网页交互:JavaScript 可以用于创建动态的网页效果,例如响应用户的操作,实现页面内容的动态更新,以…

【Java基础】集合(2) —— List

List 存储的对象是有序的&#xff08;集合中存储对象的顺序和使用add方法添加对象的顺序一致&#xff09;&#xff0c;存储的对象是可重复的。 List的特有的功能: 都是可以操作索引的功能。 增: void add(int index, E element )boolean addAll(int index, Collection<? …

mysql的explain

explain可以用于select&#xff0c;delete&#xff0c;insert&#xff0c;update的statement。 当explain用于statement时&#xff0c;mysql将会给出其优化器&#xff08;optimizer&#xff09;的执行计划。 通过explain字段生成执行计划表。下面来解析这个执行计划表的每一列…

提升用户体验:Xinstall免邀请码功能详解

在移动互联网时代&#xff0c;App的推广和运营显得尤为重要。然而&#xff0c;传统的App推广方式往往需要用户填写繁琐的邀请码&#xff0c;这不仅降低了用户体验&#xff0c;还影响了推广效果。幸运的是&#xff0c;Xinstall作为国内专业的App全渠道统计服务商&#xff0c;推出…

汽车电子都应用哪些频点的贴片晶振

晶振通过与其它元器件的连接使用&#xff0c;产生脉冲起到信号源的作用&#xff0c;所以在电子圈中有一个很形象的比喻: 如果把芯片比如电路的控制大脑&#xff0c;那晶振产生的信号就是给大脑持续供需的血液。平时&#xff0c;在我们使用的手机&#xff0c;蓝牙耳机&#xff0…

没有疯狂内卷的日本智能机市场,小屏与设计仍旧是主流

如果聊起国内的智能机市场&#xff0c;我想大多数人的印象就是疯狂内卷。卷影像、卷屏幕、卷快充、卷性能……客观地说&#xff0c;国内的3C产品还是很有质价比的。不过在没有如此内卷的日本市场&#xff0c;各种小屏手机仍旧是主流。 除了苹果外&#xff0c;日本本土品牌的夏普…