转载:BUG定位
1、web前端
- Web前端就是通常说的网页。互联网公司的前端一般包含如下内容:JavaScript、ActionScript、CSS、HTML(..ML)、Flash、交互式设计、视觉设计
 - web前端测试可能发现的问题——版面设计、交互设计、文字、性能、功能
 - bug定位通用思路:现象-->原因-->验证手段-->结论-->现象
 
- 测试bug定位原因归类:
- 测试环境相关
- 是否安装了flash及flash的版本——可能导致部分页面显示出问题,目前常用的版本诶flash10
 - 是否开启了浏览器插件——插件可能导致浏览器行为的变化,除非测试要求,否则一律禁用插件
 - 是否开启了安全软件——可能会截包、弹窗拦截、防钓鱼等
 
 - 浏览器相关
- 不同浏览器的支持标准——不同内核的浏览器对js及各种标准的支持不同,因此页面解析出来的效果可能不同。IE:trident;Firefox:gecko;Chrome:webkit;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
 - 慢速网模拟工具——firefox throttle
 
 
2、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命令以后,所有线程都继续执行
 
 
 - 日志查看命令
 
3、性能测试
- 旨在获取系统在特定一种或多种环境下,在不同的外部输入压力(包含极限)的条件下的系统各项指标的测试
 - 常用命令
- 进程相关——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定位的更多相关文章
- 【测试方法】Web测试中bug定位基本方法
		
知识总结:Web测试中bug定位基本方法 涉及知识点:测试方法 在web测试过程中,经常会遇到页面中内容或数据显示错误,甚至不显示,第一反应就是BUG,没错,确实是BUG.进一步了解这个BUG的问题出 ...
 - CentOS 7.1系统自动重启的Bug定位过程
		
[问题] 有同事反应最近有多台MongoDB的服务器CentOS 7.1系统会自动重启,分析了下问题原因. [排查过程] 1. 检查系统日志/var/log/message,并没有记录异常信息,jou ...
 - bug定位
		
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
 - 转载:定位ARM Hard Fault 的方法
		
转载自:http://www.openedv.com/posts/list/25030.htm 1.用Keil的话,可以做如下操作: 先将fault中断函数的内容改为: HardFault_Handl ...
 - curl 中关于 CURLINFO_HEADER_SIZE 的 BUG 定位及修复
		
curl 官方下载页面 CentOS7 默认安装的 curl 版本太低了,需要升级为最新版. 1. 问题描述 对接了一个接口,用来下载 PDF 文件.使用 curl 下载后,文件老是报错无法打开.接口 ...
 - 线上BUG定位神器(阿尔萨斯)-Arthas2019-0801
		
1.下载这个jar 2.运行这个jar 3.选取你需要定位的问题应用进程 然后各种trace -j xx.xxx.xx.className methodName top -n 3 这个后面要补充去看, ...
 - 前后端bug定位
		
否一致一个商品状态为status,待上架status=0,上架中status=1,下架status=2 前端bug:如:一个商品上架成功后,数据库显示的状态status=1,这时候可能是前端对应值的定 ...
 - 一例 Go 编译器代码优化 bug 定位和修复解析
		
https://mp.weixin.qq.com/s/Tyl6dSb7mHBuqqN6WvEuaw
 - gcc limits.h的bug定位看include_next和默认搜索路径
		
手编的交叉编译工具链经常报一堆宏未定义,例如下面是编译gtest的时候报_POSIX_PATH_MAX宏未定义,有时还会上报SSIZE_MAX等宏未定义: googletest/src/gtest-f ...
 
随机推荐
- 怎么在overflow-y:sroll的情况下 隐藏滚动条
			
当我们的内容超出了我们的div,往往会出现滚动条,影响美观. 尤其是当我们在做一些导航菜单的时候.滚动条一出现就破坏了UI效果. 我们不希望出现滚动条,也不希望超出去的内容被放逐,就要保留鼠标滚动的 ...
 - NO.006-2018.02.11《卜算子·我住长江头》宋代:李之仪
			
卜算子·我住长江头_古诗文网(bǔ) 卜算子·我住长江头 宋代:李之仪 我住长江头,君住长江尾.日日思君不见君,共饮长江水. 我居住在长江上游,你居住在长江下游. 天天想念你却见不到你,共同喝着长江的 ...
 - 关于 org.hibernate.TransientObjectException 异常
			
在Hibernate的关联关系中,如果一个对象A 持有 对象 B 的引用,如果先保存 A ,再保存B,那么会出现 org.hibernate.TransientObjectException 异常. ...
 - nginx安装和基础代理配置
			
mac上执行 npm install nginx 安装好后运行nginx sudo nginx 一般mac下nginx会安装在 /usr/local/etc/nginx 下 里面的nginx.conf ...
 - 随机森林算法-Deep Dive
			
0-写在前面 随机森林,指的是利用多棵树对样本进行训练并预测的一种分类器.该分类器最早由Leo Breiman和Adele Cutler提出.简单来说,是一种bagging的思想,采用bootstra ...
 - 【luogu P1962 斐波那契数列】 题解
			
题目链接:https://www.luogu.org/problemnew/show/P1962 给你篇dalao的blog自己看吧,把矩阵快速幂的板子一改就OK #include <algor ...
 - HDU 1258 Sum It Up(dfs 巧妙去重)
			
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1258 Sum It Up Time Limit: 2000/1000 MS (Java/Others) ...
 - html基础用法(下)
			
设计表格: <html> <head> <title>表格</title> <meta charset="utf-8" /&g ...
 - iOS之查看代码运行的时间
			
有时候我们想要准确的知道某段代码.某个循环执行的时间,然后分析效率等问题,这个时候就需要执行时间是多少.正好看到网上已经有人做了这个工作,我就直接摘下来了.正好也用了宏的方式计算时间,我们只要在需要计 ...
 - P1330 封锁阳光大学 DFS+染色
			
题目链接:https://www.luogu.org/problemnew/show/P1330 这个题有意思,如果能想到染色,就会很简单,但若想不到就很麻烦 要想把一条边封锁,就必须且只能占据这条边 ...