微信小程序参数化AB测试开发指南

本文主要介绍微信小程序如何在云眼平台实施参数化AB测试。

1、参数化API

云眼为小程序AB测试提供了参数化功能,相比于传统的简单API方式,它的特点是将小程序中的页面元素、算法规则等动态化,而不是写死在代码中。比如界面图片、轮播图的播放速度等等,皆可通过修改配置信息的方法实现动态调整,而无需修改代码。运营人员无需技术支持便可通过云眼编辑器完成AB测试的配置和实施,非常简便、高效!

在将应用程序参数化前,需要考虑哪些变量是需要参数化的以及哪些目标是有可能使用到的。所有将来可能进行AB测试的关键地方,都建议将其参数化,比如关键按钮(注册、购买等)的一些属性、控制应用行为的一些关键参数、甚至是推荐算法的一些参数等。这样,当将来要进行AB测试的时候就不再需要发布新版本应用了。目标的选择往往是和业务指标相关的一些行为,比如一些按钮的点击,把可能用来衡量结果的目标都考虑进去。

2、确定参数化元素和目标

在进行小程序参数化AB测试之前,需要规划好哪些内容可能进行优化和调整。对未来可能进行AB测试的元素,进行参数化布局。后续无需频繁的编辑代码,即使某些区域最终没有进行AB测试,也不会受到影响。例如:我们提出假设,轮播图的播放速度会影响用户的点击率,则我们需要参数化的对象就是页面中轮播图的播放速度,目标就是用户的点击率。

确定参数化元素和目标
确定参数化元素和目标

3、创建优化方案

创建优化方案:前往“业务优化”>“创建优化方案”。输入优化方案名称,平台选择“全栈API”,然后点击“确定”完成优化方案的创建。创建完成后页面会自动跳转到编辑器页面。

创建优化方案
创建优化方案

4、添加版本并分配流量

创建优化方案后,进入编辑界面,点击 “添加新版本”按钮可添加新版本,并且可以自行选择参加该实验的流量比例以及为各个版本分配流量。

添加版本并分配流量
添加版本并分配流量

5、设置目标

根据优化方案的设计情况,将需要用到的衡量指标创建为一个目标。输入目标的名称然后点击“创建目标”,目标创建完成后,点击目标后的“+”号将其添加到优化方案中。

设置目标
设置目标

6、设置受众

设置受众可以将优化方案定位到在云眼控制台预先定义的特定受众群体中,云眼将会在激活优化方案时通过属性值评估用户是否满足受众条件,从而决定是否激活优化方案。在云眼控制台中点击“业务优化”,业务优化界面打开后再点击“自定义属性(全栈)”。点击创建自定义属性,输入自定义属性的名称和描述,点击确定按钮。

设置受众-1
设置受众-1

然后在编辑器中点击“创建受众”,输入受众的名称和描述,将右侧已创建好的自定义属性拖拽至受众条件下,然后输入一个属性的值,例如:male,然后点击“保存受众”按钮。(注意:创建的自定义属性的名称和输入的值最终会形成键值对的形式:”Gender”:”male”)。

编辑受众
编辑受众

7、设置变量

在设置变量处,点击“创建变量”。在弹出的界面中填写变量名称,选择变量类型和默认值,点击“保存”完成创建。

创建变量
创建变量

在假设的基础上设计实验后,可以在编辑器的“设置变量”中添加需要使用的变量,并为各个版本填写相应的值,从而产生不同的版本。之后再添加需要的目标并保存就可以完成实验的配置。

设置变量-2
设置变量-2

8、启动优化方案

配置完成后点击“启动优化方案”。

启动优化方案
启动优化方案

9、SDK下载与安装

打开云眼控制台,然后点击“业务优化”,业务优化界面打开后点击“SDK下载与安装”。

SDK下载及安装-1
SDK下载及安装-1

在新打开的页面中,选择”全栈API SDK安装“,再从下方选择“微信小程序”, 点击下载链接开始下载小程序SDK文件,下载完成后将SDK文件eyeofcloud.min.js和包装文件eoc_manager.js加载到项目当中,其中包装文件eoc_manager.js的作用主要是引入SDK并获取配置文件的信息,然后在需要进行AB测试的页面当中直接引入eoc_manager.js,并实例化eyeofcloud。

小程序AB测试SDK安装
小程序AB测试SDK安装

10、编码实现

10.1参数化轮播图的播放速度

首先定义初始数据

const app = getApp()
var eocManager = require(“../../eoc_manager.js”)
page({
	data:{
	   interval:3000
       }
})

然后实例化eyeofcloud并调用getVariable接口获取配置文件的信息。

onload:function(){
var that = this;
app.getUserInfo(function (userInfo){
    eocManager.getInstance().then(function(eyeofcloud){
	var interval = eyeofcloud.getVariable(“Carousel_interval”,userInfo.nickName,true);
    });
  });
}

最后,将从配置文件获取到的参数值代替原来的值。

if(interval){
   that.setData({
      interval:interval
   })
}

注意:如果要参数化的元素是String类型,调用getVariable接口;如果要参数化的元素是boolean类型,调用getVariableBoolean接口。调用的时候需要提供3个参数,分别是参数化元素的名称(唯一且为英文字符串) 、用户ID(用户标识符)和布尔类型的true或false (一般情况下为true)。

10.2跟踪目标

在目标事件触发时,调用track接口,需要提供2个参数,分别为目标名称和用户ID。

clickSwiper:function(e){
   app.getUserInfo(function(userInfo){
	eocManager.getInstance().then(function(eyeofcloud){
	   eyeofcloud.track(“用户点击轮播图”,userInfo.nickName)
        })
    })
}

11、简单API中使用参数化API

使用简单API方式可以和参数化API进行配合使用,先调用简单API的activate方法激活一个试验得到版本名称,然后调用参数化API variableString/variableBoolean/variableDouble/variableFloat来获取在云眼控制台定义的变量值,需要提供3个参数,分别是变量名称、用户ID、布尔值true/false,其中最后一个参数的布尔值代表是否激活试验,我们只需要获取变量的值便于使用而并不需要激活试验,所以我们最后一个参数传递false。在这种情况下,我们使用activate API激活试验得到的是哪个版本,则使用参数化API获取到的变量就是我们在云眼控制台定义的该版本的值。例如:我们用activate激活试验返回的是优化版本,则我们使用参数化API获取到的变量值也是优化版本中的变量值。

app.getUserInfo(function(userInfo){

           eocManager.getInstance().then(function(eyeofcloud){

           var variation = eyeofcloud.activate(“mini program test”,userInfo.nickName);

               var isShow = eyeofcloud.getVariableBoolean(variableName,userinfo.nickName,false);

            //然后在下面的版本逻辑中使用得到的对应版本的变量值

           if(variation == “优化版本#1”){

               //do something

               }else if(variation == “原始版本”){

               //do something

           }else{

             //do something default

         }

   })

})

12、查看实验结果

当实验运行一段时间后,就可以到云眼控制台查看实验的运行结果。

查看实验结果
查看实验结果

13、示例程序

付费客户需要Demo,请与客户经理联系…

免费AB测试,注册即可开通使用! 立即开通