一个bug案例分析

Bug描述:

      某大型系统的一个提供基础数据服务的子系统A进行了一次升级。升级的内容为:优化了失败重传功能,在优化的同时,开发人员发现传输数据的时间戳精度只是精确到了秒,于是顺手把精度改成了1/100秒。在程序上线数小时后,使用A数据的B系统发现少量数据缺失现象,同时监控系统提示产生Error。进过追踪日志,发现丢失的数据在插入内存数据库时失败。进一步分析原因,原来B系统在读取A提供的数据时,用到了时间戳。时间戳的长度变更引起了B系统对其解析的错误,因此入库失败。

比较有效的改进点:

1.提供基础服务的A系统应该对它提供的服务方推送变更通知,进行兼容性测试。

2.提供基础服务的A应该尽量保证暴露数据的稳定性,并进行良好的版本控制。

上面2点说起来很简单,实际上做好很难。如果是异地开发呢?如果A与B属于不同的公司呢?因此,上面类型的bug在现实世界中层出不穷。能够从根源上降低或者杜绝这种缺陷是企业的硬功夫。

原文地址:https://www.cnblogs.com/skytraveler/p/3519781.html