背景
如果工作中涉及到很多的模块但是由于数据没有闭环导致测试的时候提出一些数据不一致的bug。
比如系统各个模块中统一为一个逻辑整体,但是没有做数据同步导致出现数据不一致。对于实现细节的人可以立马想到原因是什么?但是对于产品或者测试来说,他们的脑子里认为这是一个逻辑整理,我在其中一个模块是可以看到记录但是与其他模块交互的时候为什么不存在,脑中自洽的逻辑被打破了。
工作中具体的例子
我司CRM客户、互联平台企业、订货通客户是一个逻辑的整体,他们的链路关系式 CRM客户 -> 互联平台企业 -> 订货通客户,即互联平台企业逻辑上来自于CRM客户,当然可以直接在互联平台创建企业(同步在CRM创建客户),订货通客户来源于互联平台企业。所以当CRM客户被删除的时候应该删除互联平台企业和订货通客户 。
但是由于CRM是北京团队做的,他们没有做数据同步操作。当然很多模块都依赖于CRM的业务,北京CRM团队可以发送客户删除的mq消息来通知很多团队来同步数据的。
没有做数据同步导致测试的时候不理解,为什么订货通客户还在缺报客户不存在呢?其实是调用北京的接口提示说不存在的。这样的不一致在一定程度上降低团队的效率,会出现很多这样的数据不一致的bug都需要去跟踪耗费时间。
数据要同步且最好只有一条渠道来同步
在互联平台与订货通客户之间有一个mq消息来同步,但是当时小伙伴认为mq消息不靠谱,在查询query的时候比对了一把把不一样的删除了。
直到有一次上线出现过这种情况,客户命名同步了订货通的可见范围且赋予了权限,但是就是看不到订货通的联系人。通过查日志才知道是在查询语句里被删除了。
这里的场景就是数据同步有两个地方,而另外一处是当时对于mq不信任写的是在测试、产品、客户可理解范围之外的。他们不会想到query的时候也会比对一把同步数据没有这样的逻辑。所以从这一点来说我们写的代码实现的功能应该是符合上层的逻辑,上层的逻辑最好的校验就是产品和测试。
所以数据要同步且应该符合逻辑最好只有一条渠道来同步。