软件测试之BUG分析定位概述(QA如何分析定位BUG)【转自 https://blog.csdn.net/kaka1121/article/details/51538979】
你是否遇到这样的场景?
QA发现问题后找到DEV说:
不好了,你的程序出问题了!
DEV(追查半小时之后):
唉,是你们测试环境配置的问题
唉,是你们数据不一致
唉,是你们**程序版本不对
唉,是**产品线的问题
当时的日志呢?
当时cpu有异常么?
可以复现么?
这里就应该是这样啊!
你是否期待这样的场景?
QA发现问题后,经分析判断,胸有成竹的找到DEV说:
你的程序出bug了,初步断定是XX类的XX判断分支有问题,应该把某某的判断一改就好了!——==定位精准==
你的程序出bug了,过去某某产品线就曾经出现过类似的问题,都是某某函数用错了,导致前端某某输入的情况下,会导致某某异常,你检查一下吧!——==经验丰富==
你的程序出bug了,应该是某某的问题。页面截屏、日志、系统资源情况、复现步骤我都记录在bug系统了,请尽快修复——==有理有据==
RD说:
赞,和你合作很愉快!
QA做BUG定位的意义是什么?
明确一个“问题”是不是真的是“BUG”
——问题:与预期不符,表象
——BUG:代码错误,实质
避免来回扯皮,提高测试修复效率
——误报降低、原因明确
有助于理解产品内部逻辑流程
——知其然,也知其所以然
提升DEV对QA的信任度
——靠谱!
QA做BUG定位的几个误区:
心态误区:不明觉厉,与己无关
—— BUG定位没那么高大上,三板斧会用就行
手段误区:定位必须看代码
——大部分定位还用不上代码能力
目标误区:所有问题都该被当做BUG定位
——问题不一定是BUG,即便是也得考虑性价比
分工误区:DEV不需要帮助QA的bug定位
——大家目标是一致的,DEV需提供可测性支持
QA定位BUG的大体流程:
BUG定位经验建议:
碰到问题,别忙定位,首先请:
——保存犯罪现场(截图)
——确认能复现
先排除QA低级问题,避免被鄙视:
——被测程序版本/配置项/网络环境,是否ok?
——是不是自己理解错误,本来就该如此
手段多样化,别钻牛角尖,注意性价比:
——多观察日志,多熟悉工具,搞不定就放
建设自己的BUG历史知识库:
——有助于温故而知新
小版本的新BUG,可通过代码diff定位:
——代码DIFF的部分是罪魁祸首,很快
要求DEV提高可测性
——合理的debug日志、中间结果dump
——方便可控的逻辑开关
BUG定位手段:
普通青年
——日志、返回码、异常值
文艺青年
——各种非侵入式观察工具
NB青年
——代码走查、JPDA远程调试
WEB项目BUG定位
明确是浏览器端问题还是服务端问题
—— 用Fiddler/Firebug看HTTP内容是否正确
—— 到这一步,其实就可以算阶段性结论了!
浏览器端问题:
—— 用Firebug做进一步定位
服务端问题:
—— 通过观察日志和接口内容缩小怀疑范围
—— 高级手段:JPDA远程调试
一般系统的定位调试
浏览器端常见问题
是否是浏览器设置问题?
是否是浏览器兼容性问题?
用其他数据是否可以复现?
是否是cookie相关的问题?
是否正确发出了请求?
是否得到了正确的应答?
是否是网络硬件原因?
是否是JS跨域问题?
是否是前后台接口不一致问题?
是否是字符编码带来的问题?
使用Firebug 和 Fiddler
Firebug教程视频:
http://www.56.com/u13/v_NjQzMjcwMzQ.html
Fiddler教程:
http://wenku.baidu.com/view/32b6052f6c85ec3a87c2c5af.html
后台服务定位手段
输入条件构造
网络通信包(驱动、桩、真实的上下游模块)
数据文件
配置文件(包括词表,黑白名单等)
共享内存
输出检查
网络通信包
数据文件
日志(尤其是异常日志)
监控:
系统监控:cpu、句柄、IO、内存
模块级监控:内存结构体信息
调试DEBUG
JPDA打断点
后台服务常见问题
自顶向下排查(从系统入口模块开始)
是内部逻辑问题还是下游数据问题?
是否是某些配置下发生的问题?
日志中是否发现线索?
系统资源情况中是否发现线索?
是否是边界值、并发等问题?下游模块是否交互正常?
是否是多线程下的问题?
是否是大压力下的问题?
是否是不同模块间接口的定义不一致?
是否和服务器软件版本及设置有关?
自底向上排查(从系统末端模块开始)
最底层的模块是否正常收到了请求?
是内部逻辑问题还是上游请求问题
NB青年必备:JPDA
参见:http://blog.csdn.net/kaka1121/article/details/51008195
相关博客:
http://blog.csdn.net/nancybaocool/article/details/38960945
相关文档:
http://wenku.baidu.com/link?url=Fd_n31TBT5JqggblSpohGOP9-BAuq-QkctQu3O6x0jjDfnXwE4lj1usH0CBznax0GqDXYTPfsfembvil5JpExWb08xzJI8yNZoZuKkNSn9C
软件测试之BUG分析定位概述(QA如何分析定位BUG)【转自 https://blog.csdn.net/kaka1121/article/details/51538979】的更多相关文章
- crontab 问题分析 - CSDN博客 https://blog.csdn.net/tengdazhang770960436/article/details/50997297
cd /mnt/tools/trunk/plugins/personas; python update_keywords.py crontab 问题分析 crontab 问题分析 - CSDN博客 ...
- 记一次压测问题定位:connection reset by peer,TCP三次握手后服务端发送RST_网络_c359719435的专栏-CSDN博客 https://blog.csdn.net/c359719435/article/details/80300433
记一次压测问题定位:connection reset by peer,TCP三次握手后服务端发送RST_网络_c359719435的专栏-CSDN博客 https://blog.csdn.net/c3 ...
- 软件需求规格说明书(转自http://blog.csdn.net/li_canhui/article/details/6927540)
转自http://blog.csdn.net/li_canhui/article/details/6927540 1概述 1.1编写目的 指出编写<需求规格说明书>的目的.下面是示例: 编 ...
- RTP协议分析(转自:http://blog.csdn.net/bripengandre/article/details/2238818)
RTP协议分析 第1章. RTP概述 1.1. RTP是什么 RTP全名是Real-time Transport Protocol(实时传输协议).它是IETF提出的一个标准,对应的RFC文 ...
- 各大型网站架构分析收集-原网址http://blog.csdn.net/lovingprince/article/details/3379710
1. PlentyOfFish 网站架构学习http://www.dbanotes.net/arch/plentyoffish_arch.html 采取 Windows 技术路线的 Web 2.0 站 ...
- linux下各种格式软件的安装(引用http://blog.csdn.net/zyz511919766/article/details/7574040)
首先介绍两个简单的方式 第一:sudo apt-get install packagename 命令 如果我们知道我们要安装的软件的确切的名称,那么我们可以简单的通过此条命令来获取和安装软件.apt- ...
- Cocos2d-x3.3RC0 Cpp-test分析之NewAudioEngineDemo(转:http://blog.csdn.net/yuxikuo_1/article/details/41081453)
#ifndef __NewAudioEngineDemo__NewAudioEngineDemo__#define __NewAudioEngineDemo__NewAudioEngineDemo__ ...
- 软件测试之BUG分析定位概述(QA如何分析定位BUG)
你是否遇到这样的场景? QA发现问题后找到DEV说: 不好了,你的程序出问题了! DEV(追查半小时之后): 唉,是你们测试环境配置的问题 唉,是你们数据不一致 唉,是你们**程序版本不对 唉,是** ...
- x264源代码学习1:概述与架构分析
函数背景色 函数在图中以方框的形式表现出来.不同的背景色标志了该函数不同的作用: 白色背景的函数:不加区分的普通内部函数. 浅红背景的函数:libx264类库的接口函数(API). 粉红色背景函数:滤 ...
随机推荐
- JAVA之方法的重载
package com.test; //方法重载(overload)定义://1.方法名称相同//2.方法的参数类型.个数.顺序至少有一项不同//3.方法的返回类型可以不同//4.方法的修饰符可以不同 ...
- django 分页django-pure-pagination
虽然django自带了一个paginator,但不是很方便,我们使用django-pure-pagination github地址https://github.com/jamespacileo/dja ...
- wget jdk
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-co ...
- Java获取运行环境信息
在做视频截取封面的时候用到了ffmpeg.我采用的是通过Java调用bat或sh脚本然后生成图片文件. 在线上使用的是Centos 7.所以程序中需要获取到当前运行环境的信息来选择调用bat命令还是s ...
- .NET MVC执行过程 及 生命周期步骤
1.网址路由比对 2.执行Controller与Action 3.执行View并返回结果 Request 请求到来 IIS 根据请求特征将处理权移交给 ASP.NET UrlRoutingModule ...
- How does a single thread handle asynchronous code in JavaScript?
原文:https://www.quora.com/How-does-a-single-thread-handle-asynchronous-code-in-JavaScript ----------- ...
- AForge.NET Framework-2.2.5
http://www.aforgenet.com/framework/downloads.html AForge.NET Framework-2.2.5 简介 AForge.NET是一个专门为开发者和 ...
- OpenSSL Heartbleed "心脏滴血"漏洞简单攻击示例
转自:http://www.lijiejie.com/openssl-heartbleed-attack/ OpenSSL Heartbleed漏洞的公开和流行让许多人兴奋了一把,也让另一些人惊慌了一 ...
- Python类定义和类继承详解
类实例化后,可以使用其属性,实际上,创建一个实例之后,可以通过类名访问其属性,如果直接使用类名修改其属性,那么直接影响已经实例化的对象. 类的私有属性: __private_attrs 两个下划线开头 ...
- asp.net 导出excel 中文乱码解决方法 (转)
用我转载的上一篇文章 Asp.net中把DataTable或DataGrid导出为Excel 导出的文档,中文有乱码现象,其实要解决中文乱码很简单,设置一下字符集.如下: // 设置编码和附件格式 c ...