一、A/B测试的目的
1.减少发布新功能或者改版的风险
目前C端产品百万千万级的日活已经比较普遍,直接对全量用户上一个功能,万一用户不感冒甚至反感的话,带来的影响的是很大的。
2.收集数据,了解自己用户的偏好
现在很多功能的改动,都是抄袭竞品的变化,看对手动了,没有去思考对方为什么这么改动,是否适用我们产品的用户。经过多次AB测试后,能让我们更加了解自己的用户偏好,用户群的画像特征,也更利于下一次改版。
3.真正用数据帮助决策
当对一次重大改版后,不确认是否有效果,AB测试可以帮你进行公证合理的决策。直接上线功能,用上线数据直接来验证,万一效果不好,此时回头的话,后果可能已经无法承受。利用AB测试是真正的数据驱动增长,让没有特别的了解用户,了解行业的产品经理也能也能做增长。
二、流量的分发
AB测试的实验组和对照组的选择,需要保证随机选择,这样才能确认2组用户的特征行为是一致的,才能达到测试的目的。目前C端产品大部分都会有有自增的用户ID,这样能确认ID都是随机给的,这时使用用户ID的尾号来切分的流量就能保证用户的随机选取,不会造成用户群的特殊性,比如对照组的Android机型的用户居多,或者实验组的男性的用户偏多,造成实验结果偏差,无法进行正确的判断。
就我们公司来说,基本上都是以用户尾号后两位或者最后一位来来进行实验。比如这次要开30%的用户来进行测试新功能,那就可以用户尾号00-29的用户能看到新功能,其他尾号的用户仍是就功能。这样实验组就是尾号00-29的用户,对照组是尾号30-99的用户。然后同时都有多组AB测试在进行,我们可以根据具体情况具体应对。
比如:新功能有2个版本时,需要同时进行比较,选择更好的版本。这时可以新版A对尾号00-19的用户开放,新版B对尾号20-39的用户开放,其余尾号仍旧开放旧版本,这样就可以以20%:20%:60%的实验组和对照组进行进行对比,既节省了AB测试的时间,又能同时进行比较,保证时间变量的一致性。
再比如:2个相对独立的模块同时需要进行AB测试,2边的用户群里可能还是存在交叉的情况,这样是可以A模块的实验组尾号00-39,对照组尾号40-99进行AB测试;B模块的实验组尾号为0-2,对照尾号3-9。这样流量的分发是交叉的,保证A模块的实验组同时包括B模块实验组和对照组,同时A模块的对照组也和实验组同比例的包含的B模块的实验组和对照组。
另外还有网上常见的流量分桶法或者分层法,等产品的用户体量上来后,同时进行的AB实验的测试比较多,需要建一个AB测试的平台是,可以考虑以上的方法。如果百万级或者千万级的日活产品,基本上的使用用户尾号的切分的方法已经基本能够满足日常的测试使用。
三、指标的正确选取
做AB测试之前首先明确测试的目的,基本目的去制定合理的指标,并且在AB测试之前需要的功能的有一个预期目标。
拿电商的产品的详情页改版来说,改版的目的的提高的商品详情页的转化率。因此确定指标的就需要考虑过程性指标,也要考虑结果指标。当然结果指标是最重要的。
过程性指标:商品详情页的跳出率、平均停留时长,页面功能的点击率
结果指标:加购或者立即购买的转化率,支付金额、支付人数
社区类产品增加了一个模块,目的是增加用户的粘性。
过程性指标:新模块的曝光点击情况,旧模块的曝光人数、旧模块的点击人数来判断新增模块对旧模块的负面影响。
结果指标:用户总时长、用户人均时长
最终根据这些指标进行评价功能的好与坏,来决定新功能是否要保留上线。
四、数据源的选择
当数据指标确认后,就需要确认数据指标的计算逻辑。如果该指标已经存在,那就可以直接引用。如果指标不存在,那就需要和数仓的同学的确认该指标是否能计算得出,如果能就提需求给数仓同学,或者数分同学自己确认逻辑计算得出;如果该指标当前无法计算,就需要先对该进行进行埋点,然后重复上述过程。
实验组和对照组的实际触发用户选择,比如详情页的改版的,那我们就需要拿详情页的曝光日志数据,根据用户尾号来区分实验组和对照组。这种是比较简单的情况。如果稍微复杂点的,进入某个模块超过5s时,前往另外一个模块时会触发挽留消息。此时虽然可以根据埋点数据,拿到用户的停留的时长以及点击模块的日志来匹配得到用户,但是这样计算过程复杂且可靠性没有那么高。这时我们就可以根据接口数据来定位到用户,触发的消息是客户端根据制定的行为,当用户满足时就像sever发起请求,我们可以根据这个请求的接口去确认的触发机制的用户,在根据用户尾号的切分实验组和对照组。
五、实验组结果的解读
基于前面的步骤,我们已经拿到AB测试实验组和对照组的数据,这时候我们就要开始对实验数据进行解读。一般会结果数据做个显著性检验,最常用的就是T检验,我们根据用户尾号选择的实验组和对照组基本上符合正态分布,所以支持T检验来做。
当实验组的结果P值
当实验组的结果P值>=0.05,就是说明实验组效果不显著,我们需要的增大样本量(可能是样本量太小不能公正的显示出实际的差异),也可能是这个实验组的实际效果不好,继续优化是实验方案继续来测试。再或者直接放弃该思路,需要寻找其他的方案来增长。
六、AB测试结论的表达
当你的AB测试结果已经足够可靠的时,你就需要对的实验结果下最终的结论。也就是全量后对产品实际的增量到底有多少。逻辑一定要清晰易懂,你是怎么样一步步通过实验结果计算得出来。
比如目前客户端版本覆盖率为40%,新版本用户全量开放功能后并不能直接100%计算,因为我们客户端不可能达到100%覆盖,并不是每个用户都回去更新版本。需要根据各自实际情况的去计算,比如90%覆盖率。
再比如某些促进拉新的功能,第一次对用户达到的效果和第二次对用户达到的效果是不一样的。因此不能直接AB测试的结果进行估算。我们可以对第二次第三次的效果打个折扣,70%和50% 的效果来计算,以此最终评促拉新的效果会更加公正一些。
很多产品工作日和周末的效果可能不一样,电商产品还会有大促和平日的区别。因此测试的时间一定要足够长,各种情景都要囊括进去。不宜以鼎峰期的效果来评判,但是可以以低谷期的效果来做最终结论。因为这个数据是宜少不宜多,你可以说这个功能带来10w的增量,实际有11w,但是不能说这个功能带来12w的增量,实际平常只有11w的增量,这个时候业务方就可能来找你的麻烦。
总结
AB测试是数据分析比较能体现自己工作价值的事情,也是体现分析师综合能力的事情。多做AB测试项目,为公司为业务带来实际的价值才能让你的岗位产生真正的价值。不再取数做报表,业务方还嫌弃你做的慢做的不好,领导也觉得你没有产生作用。
多做数据驱动增长的项目,告别表哥表姐的称号。这样才能体现数据的价值,未来肯定是数据的时代,加油吧少年们,去追寻数据的“ONE PIECE”吧!