关于线上的bug什么时候修复的思考

这里系统专门指的是那种用户量大的系统,比如有几百万或者上千万的注册会员。因为小系统因为用户量少,不存在这种思考,考虑有时候是多余的。另外还有内部系统,给自己公司内部人员使用的,即便是出现了问题,也不会造成很大的问题,内部协调一下即可。

而针对客户的系统,公司的收入和价值来源于给客户提供稳定的服务。这是关系到公司命脉的。如果系统不稳定,在客户心中造成的印象就会不好。

快速修复与稳定测试之间的权衡

如果线上系统出现了bug,用户反馈问题。作为开发人员,肯定要修复bug。是马修复代码后上传到生产环境,还是在灰度或测试环境把修复的代码测一遍后,再上传到生产环境呢?

有时候为了快速解决线上问题,所以修改代码后,就想发布上去。大一点的网站,都要走发布流程,填写发布单的。不能随便ftp上传代码的。都是业务系统,一点问题会存在影响。

看《淘宝技术这10年》里面也出现过类似问题,改改,编译(java语言要编译)好后发布上去,发现还是有问题,又得重新找,一天过去了。

我自己也有类似的体会:有时候发现bug,想快速修复bug,就懒得在灰度测试了。于是发布到线上。但是会出现其他问题来。

有的时候还会犯低级错误。

比如我自己亲身经历过好几次了。一次是邮箱的激活状态。发现有这个bug,去修复,想快速修复,在测试环境测验了后,程序是没问题,但是发布到线上,就出现问题。

这次不是程序出现问题。是没沟通好,不应该改为激活状态。这种办法只是一个临时办法,没有从整体角度考虑,即其他系统也会用到数据库的状态,根据这个状态来拦截发广告行为。这样改掉就造成数据错误了。

很多人都有类似的习惯,干脆懒得测了,自己觉得有信心,就发布到生产环境去(身边一些开发人员改好代码,自己不测试,直接发到灰度去给测试人员测试,实际上还是要打回来。这样来回折腾的耗费的精力和时间其实还更多)

表面以为快,实际上并没有快。有时候,我们修改简单的功能,发布上去,没有出现问题,于是就养成这样的习惯了。几次没有出现问题,但是某次就会出现意外,造成了系统的不稳定,也让开发人员到处救火的行为,比如这里修复好后,出现新的问题,继续修复,到处救火弄得精疲力竭的。

我如今越来越有如下感悟:追求快速可以,但如果追求快速,质量得不到保证,这种快速有多大意义呢?为了保证质量,宁愿慢一点,放到测试环境和灰度环境把问题还原出来,测验没问题再发布。

靠人的经验和能力来控制是否靠谱

开发人员出于自信和经验考虑,觉得自己修改的东西不用经过测验,反正就修改那么一点点代码,我有信心保证不出错。

我现在发现,靠人的经验来保证质量,不太靠谱了。因为任何人再厉害,都有犯错的时候,都会有疏忽。比如今天刚好因为家庭有事,情绪比较低落。修改代码就忽略掉一些部分了。眼睛看失误了。或者今天睡眠不充足,或者今天心情不好。就会造成类似的事故出来。一个人的大脑负担多的时候,就更加容易失误了。

靠一个人的智力终究有限,怎么防火才能从源头上来解决问题。如果能够设计一种办法,哪怕是人会犯错,但是可以纠错,就会好很多。

很多时候之所以那么赶,是因为觉得自己再去测验浪费时间,还有上面也不给你时间来测验?

这方面的投入时间相比后续出现问题再去救火到处的成本,是非常值得的。

古代人说,慢工出细活,的确非常有道理。编程就是一个慢共出细活的工种。心理越乱月容易出错。

线上的bug怎么处理?

分清楚优先级,重要程度。如果影响的面不是很广,只是一部分用户。可以放在测试环境把这个问题还原出来。这样确保找到了原因,再去修复问题。

避免越修越乱的局面!

没有找到确切的原因,像苍蝇一样,各个去尝试,这样会造成更多的问题出来。以前只是影响一部分用户,后来影响更多的用户了。得到反馈回来,这个时候会惊动更多人(比如产品、老板),开发人员得到的心里压力会更大。这样干的也不愉快。产品对系统频繁出问题也心里不爽,反馈到老板那里,老板也觉得是这样,开发人员也因为受到压力干的不愉快。最后是一个双输的局面。

总结:不要因为线上出了问题,为了快速修复bug,而忽略掉了节奏。开发人员能够做到面临外界压力,不乱其实是一种心里素质。

如果乱,心智不稳定的状态下,还会造成更多的问题出来,以前的修改代码就白劳动一场。有时候要庆幸现在自己冷静,没有去乱动,还没有因为乱动而造成更多问题(到时候吃不了兜着走)。

以前我的思想是,既然是面对用户的系统出现了bug,那么就要快速修复,我或多或少是出于假设某天我的公司遇到类似问题我应该如何办的思维模式来做事。

面对用户的bug,会引起我的特别重视。但是后来我发现,完全这样子也不行的。要权衡一下质量。如果没有质量保证的修复,那就会造成其他问题的出现。其实有些用户是可以缓一缓的,没想象那么紧急。比如线上程序就的确有这个bug:在app注册后,跑到pc版本去登录,需要邮箱激活。我仔细跟产品沟通会发现,没有想象的那么重要。周五本来想发布修复bug,但是可以缓到周一去发布的(这样有足够的时间来测验修改代码后造成的影响)。我没有抓住里面的关键点,目前只有这一个用户反馈这个问题。没有出现大面积的用户反馈。

因为通过手机app注册的用户,并不像我们想象那样,会去pc端页面进行登录。所以用户没有遇到这样的问题。

由于一个瓶子放在桌面上,每个人观察到的面是不同的。我们会忽略掉一些看不到的面。

我们内部开发人员观察到的永远是bug,因为产品反馈给我们了,我们看到的就是这个bug这一面。但是我们没有从整体角度来考虑。我们只是关注这是一个影响用户登录的bug。

我们以为改掉可以很有成就感,但可能是杨白劳,周五去发布,如果无法确保自己的代码不会造成其他影响。就少干。原地不动,反而风险更低。

顶着错误前进,错误次数多了后,就会是经验。有人宣扬,人生没有后退的路子。但我在想,如果一个人无法从错误的经历中吸取教训,避免下一次犯错,那么还是一样的浪费折腾。比如修复bug的事情,如何权衡,这样的错误继续再犯,总是到处救火。还是没有形成稳定的局面。

时间: 2024-10-08 08:26:41

关于线上的bug什么时候修复的思考的相关文章

线上应用bug跟踪查找-友盟统计

线上的应用只要用心点点都能发现些bug,连微信,QQ也不列外.但是bug中最严重的算是闪退了,这导致了用户直接不能使用我们的app. 我们公司是特别注重用户反馈和体验的,我们会定期打电话咨询用户的使用情况.我们也有自己的天使用户群,这些用户会跟我们及时的反馈应用的使用情况,bug情况,还有他们的需求. 用户不是技术人员他无法跟你清楚的描述怎么产生闪退的,于是我们需要一个bug统计的功能,我们公司采用友盟统计实现bug的记录.我们在iOS应用中植入友盟统计的功能,我也经常在查看友盟的错误统计和错误

线上出现bug

测试申请用户交付押金: 打开支付页面(用户登出或清除cookies)支付成功后,支付状态未改变的问题; 为了避免今后发生同样的问题,请各位今后在确认支付相关的功能点时注意下面的case: 1.发出支付申请后,用户退出登录然后成功支付,支付状态是否显示成功 2.发出支付申请后,用户清除cookie后成功支付,支付状态是否显示成功 重新整理了下关于支付的测试case,请各位在今后测试支付的时候严格执行这些测试用例并把结果记录到测试报告里,详细case如下所示: 正常case: 1.发出支付申请后,用

0010 线上遗留问题跟进

线上遗留问题持续跟进 修复版本 问题产生版本 问题类型 测试问题 优先级 修复时间 修复状态 发现人   聚无线1.01 聚无线1.0 bug IE 11下,科大讯飞服务里,点击SDK下载后,上面的TAB无法切换 低   未重现 刘子祥   聚无线1.01 聚无线1.0 需求 目前支付宝实名认证最大5个,需要我们审核后台能够区分出同一个支付宝实名认证的用户 高 3月11 已修复 刘子祥   聚无线1.01 聚无线1.0 需求 增加领取套餐页面的Region选择,默认青岛暂时只支持青岛 中 3月1

安卓热修复,android打补丁,不用发版本就能实时的解决一些线上版本的bug

背景 当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就会忙得焦头烂额:重新打包App.测试. 向各个应用市场和渠道换包.提示用户升级.用户下载.覆盖安装.有时候仅仅是为了修改了一行代码, 也要付出巨大的成本进行换包和重新发布. 这时候就提出一个问题:有没有办法以补丁的方式动态修复紧急Bug, 不再需要重新发布App,不再需要用户重新下载,覆盖安装? 搜索发现有这3种方式可以实现(至于其他的方式,暂不清楚) 1.dexposed     github https:/

Android线上bug热修复分析

针对app线上修复技术,目前有好几种解决方案,开源界往往一个方案会有好几种实现.重复的实现会有造轮子之嫌,但分析解决方案在技术上的探索和衍变,这轮子还是值得去推动的 关于Hot Fix技术 Hot Fix技术,简单来说就是针对线上已发布app出现了bug,在不推送新版本的情况下通过发布修复补丁进行修复.通常是刚上线的app,需要快速线上修复bug,类似的技术就叫做热修复或热补丁. 热修复技术能带来什么 让app具有了上线后被修复的可能性,增加事故风险可控性: 避免为修复bug而快速增发新版本,让

听说”双11”是这么解决线上bug的

--Android线上热修复的使用与原理 预备知识和开发环境 Android NDK编程 AndFix浅析 Android线上热修复的原理大同小异.这里仅仅针对眼下最火的框架AndFix进行解说.主要从AndFix的使用.原理以及优缺点三个方面进行阐述. 使用方式 介绍 AndFix是一个AndroidApp的在线热补丁框架. 使用此框架,我们可以在不反复发版的情况下,在线改动App中的Bug.AndFix就是 "AndroidHot-Fix"的缩写. 就眼下来说,AndFix支持An

快速定位iOS线上BUG在哪个控制器崩溃

快速定位iOS线上BUG在哪个控制器崩溃 快速定位iOS线上App崩溃在哪个控制器里面,需要和后台配合使用 下载本项目并添加手动添加到项目里 新建所有的页面都继承于YZViewController 在AppDelegate的didFinishLaunchingWithOptions方法里面写下如下代码: if ([[[NSUserDefaults standardUserDefaults] valueForKey:@"BUG"] isKindOfClass:[NSDictionary

【MySQL 线上 BUG 分析】之 多表同字段异常:Column ‘xxx’ in field list is ambiguous

一.生产出错! 今天早上11点左右,我在工作休息之余,撸了一下猫.突然,工作群响了,老大在里面说:APP出错了! 妈啊,这太吓人了,因为只是说了出错,但是没说错误的信息.所以我赶紧到APP上看看. 这果然是出错了,而且还是简单而粗暴的500,太吓人了. 二.本地赶紧调试起来! 既然线上出错了,我们又不能直接进行调试,那当然得马上在本地搞起来了! 1.代码是否有错? 立马启动本地的项目,访问对应的接口,看看是不是代码哪里出错了. 好了,本地的代码和 SQL 都是没错的! 2.SQL 是否有错? 那

对线上系统维护工作的总结与思考

背景描述:目前在一家网站公司工作,2015年初研发中心部门改革,小组重组,被分配到了网站平台的维护组.下面内容是对近期维护工作的一个总结: 个人感受:以前也在老东家的团队也做线上系统的维护和新产品的研发,由于大家的认真负责,Leader的管理也很到位,线上的系统很少有bug反馈,不管是UI上迭代,还是系统逻辑的升级都很顺畅. 目前负责的平台运行了3年多,可能由于当时逻辑设计问题,也可能是执行问题,发现近期反馈的问题多是逻辑问题,在此对这些问题的原因不做探讨和深究,只是想讲讲面对线上问题的维护工作