持之以恒 只为您开发有生命力的软件
完美的软件代码
本凡科技(北京事业部) 阅读:438次 发布时间:2022-07-26

某些软件和应用程序稳定性监控平台承诺提供“完美”代码,但那些熟悉复杂编码世界的人都知道,这永远不可能真正实现,尤其是在当今竞争激烈的环境中,工程团队正在利用渐进式和持续交付来发布新的应用程序版本快点。来自Bugsnag的应用程序稳定性指数的数据显示,当工程团队增长到100多名员工时,调试代码变得越来越复杂,难以维持有利于卓越客户体验的应用程序稳定性水平。

虽然工程团队确实希望在推出新功能之前确保进行适当的质量测试,但在交付时代码中仍然存在一些错误是可以的,这只是优先考虑正确错误的问题。事实上,世界上最好的工程团队都知道,并非所有错误都值得修复。

那么软件工程师如何在紧迫的期限内确定要留下哪些错误以及优先修复哪些错误呢?关键是能够快速确定严重错误中的小故障,这些错误可能会损害用户体验并最终损害您的应用程序的声誉。

以下是在工程团队无法一次解决所有问题时掌握错误监控和错误优先级流程的三个关键步骤。

1)采用渐进式交付方法

从历史上看,工程师会编写代码并将其发送给质量保证(QA)团队进行筛选以识别任何错误。然后,他们将为应用程序或网站推出一个新的用户界面(UI),然后监控用户体验并在它们已经影响到整个用户群之后修复错误。这种类型的传统应用交付使开发人员无法在不导致更多编码错误的情况下执行更快的应用发布,但渐进式交付是专门为支持这种快速发展而设计的。

渐进式交付是一种软件开发方法,它允许组织快速发布更新的应用程序,同时保持质量并防止错误对用户体验造成严重破坏。成功的渐进式交付计划有多种策略。通过采用分阶段推出、功能标记和实验,工程团队可以支持比传统应用交付策略更快的发布和更好的应用质量。

分阶段推出:新功能和软件更新首先仅向部分用户发布,然后再向更广泛的受众推出。这使工程师可以优化应用程序,同时在错误影响整个用户群之前捕捉和修复错误。反过来,它使开发人员能够发布更小、更频繁的应用程序更新,这样用户就可以更快地体验新功能,而不会让大多数人暴露在错误中。

功能标志:这些用于为一部分用户打开或关闭某些功能并返回到以前的代码库。通过监控新功能对这个较小子集的影响,工程团队可以通过在容易产生错误的版本造成过多中断之前关闭它们来显着降低风险。

实验测试:测试应用程序在生产中时不同功能的执行情况。这可以是简单的A/B测试,也可以包含多个变体,以便选择影响最大的变体。


2)优先考虑代码所有权以提高团队在调试时的一致性

代码所有权是工程团队可以用来防止浪费时间和资源的策略,让多个团队筛选代码以搜索相同错误的路径。如果没有代码所有权,传统的错误监控会在发生错误时提醒整个工程团队,无论他们是否参与过该项目。这会导致修复的所有权不明确,并可能导致停机时间显着延长。

对于代码所有权,唯一收到错误通知的团队是负责产生错误的代码部分的团队。通过提供更快、更简单的方法,代码所有权消除了与调试过程相关的混乱和猜测,使工程团队能够轻松识别、拥有、确定优先级和修复错误。此外,代码所有权加快了调试工作,并对稳定性产生了明显的积极影响。接受代码所有权对于提高应用程序稳定性至关重要,这是衡量应用程序健康状况的最基本指标。


3)通过关注重要的修复并暂停其余的修复来简化错误优先级

尽管所有组织中的工程团队在结构和内部流程方面存在很大差异,但任何监控软件稳定性的团队都将受益于简化其错误分类实践。在较高级别上,对错误进行分类涉及查看当前影响系统的错误并将这些错误分为三个一般类别。

需要开发人员立即采取行动的错误(回滚版本、部署修复等)

目前不需要立即采取行动但将来可能出现的错误(如果错误变得更加频繁,影响更多用户等)

永远不需要开发人员操作并且可以安全忽略的错误

在分类期间,审查影响相对较小且不需要立即修复的错误并不少见。在这些情况下,要问的关键问题是,“我们需要对这个错误的影响做出哪些改变才能确定修复的优先级?”

通常,这个问题的答案将涉及额外出现的错误的绝对数量、某个时间段内出现的频率,或者在未来某个时间之后不再预期该错误发生。在所有这些情况下,这些标准都可以使用贪睡规则来表达。暂停规则非常适合跟上最初影响较小但将来可能变得更加严重的错误。一旦你延后了一个错误,它只会在达到你指定的延后阈值时返回到“for review”状态。在这一点上,通常值得优先考虑修复。


保持冷静并继续编码

随着当今蓬勃发展的应用程序经济,消费者比以往任何时候都更加依赖使用应用程序,并且对软件工程团队快速发布新功能的期望很高。最终用户对崩溃或失败的应用程序几乎没有耐心,而应用程序稳定性是每个应用程序体验的基本组成部分。

但是,工程团队不必恐慌。目标永远不应该是“完美的代码”,而是关注应用程序的健康和稳定性。通过正确的软件交付方法、代码所有权和错误优先级,工程团队可以更有效地利用他们的时间进行紧急修复,并为用户保持出色的应用程序稳定性,尽管他们的代码中存在任何错误。由于这些原因,应用稳定性与客户保留、客户增长和收入密切相关也就不足为奇了。