A/B概述以及Drupal如何做A/B测试
一个商业网站,最重要的就是用户的体验和成交率(用户转化率),因此做为网站的管理或者市场运维人员,应该对访问者的喜好要有一个基本的把控,但是大多数情况下,我们无法对访问者的喜好做出主观判断,因此需要用到一个工具,A/B测试。
所以,多数网站,或者说CMS网站系统,A/B测试是非常重要的一个环节。
本文就A/B测试的基础概念以及如何在Drupal中做A/B测试,做一个简单的介绍和分析。
深入理解A/B
A/B测试不单单是AB,也可以有CD,本质上就是做多个版本,通过对多个版本用户的行为分析,然后决定采用哪一个版本。
我们可以从页面的展示方式来简单分为两种:
1. 全页面A/B测试(两个page);2. 局部页面A/B测试(同一个page)。
因为这两种AB,有不同的数据采集模式。
当然两种是可以转换的,比如第一种的全页面,也可以当成第二种的局部,只是这个局部稍等,里面的内容全部替换了。
比如第二种的局部,也可以做两个page,比较大部分内容一样,只是某个部分比如banner不一样,虽然是局部,但是也做了两个页面。
所以,针对这两种,我们重点区分是,同一个URL或不同URL的AB测试。
1. 不同URL,可以通过入口分发,这样在统计结果里面,分析不同的URL的统计结果,然后可以对比,就能测试到AB的结果。
比如两个URL的停留时间、热力图、点击事件、转化率等。
2. 相同URL,那么就需要设置参数,让统计工具知道我是A还是B,最后通过AB的结果分析,得到对比数据。
所以,同一个URL一般需要配合统计工具的API,可能要写部分代码来实现AB测试。
不同URL非常容易理解,相同URL的AB测试,可以参考下图:
通过上图,我们就了解了AB测试的整体过程和目标。
那么A/B测试通常会测哪些元素呢?
我们简单总结了一下,大约有下面几种类型,
1. 主要标题,比如不同标题,可以带来不同的转换或者停留时间。
2. 触发按钮,比如注册、订阅、联系我们,这些按钮的大小、颜色等变化会促使用户的操作几率发生变化。
3. 价格列表,我们通过不同的方式展示产品价格,会导致用户不同的反应,这个比较容易理解。
4. 产品描述,对产品的描述不同,用户查看、下单的几率也不同,所以也是比较关键的。
5. 客户评价,客户评价对用户的影响也比较大,所以通过不同的客户评价,可以分析用户下单的几率。
A/B测试的意义
通过上面的介绍,我们明白了A/B测试,也大概明白了A/B测试的目的,就是为了提高用户的转换率,或者成交率。
比如,我们通过修改用户下单按钮的颜色,来提高用户的下单率,如下图所示,我们将按钮的颜色改成了紫色,更鲜艳的颜色,可以导致用户的转换率提升18%,那这个方案胜出。
所以,A/B测试的目的和意义,就是猜出用户最喜欢的,然后提高转化率。
A/B测试的工具
很多统计工具自带A/B测试,尤其国外的收费的统计工具,当然用免费的Google Analysis或者百度统计也可以,通过自定义参数来区分A或者B。
不同URL的A/B比较简单,我们重点分析相同URL的A/B测试。
相同URL的A/B的思路,通过代码控制A/B,然后告知统计工具,当前把我统计到A或B,这样通过统计工具就能看到统计结果。
一般配置统计工具,我们能清晰的对比A/B的测试结果。
本次,我们通过开源的matomo来如何做A/B测试。
1. 首先登录Matomo,看到A/B测试
2. 创建A/B测试
3. 选择对比指标,比如停留时间、转化率、PV等
4. 生成A/B代码,将代码copy下来,修改其中对应A/B事件部分,换成我们自己的操作。
var _paq = _paq || []; _paq.push(['AbTesting::create', { name: 'banner-color-ab', // you can also use '3' (ID of the experiment) to hide the name percentage: 100, includedTargets: [{"attribute":"url","inverted":"0","type":"any","value":""},{"attribute":"url","type":"starts_with","value":"https:\/\/sisutest.dev.weijiantou.com\/","inverted":"0"}], excludedTargets: [], variations: [ { name: 'original', activate: function (event) { // usually nothing needs to be done here } }, { name: 'Green', // you can also use '5' (ID of the variation) to hide the name activate: function(event) { // eg $('#btn').attr('style', 'color: ' + this.name + ';'); } }, { name: 'Gradation', // you can also use '6' (ID of the variation) to hide the name activate: function(event) { // eg $('#btn').attr('style', 'color: ' + this.name + ';'); } } ], trigger: function () { return true; // here you can further customize which of your visitors will participate in this experiment } }]);比如上面的代码,有一个activate函数,就是对应我们A/B应该做什么操作,比如把banner的颜色改成红色等。
5. 当搭建完AB测试,我们接下来就需要耐心等待结果,然后收集结果。
比如下图,就从多个维度,展示了我们AB测试的具体结果数据。
基于Drupal的A/B测试
首先A/B测试大多是根据统计工具在一起的,所以大多数时候,AB测试需要统计工具提供,CMS只是辅助的实现。
目前,Drupal有两个模块可以实现类似的A/B测试。
1. A/B Test UI
这个模块其实是做了一个分流的重定向,所以他是不同的URL进行A/B的测试,理论上通过Nginx也可以,在CMS层面方便管理而已。
2. Smart Content
这个模块,是可以通过一些不同的设置条件,展示不同的内容,因此我们可以在这个条件里面,增加A/B,然后进行A/B测试,不过模块默认不提供A/B的条件,我们需要自己开发插件。
下图,我们可以看到smart content可以加多个条件,相当于if elseif else,条件也有多种选择,比如cookie相关、设备相关,UTM相关,所以这个可以满足我们大部分需求,尤其UTM相关。
从推广A来的,就显示A内容,从推广B来的,就显示B内容。
也可以自定义条件,关联到统计统计里面,这个也是一个A/B测试的好方法。
结论
A/B测试相对来说涉及范围比较广,可以跟流量渠道结合,比如不同流量来源给到不同的AB结果,或者跟用户画像相关,比如有某些特征(年龄、标签)的用户给另外的AB展示。也可以跟统计统计结合,比如GA、百度统计、Matomo、SmartLook、CrazyEgg、Optimizely等等。此外也跟CMS本身相关,比如内容的呈现、AB结果的定制、展示等。
因此,市面上很多A/B测试是收费的,或者提供了收费的解决方案,所以我们选择A/B测试工具或者开源工具的时候,需要对A/B测试的流程、实施、结果收集要有一个完整的了解,才能做到有的放矢,达到测试的目的。
更多关于资源库建设和CMS建设的文章,请参考下面的相关链接,