【译文】不是所有的 bug 都值得修复的

原文作者:KRISTINE PINEDO

译者:白乐航

欢迎访问网易云社区,了解更多网易技术产品运营经验。

作为软件开发者,您只需要为客户编写和交付出色的产品和功能。 但您也知道软件开发并不总是那么容易,因为进行迭代时候可能会引入bug。 毕竟,“如果调试是删除软件bug的过程,那么编程肯定就是将bug放入去的过程”,正如Edsger Dijkstra(译者注:著名荷兰计算机科学家,我们熟知有向图最短路径算法--迪杰斯特拉算法就是他的),所说。

因为这些问题将会影响你的客户,所以你可能会感到修复应用程序中的每个bug的强大动力。

但这是一个坏主意。

应用程序稳定性和零bug

不存在零bug的应用程序,因此制定有效处理策略是至关重要。这就是为什么应用程序稳定性指标对于敏捷团队如此重要。稳定性可以定义为给定版本的应用程序交互中每个功能正常的百分比。它是通过跟踪应用程序用户遇到的崩溃(未处理的bug)的百分比来计算的。

考虑可用性对于了解稳定性指标是有帮助的。 你可能已经熟悉“五个九”的可用性(译者注:即99.999%高可用性),并且你也已经知道不要设目标为100%,即使它看起来像是一个合乎情理可能完成的目标。 超过某一程度时,你将会遇到回报递减,因为高可用性目标是昂贵的而且不总是能够带来实实在在的好处。 Sean Hull谈到了为什么高可用性的评价过高了。

事实上,以五个九的标准维持高可用性会花费很多钱。

关于稳定性的还有个类似的情况 —— 在某种情况下,由于构建新功能的机会成本很高,所以修复bug成本很高。所以你制定目标时要考虑可行性,它不应该是100%。

这就是原因。

敏捷统治世界

敏捷开发现在主导着软件开发过程,并且已经超过瀑布模型,成为构建和部署软件的实际上的方法。在VersionOne发布的2018年敏捷状态报告中,97%的受访者表示他们在他们的组织中实践过敏捷开发。敏捷团队正在以前所未有的速度构建和交付软件。许多开发者实行持续部署,这使他们能够在每周、通常是每天的基础上快速迭代他们的工作。快速的发布周期使得在发布后修复问题变得很容易,因此在发布前修复每个bug不再是绝对重要的。然而,在敏捷开发中,传统的QA和测试的可用时间也更少,这增加了引入bug的风险。

那么,如何平衡快节奏的开发和bug呢?应用程序的稳定性需要一个反馈循环,可以使用稳定性监视工具进行跟踪。

用户可以选择

客户可以选择使用他们使用的应用程序,因此,如果您想让客户随时随地提供可靠,高质量的应用体验至关重要。 这是一个常见的例子,但我们都经历过。你需要参加会议,就打开骑行应用程序中的一个。 令人讨厌的是,优步(Uber )不适合你并且看起来还崩溃了,但你仍然需要参加你的会议,所以你打开Lyft来使自己按时到达。 因为这可以很容易地发生,你可能会觉得有必要修复每一个突然出现的bug。 但关于这些bug Jeff Atwood’s 提出了很重要的问题,

“你如何区分用户可能遇到的bug,以及用户可能永远不会看到的bug?”

这是一个需要考虑的重要问题,你可以打赌你的竞争对手也会试图自己解决这个问题,这样他们就可以通过快速发布新功能来继续改进他们的产品。

客户端的西部蛮荒

并不是所有的bug都是一样的,在客户端应用程序中尤其如此。

JavaScript比以往任何时候都流行,超过69%的开发人员使用JavaScript,使其成为最常用的编程语言。JavaScript的一个难点是,一旦部署到浏览器中,应用程序运行的条件可能会有很大的不同。考虑到大量的不同的浏览器、版本、扩展和其他可能影响应用程序稳定性的因素,几乎不可能考虑所有可能的场景。而且由于存在如此多的差异,大量的稳定性问题将成为不会影响大多数用户的边缘问题。例如,由于非常低的使用率和奇怪的怪癖,调查Internet Explorer 6(译者注:非常老的浏览器,2001发布2014微软停止维护)引起的bug可能毫无意义。

移动应用程序为开发人员带来了类似的挑战。Android设备中的设备种类是非常多的。你知道2015年市场上有超过24000种不同的安卓设备吗?

部署到移动设备可能更加不可预测,因为设备和设置可能会有很大的不同,并在与应用程序交互时导致问题。像JavaScript一样,很多突然出现的bug都是边缘情况,只会影响少数罕见的手机。

花几个小时修复一个只影响少数用户的bug是不值得的。

特性或bug?选择一个。

正如Eric Sink所写的,“关于软件质量的决策可能是艰难而微妙的,当我们做出这些决策需要非常明智。有时一个“bug”不应该被修复。那么,有什么更好的方法来看待bug呢?

将稳定性转化为团队的KPI。

选择一个可以实现的,有意义的目标,你的团队可以为此负责。稳定性指标可以帮助你决策关于工程资源的数据驱动。当你计划短期加速进度时,你应该分配时间来解决问题,还是应该在产品路线图上全速前进?应用程序稳定性帮助你做出决定。

值得重新检查你的警报堆积,以确保你有必要的反馈循环,或者是否有改进策略的空间。我留给你们几个重要的问题要考虑:

-你的团队是否考虑过应用程序的稳定性?

-你目前如何选择修复bug和构建新特性?

-你的团队如何跟踪和优先处理bug修复?

原文:https://blog.bugsnag.com/application-stability-monitoring/

免费领取验证码、内容安全、短信发送、直播点播体验包及云服务器等套餐

更多网易技术、产品、运营经验分享请点击

相关文章:
【推荐】 优化云课堂直播间性能的一些思考与总结
【推荐】 实现自己的前端模板轻量级框架

原文地址:https://www.cnblogs.com/163yun/p/10062428.html

时间: 2024-10-09 16:30:23

【译文】不是所有的 bug 都值得修复的的相关文章

每一个Bug都可能是致命的

你投入几百个小时甚至是几千个小时开发一款应用的时候,如何能够在竞争激烈的市场中引人注目呢? 全面测试应用程序,每一个Bug都可能是致命的 完整而全面的测试往往决定了你的应用程序是收到较高的评论,还是被忽略无视.发布应用之前先做测试的一个重要原因是因为Android是一个开放的平台,因此有着自身的优缺点,优点是有更多的移动设备和更多的用户群,然而代价是不同设备之间互不兼容,因此要想让使用不同设备的不同用户都有较好的体验是非常困难的. 与iOS系统只需要测试一次相比,对你自己开发的Android应用

你连Bug都抓不住,还谈什么参与感?

林子大了什么鸟都有,APP市场也是这样.举个例子,有段时期图片社交井喷式发展,各类图片社交APP一时充斥着市场.各种或重视图片加工或主打社交元素的APP“来得快去得快”.“你方唱罢我登场”,这些短命APP的例子不胜枚举.究其原因,除了市场饱和等客观因素外,更多的还是一些企业和开发者急于求成.眼馋市场,以构建参与感为借口将未经测试襁褓之中的APP推上市场,结果暴露出各种各样的Bug,最终演变成用户的吐槽大会. 小米圣经<参与感>一书大谈口碑为王的互联网用户思维,着力提倡参与式营销,提出构建参与感

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

这里系统专门指的是那种用户量大的系统,比如有几百万或者上千万的注册会员.因为小系统因为用户量少,不存在这种思考,考虑有时候是多余的.另外还有内部系统,给自己公司内部人员使用的,即便是出现了问题,也不会造成很大的问题,内部协调一下即可. 而针对客户的系统,公司的收入和价值来源于给客户提供稳定的服务.这是关系到公司命脉的.如果系统不稳定,在客户心中造成的印象就会不好. 快速修复与稳定测试之间的权衡 如果线上系统出现了bug,用户反馈问题.作为开发人员,肯定要修复bug.是马修复代码后上传到生产环境,

用nopcomerce3.8版本的同行注意了,前2天发布3.8正式版后,作者收到一些BuG,作者修复后重新提供了一个源代码包下载.

用nopcomerce3.8版本的同行注意了,前2天发布3.8正式版后,作者收到一些BuG,作者修复后重新提供了一个源代码包下载地址,不是github上的那个链接.去作者官网论坛我那个链接地址,或关注微信公众号aspnetcore发消息获取链接地址.我们只能帮你到这了 原文地址:http://www.nopcommerce.com/boards/t/43507/nopcommerce-380-is-released.aspx?p=4 要从这里下载:http://www.nopcommerce.c

所有的Bug都应该修改吗?

项目中的工作流,有一个Bug:“下一步找不到处理人时,报错.找不到处理人应该可以根据设置自动转到下一步.” CCFlow的流程节点设置界面有这个设置,可是设置了找不到处理人时自动转到下一步之后,依然报错.仔细调试源码之后,发现CCFlow并没有实现该功能,而是在找不到处理人时直接抛出错误,界面上的设置好像是给自动执行功能用的.我花了半个工作日的时间,仔细调试,首先确定CCFlow有没有实现这个功能,然后思考修改的可行性.最后放弃修改. 理由是:1.找不到处理人的情况是特殊情况,当发生这种情况时,

每一句都值得品味的话

1   风之所以寂寞,皆因他吹落了花.与其给鱼一双翅膀,不如还鱼一池水塘!2.疲惫的不是脚步,而是心情!失败的不是结果,而是意志!3.你是秋天里的风,我却是一片叶.当你来到我的身边,我跟随着你.而你不会停留,吹向远方,一直向前:我却静静地落在了地上...4.即使是秋天,等待了一年的青苹果也未必成熟.纵有芬芳,貌似未央的绿色植物也无力印红.又望数小时前的无动于衷,激愤生动.生与息的事与愿违,永和远本是放好的结果.只是太多人不懂,不是永,就是远.5.寂寞的人总是会记住他生命中的每个人,所以我总是意犹

为什么C++所有程序员都值得一学?

相信很多没有学习过C++的程序员都有这样的疑惑: 2.1.C++是不是很难?2.我又不找C++的工作,学C++干嘛?3.新的编程语言层出不穷(Java.C#.Python.Swift......)干嘛要学一个老掉牙的语言?4.从事IT行业从来没用过C++,它究竟有什么用?5.学了C++能干嘛? 不知道你是否有这样的疑惑,但是C++绝不是一个无用的语言,相反,C++在编程中的重要性几乎无可替代.我们来盘点C++值得学习的七大理由: 理由一.我们来看,在2019年6月Tiobe世界流行编程语言排行榜

macOS四种Finder视图,所有这些视图都值得研究

Finder视图提供了四种查看Mac上存储的文件和文件夹的方法.大多数新的Mac用户倾向于仅使用以下四个Finder视图之一:图标,列表,列或Cover Flow / Gallery.在一个Finder视图中工作似乎不是一个坏主意.毕竟,您将非常熟练地使用该视图.但是从长远来看,学习如何使用每个Finder视图以及每个视图的优点和缺点可能会更有效率. 在本指南中,我们将研究四个Finder视图,如何访问它们,并学习使用每种视图的最佳时间. Finder视图 图标:每个文件或文件夹都由一个图标表示

关于input(新旧属性都值得我们注意)

input,常用标签,html5之前常用的形式: 属性 值 描述 accept mime_type 规定通过文件上传来提交的文件的类型. alt text 定义图像输入的替代文本. autocomplete on off 规定是否使用输入字段的自动完成功能. autofocus autofocus 规定输入字段在页面加载时是否获得焦点. (不适用于 type="hidden") checked checked 规定此 input 元素首次加载时应当被选中. disabled disab