你是否遇到这样的场景?

QA发现问题后找到DEV说:

不好了,你的程序出问题了!

DEV(追查半小时之后):

唉,是你们测试环境配置的问题

唉,是你们数据不一致

唉,是你们**程序版本不对

唉,是**产品线的问题

当时的日志呢?

当时cpu有异常么?

可以复现么?

这里就应该是这样啊!

你是否期待这样的场景?

QA发现问题后,经分析判断,胸有成竹的找到DEV说:

你的程序出bug了,初步断定是XX类的XX判断分支有问题,应该把某某的判断一改就好了!——==定位精准==

你的程序出bug了,过去某某产品线就曾经出现过类似的问题,都是某某函数用错了,导致前端某某输入的情况下,会导致某某异常,你检查一下吧!——==经验丰富==

你的程序出bug了,应该是某某的问题。页面截屏、日志、系统资源情况、复现步骤我都记录在bug系统了,请尽快修复——==有理有据==

RD说:

赞,和你合作很愉快!

QA做BUG定位的意义是什么?

  1. 明确一个“问题”是不是真的是“BUG”

    ——问题:与预期不符,表象

    ——BUG:代码错误,实质

  2. 避免来回扯皮,提高测试修复效率

    ——误报降低、原因明确

  3. 有助于理解产品内部逻辑流程

    ——知其然,也知其所以然

  4. 提升DEV对QA的信任度

    ——靠谱!

QA做BUG定位的几个误区:

  1. 心态误区:不明觉厉,与己无关

    —— BUG定位没那么高大上,三板斧会用就行

  2. 手段误区:定位必须看代码

    ——大部分定位还用不上代码能力

  3. 目标误区:所有问题都该被当做BUG定位

    ——问题不一定是BUG,即便是也得考虑性价比

  4. 分工误区:DEV不需要帮助QA的bug定位

    ——大家目标是一致的,DEV需提供可测性支持

QA定位BUG的大体流程:

BUG定位经验建议:

  1. 碰到问题,别忙定位,首先请:

    ——保存犯罪现场(截图)

    ——确认能复现

  2. 先排除QA低级问题,避免被鄙视:

    ——被测程序版本/配置项/网络环境,是否ok?

    ——是不是自己理解错误,本来就该如此

  3. 手段多样化,别钻牛角尖,注意性价比:

    ——多观察日志,多熟悉工具,搞不定就放

  4. 建设自己的BUG历史知识库:

    ——有助于温故而知新

  5. 小版本的新BUG,可通过代码diff定位:

    ——代码DIFF的部分是罪魁祸首,很快

  6. 要求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)的更多相关文章

  1. 软件测试之BUG分析定位概述(QA如何分析定位BUG)【转自 https://blog.csdn.net/kaka1121/article/details/51538979】

    你是否遇到这样的场景? QA发现问题后找到DEV说: 不好了,你的程序出问题了! DEV(追查半小时之后): 唉,是你们测试环境配置的问题 唉,是你们数据不一致 唉,是你们**程序版本不对 唉,是** ...

  2. 《Google软件测试之道》【PDF】下载

    <Google软件测试之道>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382198 内容介绍 每天,Google都要测试和发布 ...

  3. 《Google软件测试之道》摘录

    以下是最近看的一本书<Google软件测试之道>里的一些摘录,收获很多. 1.讨论测试开发比并没有什么意义,如果你是一名开发人员,同时也是一名测试人员,如果你的职位头衔上有测试的字样,你的 ...

  4. 《Google软件测试之道》基础

    <Google软件测试之道>,一直听朋友讲起这本书,出于琐事太多,一直没机会拜读,最近部门架构觉得我们IT部门的技术太low,就给我们挑选了一些书籍,让我们多看看... 个人的一种学习习惯 ...

  5. 《Google软件测试之道》简介

    <Google软件测试之道>,一直听朋友讲起这本书,出于琐事太多,一直没机会拜读,最近部门架构觉得我们IT部门的技术太low,就给我们挑选了一些书籍,让我们多看看... 个人的一种学习习惯 ...

  6. 《Google 软件测试之道》摘录

    最近刚刚看完<Google 软件测试之道>,受益颇多,遂记录下: 只有在软件产品变得重要的时候质量才显得重要 第一章:谷歌软件测试介绍 角色介绍 SWE(Software Engineer ...

  7. google软件测试之道--读后笔记

         看完google软件测试之道,以前有认真看过一次,今天又重新看了一遍.   在google,测试人员严格区分为SET和TE.SET前期深度参与项目的开发,推动开发人员的自测,从破坏者的角度寻 ...

  8. 小课堂week14 Google软件测试之道

    读<Google软件测试之道> 在IT领域,Google是一面旗帜,是一家非常善于思考善于尝试的公司.随着面临挑战的不断增大,传统的测试开展方式也越来越力不从心,这本书讲述的就是一次完整的 ...

  9. google软件测试之道读后感(一)

    这几天在抽空读一本新书,久负盛名的<google软件测试之道>.之前在网络上一点一点地看过它的英文版,很受触动,还做了很长的读书笔记,现在看到了中文版,才恍觉之前的好些理解存在不恰当的地方 ...

随机推荐

  1. 学习ASP.NET Core Razor 编程系列六——数据库初始化

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  2. JavaScript 图

    TypeScript方式实现源码 // 图的遍历算法 // 算 法 数据结构 描 述 // 深度优先搜索 栈 通过将顶点存入栈中,顶点是沿着路径被探索的,存在新的相 // 邻顶点就去访问 // 广度优 ...

  3. python selenum 爬取淘宝

    # -*- coding:utf-8 -*- # author : yesehngbao # time:2018/3/29 import re import pymongo from lxml imp ...

  4. HTTP响应状态解析

    100 客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应.服务器必须在请求完成后向客 ...

  5. Mac下安装oh-my-zsh

    Mac下自带的终端并不好用,当你打开终端的时候是一个白花花的窗口,其实Mac自带几种shell,默认使用的是bash,可以通过 cat /etc/shells 查看几种shell bin/bash / ...

  6. [HNOI 2013]数列

    Description 题库链接 给你四个数 \(N,K,M,P\) ,让你生成一段长度为 \(K\) 严格单调递增序列,并且满足: 第一位可以为任意元素: 相邻两位的差值不超过 \(M\) : 序列 ...

  7. [Luogu 3919]【模板】可持久化数组(可持久化线段树/平衡树)

    Description 如题,你需要维护这样的一个长度为 N 的数组,支持如下几种操作 在某个历史版本上修改某一个位置上的值 访问某个历史版本上的某一位置的值 此外,每进行一次操作(对于操作2,即为生 ...

  8. ●HDU 1695 GCD

    题链: http://acm.hdu.edu.cn/showproblem.php?pid=1695 题解: 容斥. 莫比乌斯反演,入门题. 问题化简:求满足x∈(1~n)和y∈(1~m),且gcd( ...

  9. 【网络流】【BZOJ1061】【NOI2008】志愿者招募

    原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1061 题意:问你如何购买志愿者使得满足题意的总费用最小. 解题思路:首先,由于志愿者存在的 ...

  10. bzoj 1085: [SCOI2005]骑士精神

    Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士,且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵 ...