今年开始接触abtest项目,在测试过程中发现一个问题,很多实验场景:app首页,或者商品详情页,是不需要登陆的。但是,我们的实验希望剔除未登陆用户,那么代码是如何处理这部分未登录用户的呢?
由于未登陆用户mid=0,如果针对未登陆用户采取策略:mid=0的用户不参与实验。其实,这部分用户就是对照组。会更大程度影响实验结果。因为代码层面是无法说,针对某部分用户不参与实验的。
最终讨论方案:
1)对于未登陆用户,我们用buvid(设备id)来标识;
2)给予对照组和实验组相同的比例,让这群同时进入对照组和实验组的未登录用户可以被等比例的删除。比如,实验组有5%的未登录用户,那么对照组也要选5%的未登录用户做对照。
解释下为什么这么做呢?
对于已登陆用户,用mid做实验。但是对于未登陆用户,我们用buvid(设备id)来标识。那么,一旦用户使用多个浏览器,多个电脑,跨设备,就会具有多个标识,很可能被同时分配到了控制组和实验组。我们认为这些标识都相互独立,但是背后其实都指向同一个用户。如果这群用户具有和其他单设备单浏览器用户不同的特性(比如特别活跃),那么就会使得实验结果偏差太多。