新手区 大佬们,这种线上 bug 出现了,以后怎么避免呢

Eric · 2024年04月29日 · 最后由 Sdw 回复于 2024年05月06日 · 6762 次阅读

在线上使用测试账号把某个字段清空,然后由于程序原因,把客户账号的字段也清空了

共收到 15 条回复 时间 点赞

遇到过类似的,正式环境,接口测试,删除操作
背景:前置接口返回要删除的条目 ID,后置接口使用进行删除,
结果:前置接口出错没拿到 id, 后置接口直接进行删除,全部数据都没了
处理方法:查日志,确认接口测试时间点,联系 dba 恢复数据,之后和开发确认问题原因,
1、开发接口增加限制条件
2、调整接口测试,报错停止运行,关注关键字段

使用多个测试账号测试

单从描述讲,测试环境应该也能测出这个问题。 还是特殊场景下才会误删?

接口用例加入清除字段,然后检查相关字段

看起来像是开发,代码逻辑有问题,既然发现这种,就要举一反三,后面测试功能的时候,都要写一条用例,专门测试,删除一条数据,能不能把全部数据给删了,或者是有那种全部删除的,删除一个系统的,会不会把其他系统也给删除了。

Eric #8 · 2024年04月30日 Author
鲨鱼辣椒 回复

是这样一个场景,我也是这样解决的,只是第一次遇到这种问题,还挺严重的😂

Eric #8 · 2024年04月30日 Author

很多字段都有删除功能,以后都要测这一场景,岂不是很耗时间呀

这接口的设计也有问题吧,不传 id 就全删,怎么有这种设计方案?

尽量不在生产环境做测试,风险太高。像银行业那样,搞一套准生产环境,从生产环境导入数据做测试验证。

研发侧也需要考虑, 怎么避免全删,要拦截这种操作。

Eric 回复

那你不验证有没有问题,一旦到线上,生产事故,而且这种删除的话,如果是真删,不是假删,后果就更严重了,数据都找不回来。而且后端开发,理论上不应该出现这种低级错误,既然出现了,后面也会出现。

Eric 回复

再友情提示一下,删除接口有这个问题,那么大概率编辑接口也有这个问题😂

开发没有加用户 id,这是开发该避免的

建议开发进行 假删除(删除标志位)

Eric 关闭了讨论 05月11日 15:41
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册