天天看点

《Web测试囧事》——2.4 基础代码的改动影响到了其他相关产品,造成程序出错

本节书摘来自华章计算机《web测试囧事》一书中的第2章,第2.4节,作者 黄勇 雷辉 徐潇 杨雪敏,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

小蔡所在的项目组收到代理商a和代理商c的投诉:最近的一次版本上线后,这些代理商的官网持续崩溃无法访问。现已将新版本回退,等待解决问题后重新上线。另外一家代理商b并没有反馈说碰到这个问题。

收到投诉后,小蔡第一时间想到的就是尝试在生产环境中复现问题。然而经过多次尝试,她并没有能够复现出问题来, 测试环境中一切正常。

既然测试环境中不能重现出来,那我们就只有通过查看日志定位问题了。小蔡找运维同事拿到生产环境监控日志,发现日志内容的异常提示信息为:找不到文件“在线聊天xxx……”。

从日志信息上看,这个异常内容跟前几天代理商b提出来的定制需求“在官网上增加一个在线咨询客服的功能”有关系。可是这个需求只是代理商b提出来的,代理商a和c又不会去用,怎么会在他们的网站上也报这样的错误呢?

小蔡一拍脑门,回想起公司使用的是同一套基础代码+不同代理商定制化的方式来制作和运营网站(见图2-5)。

《Web测试囧事》——2.4 基础代码的改动影响到了其他相关产品,造成程序出错

从这个特点来看,如果三个代理商子网站都出现了相同的功能,那么很可能是开发人员把代理商b的需求写到了父网站中,然后所有的子网站都继承了这个特性。

按照这个思路想下去,小蔡找到开发人员以查看代码,发现问题的原因果然如此:开发人员在开发这个功能的时候因为考虑到将来代理商a和c都可能提出相同的需求,所以就把这个功能的代码写到了父网站中,并且没有加上控制器来控制这个功能只会出现在代理商b的网站上。

同时小蔡也总结了下, 之所以把这个bug流出到生产环境,第一是测试策略中测试环境搭建的标准不对,应该和生产环境保持一致,每次发布基础代码后对三个代理商官网都进行部署;第二是没有对代理商a和c的官网做回归测试,测试覆盖率不够。

改进这两点的同时,小蔡建议开发人员对为代理商b开发的在线咨询客服功能增加特性开关(feature toggle),并且默认为关闭状态。这样默认情况下,a、b、c三个代理商都看不到该功能模块,但是代理商b可以通过修改开关状态后使用该功能模块,如果以后其他两个代理商也想使用这个功能,直接打开这个开关就可以了。

《Web测试囧事》——2.4 基础代码的改动影响到了其他相关产品,造成程序出错
《Web测试囧事》——2.4 基础代码的改动影响到了其他相关产品,造成程序出错
《Web测试囧事》——2.4 基础代码的改动影响到了其他相关产品,造成程序出错

继续阅读