如何正确的找BUG

软件测试Bug,你是怎么找bug的?bug分析的正确打开方式...... Bug严重级别(Severity,Bug级别):是指因缺陷引起的故障对软件产品的影响程度,由测试人员指定。A-Crash:造成系统或应用程序崩溃、死机、系统挂起,或造成数据丢失B-Major:系统的主要功能部分丧失、数据不能保存,单个功能失效导致多个相关功能均失效C-Minor:次要功能没有完全实现但不影响使用D-Trivial:使操作者不方便或遇到麻烦,但它不影响功能的操作和执行E-Nice to Have(建议):建设性的意见或建议。 阅读详情

什么是BUG

漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。具体举例来说,比如在Intel Pentium芯片中存在的逻辑错误,在Sendmail早期版本中的编程错误,在NFS协议中认证方式上的弱点,在Unix系统管理员设置匿名Ftp服务时配置不当的问题都可能被攻击者使用,威胁到系统的安全。因而这些都可以认为是系统中存在的安全漏洞。bug狭义的概念是指软件程序漏洞或缺陷,广义的概念还包括测试工程师或用户所发现和提出的软件可更改的细节、或与需求文档存在差异的功能实现等。

简单点说就是 程序不按照你的预期执行,或者程序直接报错了。在每个程序员的职业生涯中都会碰到或多或少的bug,有人写的程序bug就是少,有人写的程序bug就是很多。这是因为每个人的对技术的广度和深度都不同。知道技术的原理写起来代码肯定bug会少些,不懂原理写起来肯定错误百出。但是即便你精通各种技术还是会出现bug,这是不可避免的。

对待BUG的态度

我见过无数程序员一看到程序出错了就很紧张,仿佛报错要他命似的。乱了阵脚,其实报错不可怕,报错都是可以处理的。你看到哪里报错找哪里,找到哪一行想想那一行为啥会报错。直接debug不就可以了。报错没事,心态放平慢慢找,一点一点debug,找到为什么报错就可以了。其实做久了才知道,报错的bug一点都不可怕,不报错的bug才可怕,逻辑完全正确,但就是不按照你预期的走。这种bug往往搞得你怀疑人生。

如何找BUG

找bug的前提是复现问题,很多bug都是在特定的情况下才会出现的,就像我们经常碰到的在自己电脑上没问题在别人电脑上就有问题,或者在外网环境没问题,在内网环境就不行。我们碰到这种情况要第一时间复现问题,如果复现不了问题你肯定解决不了。切记不能自己闷着头瞎调试。你的环境没问题你还在你电脑上调试,能调试出来才怪了。你要去有问题的环境找问题,内网有毛病你就去内网复现问题,复现了再比较和外网有啥区别慢慢解决,切不可产生畏战心理,其实好多问题只要找到根源就豁然开朗了。

一个不太好找的BUG

去年冬天公司安排我去哈尔滨培训,培训前我们把要培训的功能测试了一遍,其他有问题的很快改了,偏偏我就遇到了一个问题,有一个接口请求后台,后台从session里面拿数据,但是后台的session对象一直为null,这就让人很费解。session默认过期时间是30分钟而我一直在请求后台,session是不可能失效的。我在本地怎么测怎么没问题。先说一下我们的环境,开发的时候我们是前端一个项目后端一个项目,前端系统配置菜单,前端直接请求后端拿数据。而我们发布后就成了,前端加页面需要去另一个系统加,另一个系统是一套.net的系统,我们在.net系统里面配置前端页面地址,菜单名,权限等。经常做后台管理系统的同学应该知道一般是上边一栏菜单,左边一栏菜单。中间是功能页面。中间页面是iframe,是一个系统。而我们就不一样了,上边和左边的菜单栏是一个系统,中间的功能页是嵌的我们前端系统的页面地址,中间功能页也是iframe。开始我感觉和这些没问题,既然功能页都是iframe应该没区别。但是我在本地怎么也复现不了。这就很无奈,找bug你一定要找到蛛丝马迹。我就看前端页面发送的请求,看了半天才发现问题。

image

我们看响应头有一个 Set-Cookie 这里给浏览器了一个Cookie 。看似没啥毛病,但是我发现每一次请求后端都会给浏览器一个key为JSESSIONID的Cookie,而且每次请求时请求头都不会把这个Cookie发送到后台。这就让人很费解。这样我也就明白了为啥后台用Session对象的时候为null了。现在我们就找为啥请求的时候不将Cookie发送给后台,知道了为啥不发送也就知道了问题所在。后台给浏览器Cookie的时候别的都挺正常的但是SameSite=lax这个东西我看不懂。

经过我的百度查到了问题知道了这个属性是啥意思。

简单点来说就是谷歌为了安全性,在浏览器80版本以后就不允许不同站点的原页面和iframe页面请求时发送Cookie,因为我们内网发布的菜单栏和iframe是俩系统也就是俩站点,所以iframe的页面发送的请求都不带着Cookie,自然也就导致后台拿不到Session了。而外网开发环境菜单栏和iframe是一个系统所以iframe页面发送的请求都带着cookie,也就不会导致后台取不到Session了。至此我们发现问题所在。接着想办法解决就可以了。

其实这个BUG将出来看似很简单,其实不然,首先你要复现问题,其次你一定要知道Session和Http协议的工作原理,如果你不懂这俩技术的原理是肯定找不到问题所在的。

系统不存在一会行一会不行

还有一个问题,就是我们一台服务器上部署了两个后台系统,一个是A系统占用80端口,一个是B系统占用8080端口。有些前端页面请求了A系统的后台,有些前端页面请求了B系统的后台。别人给我反映经常丢Session(也就是上面说的后台拿不到Session对象)一会好使一会不好使,好几个人都没找到咋回事,找到我了,其实我也很懵。但是我不认同别人的说法,系统绝对不存在一会可以一会不可以,可以的时候一定有可以的原因,不可以的时候一定有不可以的原因。有因必有果。经过我的测试如果一直使用请求A系统的页面是没问题的,一直使用请求B系统的页面也是可以的。但是打开过请求B系统的页面再打开请求A系统的页面必报错。然后我发现了问题所在,第一次打开请求B系统的页面B系统会响应给浏览器一个key为JSESSIONID的Cookie,因为这个浏览器第一次请求B系统。但是JSESSIONID的Path属性为/ 而且Cookie作用域和端口没关系,如果这时候我们打开请求A系统的页面也会把这个JSESSIONID带过去,而这个值和A系统没关系,A系统也就会重新给浏览器一个JSESSIONID,自然A系统也就拿不到Session了。出现BUG第一步一定是要复现,如果复现不了肯定找不到,其次要找痕迹想办法找到哪里不正常,懂原理。如果我不懂Cookie的作用域和端口没关系肯定找不到原因所在。

 

AutoGen模块中找不到名为AssistantAgent的属性,如何解决? 🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。 阅读详情

相关推荐

告别踩坑!S32K3xx芯片上RTD-SDK的DFLASH与FEE模块配置全流程(基于S32DS)

本文详细解析了在NXP S32K3xx系列MCU上配置RTD-SDK的DFLASH与FEE模块的全流程,基于S32DS开发环境。从Cache配置、Mem_43_InFls模块设置到MemAcc模块的三种调用模式,提供了实战代码示例和常见问题排查表,帮助开发者高效完成存储管理配置,避免常见错误。

weixin_42653691的博客 268

教你找BUG

一、BUG的来源分为以下几类: 1,界面类bug: 如:按钮显示不完整、无法点击,文字超出选框,滚动条双层等;显示必填项,可以不填写提交等,数据类的显示NAN,NULL等 2,文案类bug: 错别字,如登录写成登陆;提示内容与预期不对应;没有提示文案等; 3,逻辑类bug: 如:提交一个审批单,多次提交显示多个一样的单子,或者提交审批后,审批人打开了页面点击审批的时候提交人选择了删除单子,审批人无法操作;下载Excel两百数据没问题,更多数据报错、乱码等;抢购功能,10个库存,但是100个人都下

weixin_60427331的博客 3206

工业级RFID读写器|识读器CK-LR08-E00通过以太网TCPIP自由协议与汇川PLC控制器联机与通讯实例方案

本文以工业级RFID读写器CK-LR08-E00和汇川PLC控制器H5U是实例介绍工业级RFID读写器CK-LR08-E00通过以太网TCPIP自由协议与汇川PLC控制器联机与通讯方案。

华翔天诚科技 4370

查找bug的方法(随笔)

2.后通过查询From了解到是和镜像有关,测试把java:8换成了java:7或者java:9或centos:7都可以,发现可以编译通过,但是服务器允许会报错,因为代码sdk用的是1.8版本,通过查询docker镜像查询到有镜像java:7和 java:9没有镜像java:8,就想到可能是被删除了。这种就是根据错误日志分析故障,很多时候遇到故障直接把故障信息copy到百度,这种确实可以解决一部分问题,但是遇到很多问题,直接搜索是搜不到的,需要分析后查到根本原因,才能找到解决方案。1.入(出)口推进法。

a289973483的博客 2977

碳纳米管NRAM:突破5纳米制程的下一代存储技术

在半导体存储领域,非易失性存储器和随机存取存储器是两大基础技术方向。传统DRAM速度快但断电易失,NAND Flash非易失但写入慢、寿命有限,两者在先进制程下都面临物理极限挑战。碳纳米管作为一种新型纳米材料,凭借其优异的导电性、机械强度和尺寸微缩潜力,为存储技术革新提供了物理基础。基于碳纳米管的NRAM技术,通过控制纳米管间的可逆接触实现电阻状态切换,兼具DRAM级速度和Flash的非易失性,同时具备近乎无限的擦写寿命和出色的CMOS工艺兼容性。这项技术不仅能满足5纳米以下制程的存储需求,在数据中心缓存、

weixin_42576804的博客 427

Conformal LEC逻辑等价性检查介绍和参考脚本

分为三个产品:Conformal L、Conformal XL、Conformal GXL。L是功能性检查,XL支持复杂数据通路的综合和APR优化,GXL支持定制的stdcell和定制memory的检查。Cadence Conformal Equivalence Checker,就是常说的LEC,可以用来验证RTL、门级网表、甚至spice网表的逻辑等价性。do文件是conformal的脚本文件,可以由综合工具(RTL Compiler/Genus)自己产生(write_do_lec),也可以手写。

NanDigits的博客 7246

查找bug的几个方法

2022年已经过去了,新的一年到来了,而我也又老了一岁。过去的一年又带了几个小弟,总有一些经验要给他们分享,与其小圈子说不如发个文,让优快云上的小朋友们也借鉴借鉴吧。

4117

【机器人】机械臂控制入门技术栈分享

机械臂控制入门技术栈分享1.前言2.机器人控制入门技术栈2.1.空间描述和变化2.2.运动学分析2.3.动力学建模2.4.控制入门学习3.进阶部分3.1.机器人参数辨识3.2.非线性控制3.3.现代机器人描述方法:指数坐标4.总结 1.前言 今天看到优快云上有个分享个人技术栈的活动,虽然我不是一个正规的程序员,也不搞前端、后端这些,但我一直在优快云上通过写博客对我的学习进行总结,于是我突发奇想,不如我也写一下我的个人技术栈,针对机械臂控制入门的,因为我水平也不高,所以本文内容也许不够饱满,也不够准确,但

要恰饭得嘛 5856

解决bug问题,查找bug的方法

想告别“写代码2分钟,找bug两小时”吗?,就必须掌握查找bug的能力 下面这些方法都是我这几年解决bug常用的 一、定位bug:如果在控制台中看不出bug,可以使用以下方法帮助查找bug 1、IDE编译器debug调试代码,在可疑的地方设断点,查看程序是如何走的,问题出在哪 2、二分法定位,把可疑的代码分成两份,注释掉一半,再把错误的一半又分成两份,不断进行排错 3、输出日志,logger.info(“XXX”),就算程序出现错误,只要程序走到那里就可以看到输出的日志 4、Print输出可能有问题的

qq_41936224的博客 1万+

Polymarket链上预测市场自动化交易代理开发实战指南

自动化交易代理是量化交易的核心工具,它通过预设的算法规则,自动执行市场分析、决策与下单操作,旨在提升交易效率与纪律性。其技术原理通常涉及实时数据获取、策略引擎计算、交易执行与风险管理等模块的协同工作。在区块链与DeFi领域,这类代理的价值尤为凸显,能够高效处理链上合约交互,捕捉去中心化市场的套利机会。具体到应用场景,链上预测市场如Polymarket,为自动化策略提供了丰富的博弈标的。本文以Polymarket交易代理项目为例,深入剖析其基于Node.js与ethers.js的技术栈实现,详解从环境配置、策

weixin_42533910的博客 581

31、贝叶斯认知建模与隐马尔可夫模型:理论与应用

本文探讨了贝叶斯认知建模与隐马尔可夫模型(HMM)的理论基础及其在认知科学和神经科学中的应用。重点介绍了贝叶斯定理和HMM的基本原理,并结合实际案例,如情绪识别系统和脑机接口(BCI),展示了它们在处理复杂认知任务中的强大能力。文章还讨论了贝叶斯-HMM模型的技术细节、优势与局限性,以及未来的发展前景。

meat5的博客 141

你是怎么找bug的?bug分析的正确打开方式

本文阐述了软件Bug的严重级别分类(从Crash到建议级别),并强调了Bug分析在软件质量保障中的重要性。文章从四个方面展开:首先定义Bug的本质和范围,说明其贯穿整个软件生命周期;其次介绍获取和管理Bug数据的方法,强调标准化流程和工具应用;然后详细解析Bug分析的目的和根本,指出分析最终应聚焦于人员能力提升;最后提出深入分析的六个维度,包括数据积累、多角度统计分析和可视化呈现。文章认为有效的Bug分析能促进软件开发过程改进和组织能力提升,是实现软件质量精细化管理的关键手段。

NHB222222的博客 1166

Transformer实战(39)——多模态生成式Transformer

能够理解多种类型输入的模型被称为多模态模型。多模态学习是人工智能 (Artificial Intelligence, AI) 领域的重要研究方向之一,长期受到众多研究人员的关注。本节将介绍使用多模态模型的生成式 AI,包括文本到图像 (text-to-image) 和文本到音乐 (text-to-music) 的生成模型。将介绍 Stable Diffusion 及其工作原理,同时也将介绍 MusicGen 和 AudioGen 模型。

盼小辉丶的博客 2403

你是如何找bug的?bug分析的正确打开方式

什么是bug?bug的本意是臭虫、缺陷、损坏、犯贫、窃听器、小虫等意思。现在人们将在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题统称为bug(漏洞)。由于现代社会的发展,bug另有一种引申意义,用来形容某事物厉害的超乎想象,bug可以使电脑系统崩溃、容易被施诈者攻击,现有修复漏洞的工具。而软件bug是由于软件开发者的疏忽和失误造成的。并且,软件bug是软件生命周期内发现和未被发现的所有问题总和。

HUA6911的博客 1434

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

这才是找BUG的正确打开方式!再也不用被开除了

漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。具体举例来说,比如在Intel Pentium芯片中存在的逻辑错误,在Sendmail早期版本中的编程错误,在NFS协议中认证方式上的弱点,在Unix系统管理员设置匿名Ftp服务时配置不当的问题都可能被攻击者使用,威胁到系统的安全。因而这些都可以认为是系统中存在的安全漏洞。bug狭义的概念是指软件程序漏洞或缺陷,广义的概念还包括测试工程师或用户所发现和提出的软件可更改的细节、或与需求文档存在差异

weixin_50205273的博客 922

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

代码审查的正确姿势:不只是找Bug,更是知识传递

《代码审查:测试工程师的认知跃迁》揭示了测试人员从"找茬式"审查到质量共建的思维升级路径。文章指出代码审查应是知识传递活动而非单纯缺陷检查,提出五层认知进化:1)将审查作为活体文档获取业务知识;2)从验证转向预防思维;3)用测试思维重构代码逻辑;4)建立双向知识契约;5)塑造团队质量基因。测试工程师应通过审查传递风险预判能力,将质量防线前移,最终实现从"缺陷发现者"到"质量架构师"的转变,让开发团队形成持续改进的质量意识。

2501_94261392的博客 170

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

<Mybatis>SQL语句正确但却查不到结果(因为懒而造成花30分钟找Bug)

> 一定要在连接数据库配置文件的连接URI加上?characterEncoding=utf8,否则在查询时如果参数包含中文字符,传到数据库查询的时候就可能变为乱码而导致查询到错误的结果或者查询不到结果。 ...

qq_41155089的博客 1592

如何高效测试APP,快速定位bug?

一般提到测试,很多人会想到考试,但任意一个APP面世之前,也都需要多次测试,确保可以正常使用之后才会面世。有的公司会有专门的测试工程师,而在一般的互联网公司,大多由产品经理、工程师、等兼职,即人人均测试。大多数情况下,测试会被理解为找bug,那到底我们的理解对不对呢?测试时我们应该注意哪些问题呢?怎样测试,最省时,效率又最高?我们又该怎么跟工程师沟通测试中出现的问题呢?一起来看看。测试就是找bug?答案当然是否定的。我认为测试员在测试时应该有三个层次:第一层次,也是最基础的,快速、精准定位bug。

okcross0的博客 1261

android开发如何快速定位bug_如何高效测试APP,快速定位bug?

这是一篇3年前写的关于APP测试的文章,反过头来看,放在现在也依然是非常合适的,故而再次整理出来分享给大家。一般提到测试,很多人会想到考试,但任意一个APP面世之前,也都需要多次测试,确保可以正常使用之后才会面世。有的公司会有专门的测试工程师,而在一般的互联网公司,大多由产品经理、工程师、设计师等兼职,即人人均测试。大多数情况下,测试会被理解为找bug,那到底我们的理解对不对呢?测试时我们应该注意...

weixin_31714129的博客 616

解决bug,找不出问题,1,流程 2,和正确的对比,找一个正确的,对比当部分web层方法注解失效,有可能是方法写成了private

解决bug,找不出问题,1,流程 2,和正确的对比,找一个正确的,对比 当部分web层方法注解失效,有可能是方法写成了private

m0_47637785的博客 133

关于一个由于我愚蠢的操作造成了一个我找了一天的bug

背景是我在写一个小的servlet项目,没有使用maven,手动添加各种依赖的jar包到lib里,之后我又手动添加删除了一些jar包,其中一个是关于Druid的jar包,后来在测试一个功能的时候发现一直报找不到Druid类,但是我用junit的单元测试@Test测试了dao层对应的方法,成功得到了正确的数据,所以我就认为Druid没出错,而是一些其他错误导致了IDEA认为是访问Druid的错误。手动管理依赖时,IDE(如 IDEA)可能无法正确同步类路径,导致运行时找不到相关的类。文件,然后重新导入项目。

m0_67781178的博客 298

c++高精算法(乘法运算)可能出现的小bug

我们发现这两处代码唯一不同的地方就是一个没有len1,len2,另一个有len1和len2,问题就出在这里,我们分析一下第一个错误代码,发现每一次循环之后,a的大小会发生改变,这样就引起了a.size()大小随着改变,这显然不是我们希望的,所以正确代码里面len1和len2这里作用就是记录。首先说明一下这个代码是我从一个洛谷题目题解那里学到的,可能有些出入,因为我根据我的理解稍微改了一下,都是可以正常运行的,这串代码里面注释的是正确答案,没有注释的是我出问题的代码,可以先看看我这代码那里出问题了。

2403_89559663的博客 341

SSM整合bug集

目录 一:xxxMapper文件的sql语句bug 二:未添加@Service注解 一:xxxMapper文件的sql语句bug 说明:在sql语句中写了参数的startIndex,pageSize。而与xxxMapper文件的接口方法里面没有参数,就会报Parameter ‘startIndex' not found。 解决方法:去掉limit的参数那一行,或者在接口方法...

分享--------留住生活 388
上一篇: 大数据集群服务启停脚本/常用端口/时间同步
下一篇: 彻底搞懂Spring状态机原理,实现订单与物流解耦
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值