快捷搜索:  汽车  科技

软件测试技术趋势:从案例实战看AB Test系统设计及其原理

软件测试技术趋势:从案例实战看AB Test系统设计及其原理以上解决了随机性问题,并没有解决实验互斥的问题,只能靠人工给各实验指定分组进行实验。所有流量按某个参数(UserID,DeviceID、CookieID、手机号等)分成n个桶,假设选定UserID,有以下两种方法:计算出了实验所需人数,下一步就是从总用户群体中抽取出对应人数进行实验,这一步我们将会面临着两个问题:如何从一个总体中按一定比例抽取随机样本;如果同时进行的实验中有互斥的怎么办。针对以上两个问题我们有以下三种解决方案,下面分别介绍下:1)单层方案

2)案例时间

计算样本量之前首先要获取历史的支付按钮点击率,一般取最近一个月的历史数据,以下是最近一个月的支付按钮点击率数据:

p=(0.075 0.079 0.087 …… 0.083 0.077 0.081) / 30=0.08

  • 确定MDE值,新方案至少比旧方案提升多少才能达到我们的预期,即计算新方案的ROI,避免实际收益不能弥补新方案的研发和推广成本,这里我们取比原方案提升10%,即新方案期望的点击率为:p(新方案支付按钮点击率)=0.08*(1 10%)=0.088,可得MDEΔ=0.088-0.008=0.008;
  • 计算Z值,本实验中我们取α=5%,β=20%,通过NORMSINV计算,得:

通过以上计算,每个实验组需要18053人,有两个实验组则总需18053*2=36106人。

6. 圈选用户

计算出了实验所需人数,下一步就是从总用户群体中抽取出对应人数进行实验,这一步我们将会面临着两个问题:如何从一个总体中按一定比例抽取随机样本;如果同时进行的实验中有互斥的怎么办。

针对以上两个问题我们有以下三种解决方案,下面分别介绍下:

1)单层方案

所有流量按某个参数(UserID,DeviceID、CookieID、手机号等)分成n个桶,假设选定UserID,有以下两种方法:

软件测试技术趋势:从案例实战看AB Test系统设计及其原理(1)

以上解决了随机性问题,并没有解决实验互斥的问题,只能靠人工给各实验指定分组进行实验。

软件测试技术趋势:从案例实战看AB Test系统设计及其原理(2)

2)多层方案

单层方案适合简单的验证,不适合长期大规模做交叉实验,流量利用效率太低,且随机组不好把握,最终容易造成某一组用户指标明显优于其他组。

为了解决以上问题,多层分组方案应运而生,人为定义一些分层,如:UI 层、推荐算法层,每一层中再对用户随机分组,即可实现同一个用户出现在不同层的不同组里面,做到流量的重复利用。具体实现方法如下:

软件测试技术趋势:从案例实战看AB Test系统设计及其原理(3)

从上图看到流量经过每一层时都会被打散重新分配,下一层每一组的流量都随机来源于上一层各组的流量,如推荐算法层的0组用户均匀来源于UI层的0、1、2……n组用户。

如此一来我们只需要指定实验处于哪一层,系统就可计算出该层还有多少剩余流量然后自动分配,即使实验不互斥也没必要共用相同的实验组。

3)无层方案

多层方案做到了流量的重复利用,但是并没有发挥出最大的重复利用价值。

单独看每一层,其实就是一个单层方案,并没有从根本上解决问题,只不过是复制出来多几层而已,如果某一层实验非常多,还是会存在流量不够用的情况,这就衍生出了无层方案。

所谓无层,就是每个实验都是单独一层,具体实现方法如下:

软件测试技术趋势:从案例实战看AB Test系统设计及其原理(4)

如此一来确保了每个实验都单独占有所有流量,可以取任意组的流量进行实验,但是又引进了新的问题,多层方案将实验的互斥在层内进行了限制,无层会导致同一个用户命中多个实验,即使这些实验是互斥的。

显然这样子是绝对不允许的,解决方法是赋予每个实验优先级,例如按上线优先级排序,优先将流量赋予高优先级用户。也可以在创建实验的时候如果有互斥实验,新创建实验的分组算法复用已有实验的实验ID进行分组即可避免。

以上分流算法最终会形成n个组,需要进行AA实验验证分组是否均匀。验证各组之间无显著性差异后即可从n组中随机抽取出某几组达到实验所需的用户量进行实验。

四、abtest实验评估

流量经过分流后进入到每个实验组,经过一段时间后各实验版本将会产生实验数据,经过统计各组数据之间是否存在显著性差异以及差异大小,就可以得出各版本之间是否有差异,哪个版本更好的结论。

显著性检验同样有多种方法:T检验、Z检验、卡方检验。

Z检验使用的是总体方差,T检验使用的是样本方差,卡方检验是比较两组数值的分布,因此Z检验比T检验和卡方检验效果更明显,检验精确度是:Z检验>T检验>卡方检验,下面以Z检验为例进行介绍。

AB测试需要比较出哪个实验组表现更好,因此使用的是单尾检验。原假设为新方案不优于旧方案,然后计算出在原假设成立的条件下,计算所得实验样本数据特征的概率原假设发生的概率P值,和显著性水平α进行比较以判断是否拒绝原假设。

如果P值小于显著性水平,说明我们在原假设的条件下几乎不会得到这样的数据,所以我们应该拒绝原假设。取显著性水平α为5%,具体步骤如下:

1. 计算Z值

根据实验数据得到对照组均值为p1、实验样本数n1,实验组均值为p2、实验样本数n2,有以下公式:

软件测试技术趋势:从案例实战看AB Test系统设计及其原理(5)

猜您喜欢: