0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Bug定位的过程

电子工程师 来源:全栈软件测试在线 作者:全栈软件测试在线 2022-08-08 16:11 次阅读

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

1

web前端

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

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

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

21ffc746-16c1-11ed-ba43-dac502259ad0.jpg

测试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

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 'proctimed+' as.log;grep -o 'proctimed+' as.log | grep -o 'd+ ';grep -o 'proctimed+' 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定位能力Bug定位的过程是能力提升的过程

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

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5304

    浏览量

    119897
  • 代码
    +关注

    关注

    30

    文章

    4732

    浏览量

    68274
  • BUG
    BUG
    +关注

    关注

    0

    文章

    155

    浏览量

    15639

原文标题:你真的会软件测试bug分析定位嘛

文章出处:【微信号:全栈软件测试在线,微信公众号:全栈软件测试在线】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    配网行波故障定位装置的研究过程

    配网行波故障定位装置的研究过程‌ 在电力行业,配网故障的快速准确定位是保障电网稳定运行和高效维护的关键。随着技术的不断进步,行波故障定位技术因其高精度和快速性而备受关注。本文深圳鼎信智
    的头像 发表于 09-03 15:39 196次阅读

    stm32H7 HAL库中存在的bug

    stm32H7 hal 库里面的以太网代码,坑了鱼鹰很多次(不知道最新版是否已经修复了这些bug),这里分享一篇网上的文章,因为鱼鹰也遇到过,靠它解决了其中一个编译优化问题,在此感谢作者。不过hal
    的头像 发表于 08-12 17:37 731次阅读

    隧道施工为什么要做人员定位

    隧道施工是一个复杂的过程,涉及到许多工人和机器在有限的空间内进行操作。为了确保施工过程的安全性和生产效率,在施工期间对工人的定位非常重要。
    的头像 发表于 08-10 15:06 358次阅读

    工厂为什么要做人员定位

    人员定位是一种现代化的管理方式,被广泛应用于工厂生产管理中。工厂为什么要做人员定位呢?原因如下: 在工厂生产过程中,人员定位可以帮助企业实现对生产现场的精准监管和管理,提高生产效率,减
    的头像 发表于 08-06 11:41 313次阅读
    工厂为什么要做人员<b class='flag-5'>定位</b>?

    防爆定位信标与防爆定位基站有什么区别?

            防爆定位信标与防爆定位基站都是组成人员定位系统的硬件设备。一套完整的人员定位系统由硬件设施和软件系统组成,其中硬件设施包括人员定位
    的头像 发表于 07-19 10:56 414次阅读

    助力程序员告别困扰已久的梦魇-Bug

    程序员的噩梦是什么?不用怀疑,就是让你加班到崩溃的Bug!下面是经过业界大佬们“长期加班”积累的小妙招,助力你离早下班又进一步~一、定位Bug范围及性质要有效解决问题,首先要缩小范围,集中关注最近
    的头像 发表于 07-02 08:10 255次阅读
    助力程序员告别困扰已久的梦魇-<b class='flag-5'>Bug</b>

    为什么UWB定位技术适用于室内定位

    UWB室内人员定位原理 UWB室内人员定位技术只是属于无线定位技术的一种。流行的无线定位技术包括GPS定位、北斗
    的头像 发表于 06-19 17:10 608次阅读
    为什么UWB<b class='flag-5'>定位</b>技术适用于室内<b class='flag-5'>定位</b>?

    BUG收集】为昕原理图设计EDA软件(Jupiter)免费评测活动常见问题及BUG收集

    感谢各位参与评测活动的工程师,请先认真阅读评测规则和本帖顶部的视频讲解。 如遇到bug可以在本帖反馈,会由为昕EDA的工程师们为各位解答。 【软件及使用指南】 软件使用指南见本帖底部视频 软件本体请
    发表于 04-25 18:23

    蓝牙定位技术:演进与广泛应用

    蓝牙定位技术是一种基于蓝牙信号的室内和室外定位解决方案。随着技术的不断发展,蓝牙定位已经取得了显著的进展,广泛应用于商业、工业、医疗和消费领域。本文将深入探讨蓝牙定位技术的演进
    的头像 发表于 01-05 10:24 491次阅读

    PLC定位控制项目配置过程

    对于离散控制,通常使用STL、LAD、SCL和Graph;对于过程控制例如西门子的PCS7,使用CFC和CEM,这不是编程方式而是设计方式,如果还有顺序控制,可以使用SFC(相当于Graph)。
    发表于 12-27 15:12 502次阅读
    PLC<b class='flag-5'>定位</b>控制项目配置<b class='flag-5'>过程</b>

    BLE蓝牙定位基站介绍

    多种协议,能够满足不同行业的需求:例如:电子门禁、电子围栏等。 一、蓝牙定位基站采用模块化设计,便于维护和升级。 采用低功耗设计,满足设备长时间工作需求。蓝牙定位基站的主要作用是实现车辆在运输过程中的
    的头像 发表于 12-21 17:05 757次阅读

    如何对pcb板安装定位

    在PCB板的生产与组装过程中,安装定位孔是一个重要的环节。合理配置并准确安装定位孔,不仅可以提高PCB板的组装效率和精度,还有助于保证电路板的稳固性与可靠性。本文将详细介绍如何对PCB板进行安装
    的头像 发表于 12-20 14:36 6227次阅读

    pcb光学定位要求有哪些

    PCB(印刷电路板)是电子设备中不可或缺的重要组成部分,其质量和精度对于整个设备的性能和使用寿命具有至关重要的影响。在PCB的生产过程中,光学定位是一项关键技术,它对于确保PCB的精度和一致性
    的头像 发表于 12-13 18:07 1042次阅读

    暂停Debian的升级:内核 6.1.64 ext4 Bug警报

    Debian 开发人员正在积极寻找解决方案,并会在其可用时提供更新。与此同时,用户可以通过访问此处的 Debian bug 追踪页面了解该 bug 的进展情况并获取更多信息。
    的头像 发表于 12-10 14:53 1050次阅读
    暂停Debian的升级:内核 6.1.64 ext4 <b class='flag-5'>Bug</b>警报

    基于UWB模块TDoA定位和PDoA定位应用讲解

    时间差异来确定标签的位置。通过记录信号到达时间并计算不同信号的时间差异,系统推算出标签相对于各个基站的位置信息。PDoA定位系统则是利用信号传播过程中的相位差异来测量
    的头像 发表于 12-01 17:49 1053次阅读
    基于UWB模块TDoA<b class='flag-5'>定位</b>和PDoA<b class='flag-5'>定位</b>应用讲解