首页 > 其他分享 >聊聊BUG的根因分析

聊聊BUG的根因分析

时间:2024-02-07 09:22:05浏览次数:22  
标签:聊聊 根因 bug 质量 测试 团队 BUG 度量

这篇文章的灵感,来自前几天技术交流群讨论的内容,也是广大测试同学日常接触最多但也最容易忽视的一点:bug根因分析。bug嘛,一说起来大家都熟,毕竟测试这个岗位,最初的时候,被称为“捉虫者”。

软件测试岗位工作的日常,就是执行用例验证开发交付的软件系统是否达标,存在哪些bug,然后提单子并跟进修复和验证,说起来简单轻松,做起来无聊乏味,难怪很多同学自嘲,软件测试岗位就是一个“点工”。

如果仅是这样看待软件测试工作,那确实有点浮于表面。要做好软件测试甚至质量保障工作,除了最基本的找bug跟进,还需要对需求有足够的了解,熟练掌握研发测试流程和方法,并且还要灵活应用多种技术手段来辅导团队提升整体的交付质量和过程效率,这才是质量保障工作的核心。

 

既然提升质量是工作核心,那反过来理解,就是想办法减少bug的出现,或者在bug出现后能更快的修复,这样也能达到提升质量和效率的目的。

工欲善其事,必先利其器;欲利其器,必晓其理。同理,出现bug意味着背后存在多种原因,比如对需求的理解不够完善导致实现的功能存在偏差,比如修复老问题引发新问题等等,这些原因都是引起bug的现象,其背后更本质的因素在于需求评审、技术实现方案、编码规范、用例设计、沟通协调等多种因素。

只有从根本上找到bug出现的原因,才能更好的达到提升质量这一目的。特别是在当前这种降本增效的大环境下,对测试团队来说,更需要的是性价比较高的解决问题的方法。

前几年业内很火热的做了很多技术和方法实践,比如单元测试、自动化测试,然后以此为基础开创了各种维度的指标,即所谓的质量度量。表面来看,每个版本每次迭代甚至每次发布每次代码提交的质量一目了然,以此指标可以精准的得到哪个团队甚至哪个开发的代码质量差,然后通过OKR+KPI,即所谓的引导员工提升自己。

但实际上呢,投入了如此多的资源,做了各种平台,质量真的获得了明显的提升吗?以我的观察,并没有,线上问题该发生照样发生。那能以此推论质量度量就是没价值的吗?也不尽然。

度量只是保障质量的第一步,质量一定是需要定量的标准的,否则就会陷入不可控的状态。但仅仅度量是不够的,这只是统计层面的分析,只能看到问题发生在哪里,为什么产生了这个问题,还需要进一步分析。

 

要分析问题出现在哪里,需要证据,各种质量度量指标的元数据就是很好的参照物。但与此同时,要对问题进行深入的分析,还需要工程师具备丰富的理论知识和实践经验,只有这样才能更快的找到问题的根源。

举个例子,某个正常的版本迭代,bug数量和reopen数量激增,如果从统计层面来看,可能是某个开发的代码质量太差,可能是代码合并冲突,也可能是开发没有按照编码规范进行实现,这些因素都有可能。但更深入的思考一下,如果只是某个版本bug数和reopen数激增,其他版本正常,那就要可能是需求层面出了问题。

比如需求描述不清晰,比如编码过程中需求多次的大面积变更,比如研发资源被抽掉同时兼任多个项目的开发工作,这些也会导致交付的软件质量不高。但是,这些因素在质量度量层面,是看不到的。

还有其他可能,比如项目的deadline一直在变化,项目指标在变化,但关于变化产生的影响,大家并没有做好沟通,导致信息传递变形,最终影响了编码质量,这也是一种因素。但同样,在质量度量层面,依然看不到。

 

要提升质量和效率,最实用和最具性价比的方式,依然是bug根因分析。只有解决了最根本的问题,才能更有底气的完成保质提效的目标。

说到根因分析,很多公司都会有所谓的问题复盘,但遗憾的是,复盘后的改进动作和落地结果,很少有人关注和不断验证。说到提升效率,大家往往想的是自动化测试;说到提升编码质量,大家一窝蜂的跑去搞单元测试和研发自测,各种冒烟测试和质量门禁。

在我看来,大家好像在一段时间内,患上了头疼医头脚疼医脚的习惯。却唯独忘了去调查bug产生的背后真正原因。这也是为什么很多测试团队开发测试平台和各种自动化,最终无法落地的原因所在。

质量保障和提效比较合理的步骤是这样的:

  • 统计问题,收集数据和证据(日志);
  • 开展根因分析,找到最底层最本质的问题;
  • 思考解决问题的办法,并进行调研论证对比;
  • 找到适合自己团队现状的方案,进行快速落地验证;
  • 观察一段时间,有效就扩大范围,并且持续优化,如此反复;

 

近两年我写了很多关于质量保障体系建设的文章,你说这是方法论也好,说太复杂无法落地也罢。站在我的角度,我认为方法论依然是值得我们不断学习并且深入思考的。兼听则明,多看多想,然后找到适合自己的方式去落地解决问题,才是最核心的。

当然,bug根因分析和质量的持续改进并不仅仅是测试团队的工作,而是应该和其他团队如运维、架构合作,一起来持续的对质量和效率进行改进和提升。毕竟对于技术团队来说,线上高性能高可用不出bug,是大家一致的目标。

测试团队在其中要发挥的作用,可以是牵头者,也可以是辅助,更可以是整个技术团队统一目标的调停者。

标签:聊聊,根因,bug,质量,测试,团队,BUG,度量
From: https://www.cnblogs.com/imyalost/p/18010591

相关文章

  • 换个角度聊聊「Web3+AI」:这个未来需要多久才来?
    撰文:Babywhale,TechubNews 文章来源TechubNews作者,搜TehubNews下载查看更多Web3资讯。2023年至今,笔者一直在关注欧科云链研究院有关于AI和Web3相关的研究报告,想了解这个过去的「知识盲区」有怎样的发展。去年年底到2024年初,在研究了欧科云链研究院与澎湃共同发表的Web3......
  • 软件测试学习笔记丨Seleium的BUG:页面元素文案重复空格处理
    前言需求做WEB的UI自动化练习,其需求为:访问慕课网的实战页面,获取实战页面的课程列表信息,并逐个点击进入详情并且关闭详情,直到最后一个。环境Java8MavenSelenium4.0Junit5初步代码importorg.junit.jupiter.api.AfterAll;importorg.junit.jupiter.api.BeforeAll;importorg......
  • mit6.824lab2D-Debug记录
    1.死锁要提交快照的时候由于没有人取走applyCh通道里面的东西,导致死锁。具体解释:2D的测试代码中在日志达到一定大小时会调用snapshot,该函数需要申请rf.mu这个互斥锁。而在提交普通的日志条目时,错误地没有先释放锁,导致snapshot无法进行下去,相关的进程卡在rf.mu这个锁上,无法完成......
  • Qt Access violation - code c0000005 debug write access violation
    WhentryingtodebugmyQtapplication,theappthrowaexceptionas"Exceptionat0x77da2073,code:0xc0000005:writeaccessviolationat:0x1,flags=0x0"IamusingQtcreatorandvs2005compileranddebugger. Iloadtheprojectonvs2005a......
  • 面试官:你能简单聊聊MyBatis执行流程
    本文分享自华为云社区《面试必问|聊聊MyBatis执行流程?》,作者:冰河。MyBatis源码解析大家应该都知道Mybatis源码也是对Jbdc的再一次封装,不管怎么进行包装,还是会有获取链接、preparedStatement、封装参数、执行这些步骤的。配置解析过程Stringresource="mybatis-config.x......
  • 如何用Python调试 debug
    什么是调试,为什么我们需要调试这里借用南京大学蒋炎岩老师的ppt在计算机中,我们将机器看作状态机,同时我们遵循计算机不会犯错的原则,因此,当你设计的程序产生了与你意料相悖的结果,那就可以认为你的程序产生了bug。调试理论中的状态机我们将程序可以看成一个状态机,程序的不断......
  • PHPYUN人才招聘系统V7.0_VIP版更新包(20240101)中若干bug的修复解析及上架小程序过程
    没想到这么大的一个php开发者会遇到若干小bug问题,以前正常运行的程序升级到7.0后出现莫名奇妙的问题,比如模板消息不能使用了,完全收不到消息,后来才知道因为改版代码里出现了Bug,在比如网络招聘申请环节没反应,也是bug可能这次更新较大没注意把还好我自己解决了把解决过程分享出来!......
  • 聊聊ClickHouse MergeTree引擎的固定/自适应索引粒度
    ​ 前言我们在刚开始学习ClickHouse的MergeTree引擎时,就会发现建表语句的末尾总会有SETTINGSindex_granularity=8192这句话(其实不写也可以),表示索引粒度为8192。在每个datapart中,索引粒度参数的含义有二:每隔index_granularity行对主键组的数据进行采样,形成稀疏索引,并存储......
  • Qt Creator Debug不显示变量的值
    参考:QtCreatorDebug不显示变量值(nosuchvalue)_qtnosuchvalue-CSDN博客【Qt开发笔记】Qt使用GDB调试时无法监视变量值问题_qtgdb远程调试变量优化无法看值-CSDN博客......
  • 聊聊更新表时的隐式提交
    1、显式提交和隐式提交显式提交是指在程序中使用明确的提交操作来提交数据到数据库。这可以通过使用语句COMMIT或COMMITWORK来实现。显式提交是一种手动提交数据的方式,它将当前的数据库事务立即提交,使之成为永久性的更改。在显式提交之后,数据将立即被其他事务所见。与显式提交......