A/B 测试(A/B test)
A/B 测试(A/B test)
- 什么是A/B测试
- A/B测试的本质
- A/B测试的两种做法
- A/B测试的步骤
- 基于hash的AB测试
其他常见问题
什么是A/B测试?
A/B 测试是一种产品优化的方法,为同一个优化目标制定两个方案(比如两个页面),让一部分用户使用A 方案(称为控制组或对照组),同时另一部分用户使用 B 方案(称为变化组或试验组),统计并对比不同方案的转化率、点击量、留存率等指标,以判断不同方案的优劣并进行决策。
A/B测试的本质:
A/B测试中是用对照版本和试验版本这两个样本的数据来对两个总体是否存在差异进行检验,所以其本质是使用假设检验中的独立样本t检验 。
零假设为:试验版本的总体参数与对照版本的总体参数无显著差异。
备择假设为:试验版本的总体参数与对照版本的总体参数有显著差异。
A/B测试的两种做法:
1,连续测试(Consecutive Testing):对所有用户第一阶段投放A版本,第二阶段投放B版本。
优点是容易部署和跟踪,不需要分流用户;缺点是结果没有同步测试那么准确,因为随着时间的推移,在测试过程中可能发生很多不可控的变化。
2,同步测试(Synchronous Testing):在同一时间段,将用户分流到不同方案,一部分用户使用A版本,一部分用户使用B版本。
优点结果比连续测试准确;缺点是实现比较复杂,需要选择有效的试验组,制定分流方案。
一般来说,A/B测试都是采用同步测试(Synchronous Testing)的方法。
A/B测试的步骤:
1,通过数据分析,找到现有产品中可能存在的问题,针对性地提出产品优化的方案并进行假设。例子:“假设把注册流程中的图片校验码方式,改成短信校验码的方式,注册转化率可能会提升”。
2,确立优化目标和比较指标。设立可量化的、可以落实到某一个具体功能点的、可实施的小目标。比如:“通过优化注册流程,将注册转化率提升20%”。
3,设计优化版本并完成开发。
4,确定测试时长。
5,确定分流方案(每个测试版本的分流比例)。
6,按照分流比例开放线上流量进行测试。
7,收集实验数据进行有效性判断和效果判断。
8,根据试验结果有以下几种可能:①发布新版本;②调整分流比例继续测试;③在未达成目标效果的情况下继续优化迭代方案,重新开发并上线试验。
鹅厂实践
基于hash的AB测试
在AB测试中需要将用户随机的分成两组,通过对每个用户唯一id做hash运算,并对hash值对2取模,便可以将用户分成0,1两组(分桶测试便是hahs对n取模)。
每组采用不同的策略,并定义一个策略Id,跟随不同的策略埋点,在最后回收策略Id,最后通过策略id分析ab两种策略的好坏。
其他常见问题:
1,测试时长应该设定多久?
测试的时长不宜过短。用户进入到新方案中,很可能因为好奇而表现得更加活跃,但随着时间的推移,逐渐趋于冷静,数据表现回到本该有的水平,如果实验观察期设置的过早,则容易得出错误的结论。适应期的长短通常以足量用户参与试验后的2到3天为宜。适应期过后的试验时间长短除了需要考察样本量外,还需要参考用户的行为周期,譬如说电商用户的购买行为有较强的周期规律,周末的购买量与工作日会有显著差异,这时测试的周期需要能够覆盖一个完整的周期,也就是应该大于1周。
但是测试时间也不宜太长,因为A/B测试是对线上多个版本的测试,这也就意味着线上系统需要同时维护多个可用的版本,长时间的A/B测试无疑加大了系统的复杂性。
2,应该怎样对用户进行分流?
分流也就是抽样,应该保证同时性、同质性、唯一性、稳定性。
①同时性:分流应该是同时进行的。
②同质性:分出的用户群在各维度的特征都应相似。可以基于用户的设备特征(例如手机机型、操作系统版本号、手机语言等)和用户的其他标签(例如性别、年龄、新老用户、会员等级等)进行分群,每一个A/B测试都可以选定特定的用户群进行试验。
③唯一性:即要求用户不被重复计入测试。
④稳定性:每次用户都应被分到相同的实验版本,这样可以保证用户体验的一致性,保证用户能够在适应新版本的情况下有稳定的表现。
3,什么是A/A测试?
A/A测试将分给原始版本的流量再次划分,分出的两组流量分别给两个相同的原始版本进行测试。A/A测试用来评估两个实验组是否是处于相同的水平,是为了测试埋点、分流、实验统计的正确性,增加A/B测试的结论可信度。如果AA实验的结果不存在显著差异,那么可以认为实验结果是有效的,进而可以对新老版本的实验结果进行进一步的判断。
4,A/B测试只能同时测试2个方案吗?
A/B测试不是只能测试A方案和B方案,实际上一个测试可以包含A/B/C/D/E/……多个版本,但是要保证是单变量的测试,比如按钮的颜色—-赤/橙/黄/绿/青/蓝/紫,那么这七个方案可以同时做A/B测试,但如果某方案在旁边新增了另一个按钮,即便实验结果产生了显著差异,我们也无法判断这种差异的成因究竟是什么。
5,为什么要A/B测试
- 产品优化依靠经验主义,不能保证新的产品版本一定会有业绩提升
- 重大产品功能很难决策,不确定哪个方案效果最优
- 后验成本高,如果改版失败,业绩损失无法挽回
参考
https://zhuanlan.zhihu.com/p/68019926
http://www.appadhoc.com/blog/ab-test-in-dianrong/
https://cloud.tencent.com/developer/article/1496302
https://www.zhihu.com/question/20045543
https://blog.leapoahead.com/2015/08/27/introduction-to-ab-testing/