我们总是在经历各种挑战,时常感叹前人留下的种种“陷阱”,我们是否也曾想过,自己其实也在无意中为后人挖下新的“坑”呢?
在赵海平的讲座中,我深受启发。他分享了Facebook在软件开发过程中的独特做法:没有测试人员,却能在上线后五分钟内发现并修复系统中的bug。这种高效的反馈机制令人惊叹。
当我们探讨质量保障时,需要明确软件开发过程中的几个关键阶段:编码前、提交代码、测试、上线、回滚以及上线后。下面,我将结合自身的经历,谈谈对这几个阶段的看法。
一、编码前
在编码前阶段,我曾参与过编码规范的讨论,并整理了两份关于前端编码规范的文档。这包括代码展现层面的规范,如统一使用UTF8编码、使用四个空格作为TAB缩进等。这些规范的重要性在于,它们能让团队的代码风格趋于一致,提高代码的可读性和可维护性。例如,我曾遇到过因为编码格式不一致导致的乱码问题,以及因缩进不一致导致的代码冲突。写注释也是编码规范中的重要一环。好的注释能帮助团队成员快速理解代码逻辑,提高排查问题的效率。
二、提交代码
在提交代码阶段,工具的作用至关重要。工具可以帮助我们检测代码中的错误,如语法错误、拼写错误等。工具还可以帮助我们压缩和合并代码,以提高线上代码的效率和性能。工具并不能完全替代人工审查。虽然工具可以提示我们注意某些问题,但最终决策仍需由人来完成。在压缩代码时,我们需要权衡线上流量和排查问题的难度,采用一些辅助手段如空行分隔、使用sourceMap等,以便在出现问题时能够迅速定位到具体的位置。
三、测试与上线
在测试和上线阶段,我们需要确保代码的质量和稳定性。这包括单元测试、集成测试和系统测试等多个环节。我们还需要关注线上问题的排查和修复。在这方面,高效的反馈机制至关重要。正如Facebook的做法,我们应该尽可能地缩短从发现问题到解决问题的周期,以提高系统的稳定性和用户体验。
无论是在编码前、提交代码、测试还是上线阶段,我们都需要注重质量保障和团队合作。只有这样,我们才能不断地提高软件的质量,减少“坑”的数量,为后人铺平一条更顺畅的道路。赵海平谈技术实践中的测试与监控
在技术的世界里,工程师们常常提及一个概念——“三件套”:功能、测试和监控。许多大公司的工程师精通功能开发,测试方面也能达到及格水平,但在程序的监控方面,却往往有所欠缺。即便是在Facebook这样的科技巨头,这一环节也常常受到忽视。对于追求卓越的工程师而言,这三者缺一不可。
现在我们来聊聊这其中的第二个环节——测试。
提到测试,我们自然会联想到QA(质量保证)。在阿里巴巴,有一支庞大的测试人员队伍。代码提交后,似乎剩下的工作就是等待测试人员寻找BUG,然后修复它们。前端测试与后端测试有所不同,逻辑可以通过编写测试用例进行测试,但UI效果和交互的测试却依赖于人的肉眼观察和手动操作。尽管有像jquery-mockjax这样的工具可以在页面上模拟请求进行测试,但真正写测试用例的工程师并不多见。
虽然编写测试用例能解决问题,但如何培养编写测试用例的习惯、如何更便捷地进行测试,仍是值得深入探讨的话题。自动化测试工具虽然强大,但难以捕捉到特定环境下的错误。有些错误只有在真实用户、真实环境中才能被发现,比如因为浏览器插件、网络问题导致的代码错误。错误日志统计的重要性不言而喻,它能让我们深入用户,获取最原始的错误信息。
除了测试环节外,前端上线也是一大关注点。现在有许多发布系统如TMS、gitlab等。每个发布系统都有其特点,如gitlab通过域名严格区分测试、预发和线上环境,操作界限清晰。而aone2发布拥有三种发布方式,提供了便捷的回滚机制。但TMS发布却存在一些问题,如前端和运营都有发布权限,而运营的操作可能会引发问题。在上线过程中,我们需要格外小心谨慎。
说到上线,就不得不提回滚。任何程序都无法保证其绝对无误,因为存在许多我们无法预料的环境因素。制定一套快速回滚方案至关重要。尤其在ABTest中,当新版效果不佳时,需要及时回滚到之前的状态。回滚时需要注意两点:速度要快,同时要保证上一个状态无错误。只要我们确保每个上线的版本都是稳定版,回滚就是零风险的事情。
最后我们谈谈监控。这是程序开发三板斧中的第三板。前端对监控的重视程度远远不及功能和测试。没有监控,我们只能提心吊胆地过日子。监控不仅包括自动化测试和日常页面检查,更包括深入到用户的监控。我们需要更多地关注用户的使用情况,以获取更全面的信息。七、总结与反思
最近,我们团队的老大在群里公布了研发方面的几条重要准则,每一条都值得我们深入领会并严格遵守。
任何代码在发布之前都必须经过严格的测试。未经测试的代码就像一艘没有舵手的船,在汹涌的代码海洋中容易迷失方向,造成不可预测的后果。我们不能让这种情况发生。
发布的代码必须要进行线上验证。这不仅是对代码质量的保障,更是对用户数据和体验负责的体现。我们不能让未经验证的代码直接面对用户,这是对用户的不尊重,也是对我们职业的不尊重。
对于核心应用的发布,我们必须有相应的回滚方案。这是应对突发情况的重要策略,也是我们专业性和责任心的体现。我们不能让一次失误导致整个系统的崩溃,我们需要未雨绸缪,提前做好准备。
这些规范,无疑是我们在前端质量保障道路上的重要指引。这些规范的实施,将会帮助我们压住所有不良习惯,使我们更加深入理解前端开发的本质,并最终将这些规范消化吸收为自己的职业准则。我们距离实现前端质量的全面保障还有很长的路要走,但只要我们坚持努力,始终保持敬畏之心,相信我们一定可以越走越远。
作者:李靖
本文来源: |