高效精准分析定位系统BUG,让你无所不能

 

 

项目版本上线发版后,经常会收到领导、产品、研发、业务、用户等反馈过来各种各样BUG,令人心惊胆战,措手不及

这时领导会第一时间找你沟通,让其定位排查原因,解决处理

 

很多测试人员第一反应:

需求没说这样?

不是BUG?

怎么可能是BUG?

这个我们测过的怎么会有问题?

肯定是环境问题?

肯定是程序偷偷改了代码导致的?

昨天还是好的呢?今天怎么这样了?

 

****且记,不要再未确定原因时,随意给出猜测定论****

****首先对系统、业务逻辑非常熟悉****

 

 

当bug出现时,一般来说分大致3种情况,

  数据库层面的:可能少某个字段,或者字段值为空等等,这些可能在设计数据库时就埋下了错误的种子,导致程序调用数据库错误的数据产生bug,这一类问题不算普遍,但也是最容易忽视的一种情况,有时候从数据库入手定位bug说不定还能发现数据库的设计缺陷呢。

  网络层面的:通常这种都是网络情况较差的时候产生的,比如手机的移动网络信号不好,又或是公司网络不稳定,导致js/css未加载完全或者请求超时等等,这种问题其实非程序bug造成的,可以不用提交bug,也不用让开发毫无头绪的去查代码的问题。当然如果可以的话也可以当优化建议提给开发,让他优化代码,比如压缩js/css,增加超时时间,超时后的重试机制。

  代码层面的:普遍的bug基本都是代码有问题造成的,排除掉1和2剩下后就可以确定是程序bug了。对于了解网络架构的人来说,其实程序也分前端和后端的,一般对于界面显示有问题直接可以判断是前端的问题,比如系统兼容性,浏览器兼容性。

  而对于数据或者逻辑上的问题,则需要(检查接口)前端和后台之间是通过接口文件相互联系的,通过抓包工具来进行分析 :

  1)请求未返回数据,可能是client(客户端)请求数据错误,可能是server端处理错误。

  2)请求返回错误的数据,那就是server端(服务器端)处理错误。

  3)请求返回正确的数据,那就是前端处理server端(服务器端)返回数据有错误

  定位bug就像这样抽丝剥茧一层层排除,从而把最后剩下的可能性给找出来,说难其实也不难,但需要有足够的逻辑思维能力来推断,也需要足够的耐心去寻找bug的根源。

 

 

什么是前端和后台?

 

  常常说到的一个IT项目,包括前端开发,后台开发,软件测试,架构,项目经理,产品需求。那么对于一位优秀的软件测试工程师来说,需要区分前端和后台的工作就显得尤为重要。

  简而言之,前端一般是指界面的设计居多,他们往往需要调用后台的一个接口,进行一个HTTP请求,根据后台反馈回来的数据,渲染到页面上。从而实现按钮(如果前端只是画了页面,接口未调试,点击页面按钮是无反应的),数据显示的正常。

  测试工程师如何区分前端和后台的BUG----------- 前台的bug通常是功能、界面和兼容性等有关;后台的bug与逻辑、性能和安全性有关。与数据相关的错误、排序问题大多是后台问题,对于APP页面toast提示可能是后台给的,可能是APP给的

  1、检查接口

  前端和后台之间是通过接口文件相互联系的,同样,测试人员也是可以看到这个一接口文件,很多人以为,这一点都不重要,那你大错特错了。因为这是区分前端和后台bug的关键。

  2、情况分析

  a、检查请求的数据是什么,反馈的数据又是什么

  可以通过抓包工具来进行抓包分析。

  大多数的浏览器都有自带的抓包插件,如FireFox的FireBug插件,Chrome、360急速模式、搜狗高速模式自带的DevelopTools插件,F12开启抓包后,在NetWork中可以看到当前页面发送的每一个http请求。

  通常情况下,我们可以通过请求接口、传参和响应三部分来判断Bug,另外,也可以在浏览器的控制台进行代码调试定位。

  (1)请求接口URL是否正确

  如果请求接口URL不正确,为前端Bug;

  (2)http请求中的参数是否正确

  如果http请求中的参数不正确,为前端Bug;

  (3)如果接口URL和参数都正确,查看响应内容是否正确

  如果这种情况下响应内容不正确,则为后端Bug。

  (4)如果JS基础比较好的话,也可以在浏览器的控制台中输入JS代码进行调试

  HTTP请求中,如果是get请求,那么表单参数以name=value&name1=value1的形式附到url的后面,如果是post请求,那么表单参数是在请求体中,也是以name=value&name1=value1的形式在请求体中

b、根据接口的文件,检查数据是否正确,至于如何分析,这个就看个人的基础了,如果发送的数据是正确的,但是后台反馈的数据是不符合需求的,那就是后台的问题;如果前端没有请求接口,或者请求的时候发送数据与需求不符,那这个时候就是前端的问题了。总而言之,这种情况很多,需要各位自己多多总结经验。一位优秀的测试开发工程师,当然也离不开好的编程基础。

  前台bug定位:按F12在console中查看报错信息,对于出错的js可以在Sources下查看对应报错的资源文件,写入禅道提交给开发即可。

 

2.后端的Bug,如何准确的定位问题在哪里,如何精准的描述Bug?

  (1)查看报错日志

  查看报错日志,通过日志分析,需要有一定的经验,并且有一定的代码基础,才能更好地定位问题。

  (2)查看数据库的数据

  了解所测功能的数据表结构,测试过程中,查看数据库的数据,确认数据的正确性。

  (3)查看缓存(如Memcache、apc、redis等缓存)是否正确

 

 

 

前台定位方法

 

  前台bug定位:按F12在console中查看报错信息,对于出错的js可以在Sources下查看对应报错的资源文件,写入禅道提交给开发即可

  前台bug注意以下三个方面:

  (1)网站前台的权限控制:没有权限的用户是不能直接输入url的方式来进行访问的,必须进行登录。以后涉及到权限的测试,一定不能漏掉url的方式也需要验证一下。而在单个页面进行W3C测试时则需要去掉该权限控制。

  (2)网站前台的title,对于这个也很容易忽视。进入到不同的功能页面,title显示应该是有,并且要和你进入的页面一致。title就是在浏览器最左上角看到的那些文字

  (3)http和https的注意点:https是一种安全链接,它是需要证书的,而http就是普通链接,所以在你的系统中客户会要求某些关键的地方希望加上这种安全连接,那么此时你需要注意的是,对于不需要的安全链接的地方千万也要去重点测试,有些开发会很容易忽略这一点。

  你要打开HTTPS开头的网站,前提是该网站安装了SSL证书,只有安装了SSL证书的网站,并且开启了443端口,你才可以通过HTTPS加密协议无访问。如果没有则不能访问。

  你可要测试,比如在某个网站http协议后面加个s去访问,看能否访问成功,能成功,会显示绿色安全小锁,否则就不能访问。给你举几个安装了ssl证书,可要https访问的网站,1号店,天猫,淘宝,支付宝,百度,沃通CA,工信部网站等等

  前端bug主要分为3个类别:HTML,CSS,Javascript三类问题

 

分析bug是前台还是后台

 

  case1:文本框输入不合法的内容,点击提交按钮, 如果不合法的内容提交成功, 那应该是前后台没有做校验, 前后台都有这个bug

  case2:文本框输入合法的内容,点击提交按钮, 查看数据库中的数据和输入的内容不一致, 这个时候需要看前台传的数据是否正确,使用fiddler抓包, 查看请求头里面的数据是否和输入一致,如果一致就是后台的问题, 如果不一致,就是前台的bug

  case3:界面展示不友好, 重复提交 这些都是前台的bug

 

 

一、尽可能多收集BUG信息

1、用户发生BUG步骤描述、收集拍摄的图片、收集录制的视频,根据图片和视频扩大分析原因

2、BUG发生的环境、时间、地点

3、BUG发生的机型、手机系统版本、软件系统版本

4、用户使用的网络环境

5、用户使用的第三方软件版本

6、用户当前软件内数据进度情况

7、发生此BUG的用户量

8、发生此BUG的频率

 

 

二、头脑风暴,分析思考,根据经验和直觉猜测

1、当初测试环境、正式环境是否测过这个case?

2、用户网络环境无线网、4g网、弱网、断网,可能导致这个问题?

3、用户安装的软件是低版本,可能导致这个问题?

4、用户机型兼容问题、机型系统版本,可能导致这个问题?

5、用户当前数据状态,可能导致这个问题?

6、用户用了低版本、高版本、测试版本的第三方软件,可能导致这个问题?

7、根据业务逻辑,发散思维,猜测可能的case场景导致这个问题?

8、根据丰富经验,猜测可能是某情况导致?

9、发散思维、头脑风暴、扩大范围,猜测可能

10、查看日志、用户信息、用户数据、分析SQL

 

三、重现定位,逐个排除,缩小范围,精准定位

1、网络环境尝试重现

2、软件版本低尝试重现

3、手机类型尝试重现

4、手机系统版本尝试重现

5、第三方软件版本尝试重现

6、线上数据量大尝试重现

7、前端超时、服务器超时尝试重现

8、重复提交尝试重现

9、异常场景逻辑操作尝试重现

10、根据经验判断尝试重现

 

 

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

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

相关文章

B KB MB

1字节8位8bit 名称缩写大小1千字节 KB 2^10 1,024 字节1 兆字节 MB 2^20 1,048,576 字节1 千兆字节 GB 2^30 1,073,741,824 字节1 T字节 TB 2^40 1,099,511,627,776 字节

【业务篇】史上最全经验版用例之IOS和Android版APP版本更新、IOS版规避审核?

一、IOS app设置苹果审核 为了app提交苹果能快速审核通过,故需设置app审核状态,隐藏部分敏感功能 1、线上app版本1.0.0,新版本app2.0.0测试通过,设置2.0.0版本app审核状态,隐藏2.0.0版本部分敏感功能,提交…

python 根据文件夹大小删除修改时间比较早的文件

根据文件夹大小定时删除文件夹部分比较旧的数据 import os import time import datetime FILE_DIR E:/Djangocode/RSMDSys/static/imagedata/ 计算文件夹容量 单位为MB def fileCapacity(FILE_DIR):s0for root, dirs, files in os.walk(FILE_DIR):for f in files:ssos.path.ge…

Python之Pymysql模块操作MySQL增删改查

Python3 MySQL 数据库连接 - PyMySQL 驱动 PyMySQL 连接数据库,实现增删改查 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。 PyMySQL 遵循 Python 数据库 API v2.0 规范&#x…

python计算程序运行时间

import time if __name__ __main__:time_starttime.time()#程序位置time_endtime.time()print(花费时间,time_end-time_start) #此处单位为秒

Python之日志处理(logging模块)详解

logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等;相比print,具备如下优点 1、可以通过设置不同的日志等级,在release版本中只输出重…

神秘的安全测试思考案例(一)

定义:安全测试是在软件产品开发基本完成时,验证产品是否符合安全需求定义和产品质量标准的过程。 概念:安全测试是检查系统对非法侵入渗透的防范能力。 准则:理论上来讲,只要有足够的时间和资源,没有无法进…

STL Map学习总结

1、 Map是关联容器,以键值对的形式进行存储,方便进行查找,关键词起到索引的作用,值则表示与索引相关联的数据,以红黑树的结构实现,插入删除等操作都可以在O(log n)时间内完成 2、它的特点是增加和删除节点…

【功能业务篇】APP获取用户定位、传参经纬度思考

常用的三种定位方式有:基于GPS定位、基于基站地位、基于wifi定位。 1、基于GPS定位: GPS定位需要GPS模块(硬件)的支持,没有GPS模块是无法进行GPS定位的。 GPS定位最大的优点就是其定位精确度高(一般误差在10m内),无网络也能用;缺点就是耗电高、定位慢、室…

cmd运行python程序

先cd到当前目录,然后python XXX.py

《业务测试》手机号码格式

一、手机号码格式测试 正确手机号格式 13333333333 14444444444 15555555555 16666666666 17777777777 18888888888 19999999999 错误的手机号格式 1333333333 10位手机号 10000000000 第2位为0 11111111111 第2位为1 12222222222 第2位为2 2333…

mysql 四种存储引擎

前言 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功…

Android ADB调试之无线连接设备

Android无线调试 一、数据线连接手机和电脑(首次设置需数据线连接),开启开发者模式和USB调试,确保手机和电脑已连接 cmd下执行adb devices 显示上图1,说明已连接 二、华为手机设置 1、开发人员选项 2、USB调试 3、…

python守护线程

1、守护子进程 主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就终止其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes are not allowed to havechildren 注意:进程之间是互相独立…

【Python实战】使用python计算多种类型到期还款日

一般金融产品的账务测试时,我们会接触到还款方式,到期还款日等概念。 在自动化测试或者脚本使用中,我们需要动态的生成到期还款日去进行账务测试,这篇文章主要介绍了常见的几种到期还款日计算方式。 一、固定期限(比如…

初识python多线程

1) 在python中如何创建一个线程对象? 如果你要创建一个线程对象,很简单,只要你的类继承threading.Thread,然后在__init__里首先调用threading.Thread的__init__方法即可: import threading class MyThread(threading…

Fiddler抓包工具之Filters(过滤器)进行会话过滤

一、设置User Fiters启用 未勾选Use Filters,未启用此功能;已勾选Use Filters,已启用此功能 二、Action设置 Run Filterset now :马上执行过滤,立即生效过滤 Load Filterset: 加载本地过滤文件到fiddler Save Filt…

【pyQT5】Python3+pyQT5开发环境安装与配置

在PyQt中编写UI界面可以直接通过代码来实现,也可以通过Qt Designer来完成。Qt Designer的设计符合MVC的架构,其实现了视图和逻辑的分离,从而实现了开发的便捷。 Qt Designer中的操作方式十分灵活,其通过拖拽的方式放置控件可以随时…

C++运行界面一闪而过解决

#include<iostream> #include <stdlib.h> #切记导入这个头文件 using namespace std;int main() { cout << "Hello Word"<<endl; system("pause"); #让界面不是一闪而过 return 0; } 注意&#xff1a;VS2012以上版本才支持C 11…

【TensorFlow】TensorFlow是什么?

TensorFlow 是一个开源的、基于 Python 的机器学习框架&#xff0c;它由 Google 开发&#xff0c;并在图形分类、音频处理、推荐系统和自然语言处理等场景下有着丰富的应用&#xff0c;是目前最热门的机器学习框架。 除了Python&#xff0c;TensorFlow 也提供了 C/C、Java、Go、…