首页 > 代码库 > 【总结】A/B测试方案

【总结】A/B测试方案

  作者:zhanhailiang 日期:2014-11-26

上个版本迭代,实现了针对移动m站首页的AB测试功能,总结下对AB测试的理解。

1. 基本概念

所谓A/B测试,就是为同一个目标制定两个方案(比如两个页面),让一部分用户使用A方案,另一部分用户使用B方案,记录下用户的使用情况,看哪个方案更符合设计目标。

其中需要注意以下3点:

  1. 进行A/B测试必须是单变量。有时我们的多个设计稿可能会有非常大的差异,这样的情况一般不太适合做A/B测试,因为它们的变量太多了,变量之间会有较多的干扰,我们很难通过A/B测试的方法来找出各个变量对结果的影响程度。
  2. A/B测试名字中只包含A、B,但实际上,你完全可以设计多个方案进行测试,“A/B测试”这个名字只是一个习惯的叫法。
  3. 进行A/B测试时必须保证不同的用户在他的一次浏览过程中,看到的应该一直是同一个方案。

2. 实现步骤

  1. 开发两个(或多个)不同的版本并部署;
  2. 收集数据;
  3. 分析数据,得出结果,重新回到1,进行下一个迭代;


AB测试方案的实现原理主要分为服务器端的实现和客户端实现;

  1. 服务器端的实现主要是当次请求判断展示相应方案的页面,并记录下日志,方便后续的数据统计;
  2. 客户端的实现主要是在客户端进行分流,根据用户类型判断需要展示相应方案的页面;

以m站首页的技术方案为例,采用的是服务器端直接判断展示相应方案的页面,同时设置版本标记位m_new_index(0:老版,1:新版),方便BI统计。但是后续的BI统计发现首页的总UV比A|B版本的总和多出20%,分析结果在于m站首页的跳出率确实高达20%,而写cookie的方案本身是无法统计到这部分首次访问就直接跳出的用户。后续的优化方案是通过用户访问首页后再单独发送一个带版本标记位的请求,而BI统计该请求就可以避免以上问题,demo如下:

var flag = {
    newIndex : 1, // 这里要初始化当前版本的标记位
    others : 2
};
 
var params = $.params(flag); // newIndex=1&others=2
var image = new Image();
image.src = ‘/n?‘ + params;

3. 数据分析

需要明确一点,实现AB分流方案的目的是希望通过对比判断两个版本的优劣,以电商网站为例,主要表现在转化率相关指标的对比上。 所以后续的数据分析需要能准确的体现两种方案对实际业务数据的影响对比。

4. 参考文章

  1. A/B测试:基本概念
  2. A/B测试:实现方法
  3. 谈谈网站测试中的AB测试方法

【总结】A/B测试方案