2018年50周: 墨菲定律

墨菲定律: 凡是可能出错的地方就一定会出错。

最近团队花了 6 周上线了一个项目,项目中有两个外部依赖。有个资深的同事在项目初期调研其中一个项目时指出,需要尽快获取生产环境的 API,因为曾经踩过这样的坑,在得到线上环境时发现线上环境和测试环境运作方式不同,结果也不一样。在他的坚持下,在上线前一周就获得了该模块的生产环境。

墨菲定律发生在另一个模块。这个模块不是我们团队开发的,但是在一个公司内部,所以就没有那么重视。在上线前一天,我们获得了对应生产环境的 API,结果发现真的和测试环境返回的结果不一样。我们用一种简单的思路很快修复了这个问题,但是我们真的应该提前要到账号,将风险降到最低。

这次上线发生的另外一个问题,也值得说一下。在我们连调时发现,线上环境用户收不到邮件,测试环境一切正常。起初我们怀疑是线上的邮件服务器配置出了问题,花了很长时间调试,结果邮件服务器没问题。最后定位到的问题是,邮件没有填写收件人😳,邮件服务器调用 API 时没有获取收件人信息。最后发现,API 接口做了调整,而服务器却没有更新。(契约测试也能发现这个问题,但我们没有写。)

API 正是我开发的模块,每次更新后我都会将 API 文档发给大家 review,但是由于上线时间紧张,不是所有模块都能有足够的时间去查看 API 文档。这给我的一个教训是:以后开发 API 时,如果做了修改,需要及时和相关人进行面对面的沟通,而不仅仅是 review。

其实在测试环境 bugbash 时应该发现 API 不一致的问题,但是在测试环境,我们将邮件发给了一个固定组,而没有发给个人,要是换一个邮件地址来测试,就能避免这个问题。

如果你喜欢这篇文章,欢迎赞赏作者以示鼓励