身为测试工程师,总有一道绕不过去的坎就是定位bug,这其实是非常花费时间的。
也许有很多人不以为然,觉得无非就是发现bug后提交bug管理系统,描述操作步骤,预期结果和实际结果哪里不一致,然后继续测试。并不是说这样做的不对,只是说这样做的不够好,看似节约了测试时间,实则对于项目的进度没有起到应有的推动作用。

Web前端

Web前端就是通常说的网页。互联网公司的前端一般包含如下内容:JavaScript、ActionScript、CSS、HTML(…ML)、HTML5、Flash、交互式设计、视觉设计

web前端测试可能发现的问题——版面设计、交互设计、文字、性能、功能

bug定位通用思路:现象–>原因–>验证手段–>结论–>现象

测试bug定位原因归类:

测试环境相关

是否安装了flash及flash的版本——可能导致部分页面显示出问题,目前常用的版本诶flash10

是否开启了浏览器插件——插件可能导致浏览器行为的变化,除非测试要求,否则一律禁用插件

是否开启了安全软件——可能会截包、弹窗拦截、防钓鱼等

浏览器相关

不同浏览器的支持标准——不同内核的浏览器对js及各种标准的支持不同,因此页面解析出来的效果可能不同。Firefox:gecko;Chrome:webkit;IE:trident;Safari:webkit。

浏览器的设置——禁用js;禁用弹窗;禁用cookie等

浏览器cache策略——js,css,图片等都有可能被cache住。ctrl+F5强制刷新请求

cookie——跨域,过期

网络相关

是否发出了正确的请求——请求url、参数变量。content数据

是否得到了正确的应答——http的返回值:200-正确;302-对象已移动;304-对象未修改;404-没有找到页面。返回的数据体

是否性能问题——异步请求的数量过多;网速过慢

字符编码相关

页面乱码——百度后端存储基本是使用的GBK编码,前端提交可能是UTF-8编码,后端对于非GBK编码一般采用实体存储。可能出现编码没有转换。转换的时候没有判断半个汉字(转掉了半个汉字导致雪崩)。

url错误——url路径中汉字编码使用的是utf-8编码,参数中使用系统默认编码,flash脚本中使用的都是uft-8编码。

安全相关

Xss漏洞——输入一些特定字符页面出现错乱或有恶意代码被执行,RD未对特殊字符转义完整

性能相关

图片数量——页面中同一个域的图片的数量控制在16个以下,IE会控制同一个域下图片并行的下载数量

页面抖动——异步请求的数量过多

加载失败——限速情况下,超时

bug定位常用工具

Firefox——firebug、web developer、live http headers、http fox

IE插件——httpwatch

第三方工具——fiddler、charles

慢速网模拟工具——firefox throttle、fiddler、charles

Web后端

后端包含运行在服务器上的程序,脚本和服务。比如:各种各样的逻辑处理系统,数据存储系统等。

后端可能发现的问题——逻辑的,数据的,策略的,接口的,性能的等

测试bug定位原因归类:

数据流相关

上下游模块是否连接正常——模块的ip和端口的配置,白名单黑名单配置,session授权

模块的数据发送接收是否正常——日志是否有滚动,是否显示发送了数据或接收到数据,数据是否完整,跨机房,负载均衡算法(从哪些机器获取到的数据)

非socket的数据传输——共享内存(是否分配,key的配置等),cache(是否创建,脏数据等),数据库(配置,连接,表,触发器,存储过程),文件(大小,访问权限)

模块之间的接口——协议的一致性(mcpack1,mcpack2等),字段的一致性(一个按signed解析,一个按unsigned解析),字段复用

处理逻辑相关

程序的各种配置——功能是否开启/关闭,词表是否加载,各种阈值的配置,超时配置

程序日志——日志级别,交互的流程,处理的流程

各种边界——数据边界(int,long),文件边界(空文件,分文件的边界),时间边界

各种资源并使用——Cache是否遗留脏数据,并发和死锁

系统和环境相关

系统资源——Cpu,io,句柄,内存,网络状态,数据库状态,数据库连接数

环境资源——程序版本,内核版本,网络(外网)访问权限,系统动态库不一致

程序和代码相关(常用验证手段)

确认问题出现的位置——日志中的代码行,gdb中的代码行,抛出异常显示的代码行

获取当时的运行时信息——Gdb core文件,gdb attach到进程,查看堆栈,查看寄存器,设置breakpoint,watchpoint,查看内部数据

获取程序和系统信息——Strace查看系统调用,系统状态获取(ps,top,/proc/pid/*,vmstat,netstat)

更深入的手段——反汇编,查看寄存器,gdb高级应用

后端测试bug定位

日志查看命令

查看压力——tail -f as.log | grep ‘^NOTICE’ | awk ‘{print $3}’ | uniq -c

· 排除日志中的特定内容——grep -v ‘pattern’ as.log

· 只输出感兴趣的内容——grep -o ‘proctime:toal:\d+’ as.log;grep -o ‘proctime:toal:\d+’ as.log | grep -o '\d+ ';grep -o ‘proctime:toal:\d+’ as.log | grep -o '\d+ ’ | sort -n | uniq -c

· 将wf日志归类——grep -o ‘\w+.(cpp|h):\d+’ as.log.wf | sort | uniq -c

gdb常用命令

bt——查看堆栈信息

print——打印某变量值

break——设置断点

x/i——翻译当前指令为汇编

info thread——查看所有线程,星号*标记的是当前线程

thread num——切换到线程号为num的线程

set scheduler -locking on——锁定在线程:输入continue命令以后,当前线程继续执行,其它线程不执行

set scheduler-locking off——这是默认设置,输入continue命令以后,所有线程都继续执行

性能测试

旨在获取系统在特定一种或多种环境下,在不同的外部输入压力(包含极限)的条件下的系统各项指标的测试

常用命令

进程相关——ps,top,/proc/pid/*

系统相关——vmstat,top,iostat,sar,df,lsof

网络相关——netstat

bug定位原因归类

压力工具相关

工具的功能和性能——能否达到预期压力,启动压力的机器性能,压力工具是否有异常连接关闭,压力工具如何处理异常,长连接短连接,并发的个数

工具运行环境——压力机器的带宽,是否跨机房

被测系统相关

机器性能——系统所在机器性能,机器网络带宽,机器的内存,sd卡,硬盘

系统本身——系统的下游模块的性能,系统的配置,系统的数据量,系统的特点状态(充cache,dump,merge),系统的部署,程序的bug

环境相关

操作系统相关—— 是否和线上一致,内核版本,刷脏页时间,有没有调用directIO

查看系统状态——Ps,top,/proc/pid/*, vmstat,netstat

正确的思路+丰富的业务知识+丰富的技术背景知识+较好的调试和开发能力= 强大的bug定位能力Bug定位的过程是能力提升的过程

Bug定位的过程也是境界提升的过程

软件测试bug分析定位技巧相关推荐

  1. 不得不会的软件测试bug分析定位技巧

    身为测试工程师,总有一道绕不过去的坎就是定位bug,这其实是非常花费时间的. 也许有很多人不以为然,觉得无非就是发现bug后提交bug管理系统,描述操作步骤,预期结果和实际结果哪里不一致,然后继续测试 ...

  2. 遇到bug我们如何分析定位?

    前言:日常工作中,每天可能都会遇到不同的bug,有些刚入行的测试喜欢不加分析就直接甩给开发去解决.开发比较闲还好,如果手头工作比较多,就容易烦.甚至有可能是后端的问题,但是你却把问题丢给了前端,这种事 ...

  3. 软件测试人员正确分析定位BUG小技巧

    软件测试人员测试过程中如何分析定位常见BUG 一.前置知识 1. 熟透系统业务.团队成员情况 2. 熟悉使用F12或抓包工具 3. 了解HTTP/HTTPS协议,能够区分请求URL.请求头.请求体.入 ...

  4. 如何快速定位BUG?BUG定位技巧及测试人员定位的N板斧

    很多测试人员可能会说,我的职责就是找到bug,至于找原因并修复,那是开发的事情,关我什么事? 好,我的回答是,如果您只想做一个测试人员最基本最本分的事情,那么可以这么想.但是,如果您想要在测试甚至开发 ...

  5. html+css技巧分享和IE6典型BUG分析(重温一下)

    上个星期六,给公司的一些童鞋,做了一次分享, 分享的主题是HTMl+css开发技巧 为此一个星期都没有怎么做项目,准备了一个3dppt,也就是impress.js插件, 每种类型也做了一个例子,, 讲 ...

  6. 软件测试Bug,你是怎么找bug的?bug分析的正确打开方式......

    目录:导读 前言 一. bug详细 二.获取bug具体数据 三.有效的管理bug 四.做好bug分析工作 五.深入bug分析 六.总结 前言 Bug严重级别(Severity,Bug级别):是指因缺陷 ...

  7. Sentry UDFWhiteList bug分析

    Sentry UDFWhiteList bug分析 1 简介 此手册应用于row_number.unbase64.windowingtablefunction在开启sentry后不能执行的bug分析. ...

  8. 软件测试Bug管理规范

    概述 编写目的 本文档定义bug的整个生命周期,规范bug的管理流程.Bug在流转的过程中有章可循.规范bug严重等级与bug解决优先级,使开发人员与测试人员能根据此文档准确判断bug的严重程度并加以 ...

  9. 考研:研究生考试(十五天学完)之研究生学霸重点知识点总结之考研必知(考研时间/科目/必备物件)、【考研政治】/【考研英语】/【考研数学】经验总结(历年规律分析、技巧总结、经验分享)

    考研:研究生考试(十五天学完)之研究生学霸重点知识点总结之考研必知(考研时间/科目/必备物件).[考研政治]/[考研英语]/[考研数学]经验总结(历年规律分析.技巧总结.经验分享) 文章转自: 考研: ...

最新文章

  1. 利用负载均衡优化和加速HTTP应用
  2. 马云不会因支付宝事件走下神坛
  3. 黑客用python还是ruby-Python、Lua和Ruby之优劣
  4. document 获得元素节点,属性节点,文本节点。
  5. Matlab:成功解决Expression or statements is incorrect--possibly unbalanced (,{,[.
  6. 深入浅出讲解:php的socket通信
  7. nginx动静分离配置_Nginx动静分离
  8. Bootstrap创建输入框组
  9. V-SQL的简单使用
  10. vi vim 字符串替换
  11. 硬盘格式化怎么操作 硬盘格式化后数据还在吗
  12. 哦豁,女朋友都能被别人撩走,还不赶快去Coding回来
  13. 技术管理者需要认识管理活动的高杠杆率
  14. python爬虫爬取网站文章
  15. Leetcode 274 H指数
  16. 《我的极品媳妇》方志强 王亚欣 小说读后感
  17. Spark 应用开发程序
  18. 【09年的MACBOK PRO 安装双系统极简教程】
  19. 22-04-23 西安 javaSE(14)文件流、缓冲流、转换流、对象流、标准流、关闭IO资源的封装类IOUtils(纳命来)
  20. LibreCAD v2.2.0源码编译,使用VS2019+Qt5.12.9+Boost1.71.0环境

热门文章

  1. C语言指针相关——经典面试题
  2. 虚拟串口工具VSPD简单使用
  3. C语言:判断两数是否互质
  4. idea怎么设置成中文
  5. 杰普(briup)软件公司JAVA培训项目《电信宽带运营支撑系统(WOSS)》
  6. fcpx如何清除缓存?Final Cut Pro X 清除缓存方法
  7. MySQL各种引擎特点简述
  8. myeclipse添加oracle,向MyEclipse添加Oracle数据库
  9. 语法7:assert - 断言
  10. frame被废除_废除用户体验设计的假神