程序员 你还在加班写Bug吗?
消息来源:baojiabao.com 作者: 发布时间:2026-05-13

并非所有的bug都值得改,也可以不改。
作为软件开发者,最想做的事情就是给客户建立并发布最完美的产品和功能。但你也知道,软件开发并不容易,每次修改肯定都会引入bug。毕竟,就像迪杰斯特拉说过的那样,“如果说调试是去除软件bug的过程,那么编程就是引入bug的过程。”
由于这些bug会影响到客户,你可能会强烈地希望改正应用程序中的每个bug。
而这几乎是不可能做好的。
应用程序稳定性和零bug
没有完全无bug的应用程序,因此拥有一个有效处理bug的策略是非常重要的。因此,应用程序稳定性目标对于敏捷团队十分重要。稳定性可以定义为在特定的发布中,每次交互会话中的成功的应用程序交互的百分比。这个值就是用户使用应用程序时遇到的崩溃(未处理的错误)的百分比。
对可用性的思考有助于理解稳定性目标。你可能已经很熟悉“五个九”的可用性(https://en.wikipedia.org/wiki/High_availability#%22Nines%22),而且你也知道即使100%的目标似乎可以达到,也没必要去追求。超过某个点只有,高可用性带来的回报几乎降为零,而成本却非常高,使得高可用性不再有收益。Sean Hull在《为何高可用性被过誉了》(https://www.iheavy.com/2012/04/01/the-myth-of-five-nines-why-high-availability-is-overrated/)一文中谈过这一点。
“实际上,维持五个九的标准的高可用性就要花掉很多钱。”
稳定性也很相似。超过某个点之后,由于构建新特性的高昂机会成本,继续修改bug的代价变得非常高。因此,你需要像可用性目标那样确定稳定性的目标,而且这个目标不应该是100%。
原因如下……
敏捷统治世界
敏捷开发已经成为最主流的软件开发过程,已经取代了瀑布式开发,成为构筑软件的事实标准。在VersionOne发布的2018年敏捷开发报告(https://explore.versionone.com/state-of-agile/versionone-12th-annual-state-of-agile-report)指出,97%的受访者都说他们的组织在使用敏捷开发。敏捷团队能以更快的速度构建和发布软件。许多实践,如持续部署,能让开发者能更快速地进行迭代,比如每周迭代,甚至每天迭代一次。更快的发布周期使得上线后的bug修复变得更容易,因此在发布之前修正每个bug的重要性已经没那么高了。但是,敏捷开发留给传统的QA和测试过程的时间也变少了,从而增加了bug进入产品的风险。
那么,怎样才能在快节奏的开发和bug之间取得平衡?你需要有个关于应用程序稳定性的反馈回路,以便使用稳定性监视工具进行跟踪。
客户的选择
客户能够选择他们使用的应用,因此要想留住客户,那么发布高质量、可靠的应用是非常重要的。举个我们都见过的常见例子。你要去开个会,于是你打开了一个打车因公。但很讨厌的是,Uber不好用而且崩溃了。但会还是要去开的,所以你使用Lyft及时地赶到了会场。由于这种情况太容易发生了,因此你可能会强迫自己改正每个导致这种情况的bug。但Jeff Atwoods提出了个很重要的问题(https://blog.codinghorror.com/not-all-bugs-are-worth-fixing/):
“怎样才能区分出用户可能会遇到的bug,和用户可能根本不会遇到的bug?”
这个问题很重要,而且可以想像,竞争对手也在试图回答这个问题,所以他们会通过快速发布新功能来改进产品。
客户端的西部世界
并非所有bug都是平等的,在客户端应用中尤为如此。
JavaScript现在非常火,69%的开发者都使用JavaScript(https://insights.stackoverflow.com/survey/2018/#technology-programming-scripting-and-markup-languages),使之成为了最流行的编程语言。JavaScript的难题之一就是,在部署到浏览器之后,应用程序的行为可能会有区别。由于数量庞大的浏览器种类、版本、扩展和其他影响应用程序稳定性的因素,使得考虑所有可能情况几乎是不可能的。而且由于有这么多变种,许多稳定性问题其实都是极端情况,不会影响到绝大多数用户。例如,由于Internet Explorer 6现在使用的人非常少,而且它的行为十分怪异,因此调查IE6造成的bug基本上没什么用。
移动应用也给开发者带来了类似的挑战。安卓设备之间的碎片化现象非常严重。你知道吗?2015年市场上有24000种不同的安卓设备(https://opensignal.com/reports/2015/08/android-fragmentation/)!
移动设备上的部署的结果更难以预料,因为设备和设置会呈现巨大的区别,从而与应用交互时可能会造成各种问题。与JavaScript相似,许多bug都是极端情况,只会 影响到极其罕见的一部分手机。
花上几个小时去修改只影响到少数几个用户的bug是十分不划算的。
功能还是bug?二选一
正如Eric Sink所写的那样(https://ericsink.com/articles/Four_Questions.html),“关于软件质量的决定很困难且很重要,做出这些决定需要非常高的只会。有时‘bug’不应该被修改。”那么,怎样考虑bug的问题更合适?
将稳定性变成团队的KPI。
选一个能够达到的目标,将其作为团队有意义的努力方向。稳定性目标可以通过数据驱动的方式帮你在工程资源方面作出决策。在做sprint计划时,是应该分配时间修改问题,还是应该全力朝着产品地图努力?应用程序的稳定性可以帮你作出决定。
花些时间重新射审视监视数据是值得的,这样可以确保你能得到重要的反馈,或者了解是否需要改进策略。我留下几个问题供读者思考:
团队是否在考虑应用程序稳定性?
你在修复bug和构建新功能之间如何抉择?
你的团队怎样跟踪bug并设定bug修复的优先级?
原文:https://blog.bugsnag.com/application-stability-monitoring/
作者:Kristine Pinedo,bugsnag的社区内容管理。
译者:弯月,责编:郭芮
相关文章
B站怎么炸崩了哔哩哔哩服务器今日怎么又炸挂了?技术团队公开早先原因2023-03-06 19:05:55
苹果iPhoneXS/XR手机电池容量续航最强?答案揭晓2023-02-19 15:09:54
华为荣耀两款机型起内讧:荣耀Play官方价格同价同配该如何选?2023-02-17 23:21:27
google谷歌原生系统Pixel3 XL/4/5/6 pro手机价格:刘海屏设计顶配版曾卖6900元2023-02-17 18:58:09
科大讯飞同传同声翻译软件造假 浮夸不能只罚酒三杯2023-02-17 18:46:15
华为mate20pro系列手机首发上市日期价格,屏幕和电池参数配置对比2023-02-17 18:42:49
小米MAX4手机上市日期首发价格 骁龙720打造大屏标准2023-02-17 18:37:22
武汉弘芯遣散!结局是总投资1280亿项目烂尾 光刻机抵押换钱2023-02-16 15:53:18
谷歌GoogleDrive网云盘下载改名“GoogleOne” 容量提升价格优惠2023-02-16 13:34:45
巴斯夫将裁员6000人 众化工巨头裁员潮再度引发关注2023-02-13 16:49:06
人手不足 韵达快递客服回应大量包裹派送异常没有收到2023-02-07 15:25:20
资本微念与李子柒销声匿迹谁赢? 微念公司退出子柒文化股东2023-02-02 09:24:38
三星GalaxyS8 S9 S10系统恢复出厂设置一直卡在正在检查更新怎么办2023-01-24 10:10:02
华为Mate50 RS保时捷最新款顶级手机2022多少钱?1.2万元售价外观图片吊打iPhone142023-01-06 20:27:09
芯片常见的CPU芯片封装方式 QFP和QFN封装的区别?2022-12-02 17:25:17
华为暂缓招聘停止社招了吗?官方回应来了2022-11-19 11:53:50
热血江湖手游:长枪铁甲 刚猛热血 正派枪客全攻略技能介绍大全2022-11-16 16:59:09
东京把玩了尼康微单相机Z7 尼康Z7现在卖多少钱?2022-10-22 15:21:55
苹果iPhone手机灵动岛大热:安卓灵动岛App应用下载安装量超100万次2022-10-03 22:13:45
苹果美版iPhone可以在中国保修 从哪看怎么查询iPhone的生产日期?2022-09-22 10:00:07










