软件测试技术趋势:从案例实战看AB Test系统设计及其原理
软件测试技术趋势:从案例实战看AB Test系统设计及其原理P2=(0.086 0.092 0.091 …… 0.087 0.088 0.089) / 14=0.089p1=(0.078 0.084 0.075 …… 0.081 0.075 0.082) / 14=0.081P之计算方式:【双侧检验】P值=(1-NORMSDIST(Z(实际)))*2,例如:(1-NORMSDIST(1.96))*2=0.024997895*2=0.05【单侧检验】P值=1-NORMSDIST(Z(实际)),例如:1-NORMSDIST(1.96)=0.024997895=0.025。通过一段时间的实验,各实验组人数为方案A:n1=18953,方案B:n2=18879,点击率数据得到如下:根据历史数据计算出支付按钮点击率均值p:
2. 得出实验结果
1)方法一
将上一步得到的Z值与α对应的Z值比较,如果Z(实际) >= Z(1- α) 则拒绝原假设,可通过Excel函数计算。
- 【双侧检验】NORMSINV(1-α/2)。例如:NORMSINV(1-0.05/2)=1.959963985
- 【单侧检验】NORMSINV(1-α)。例如:NORMSINV(1-0.05)=1.644853627
2)方法二
根据上一步得到的Z值计算出P值,与显著性水平α比较,如果P < α 则拒绝原假设,若两者相等,可加大样本量后再验证。
P之计算方式:【双侧检验】P值=(1-NORMSDIST(Z(实际)))*2,例如:(1-NORMSDIST(1.96))*2=0.024997895*2=0.05【单侧检验】P值=1-NORMSDIST(Z(实际)),例如:1-NORMSDIST(1.96)=0.024997895=0.025。
3. 案例时间
通过一段时间的实验,各实验组人数为方案A:n1=18953,方案B:n2=18879,点击率数据得到如下:
根据历史数据计算出支付按钮点击率均值p:
p1=(0.078 0.084 0.075 …… 0.081 0.075 0.082) / 14=0.081
P2=(0.086 0.092 0.091 …… 0.087 0.088 0.089) / 14=0.089
1)计算Z值
2)计算P值
P=1-NORMSDIST(Z(实际))= 1-NORMSDIST(2.789943083)= 0.002635865
3)得出结论
P值0.002635865远小于显著性水平0.05,说明在当前的数据表现下,原假设几乎不可能发生,拒绝原假设,认为方案B是优于方案A的。
4)计算置信区间
显然我们再做一次实验的话方案B的支付按钮点击率均值不一定还是0.089,有可能会上下波动,那么这个波动范围是多少呢,我们可以由样本统计量构成的总体参数计算出估计区间。计算公式如下:
标准误是描述样本均数的抽样误差,样本的标准误差为(n为样本量):
样本均值为p,样本置信区间为:
方案B的均值为0.089,方差为0.081079,显著性水平为5%,样本量为18879,则方案B的标准误为:
可计算出方案B的置信区间为:
这意味着,将方案B应用到总体用户,支付按钮点击率有95%的概率落到[0.085 0.093]这个区间。
五、abtest系统核心功能架构图经过上面的分析,我们已经知道了A/B Test的完整流程。
一个产品需要测试的点往往是非常多的,如果每次实验都要像上面那样人工走一遍显然效率是非常低的,A/B Test又是近年兴起的增长黑客的秘密武器,需要进行快速迭代快速验证,所以将以上流程自动化是非常有必要的。
下面我们就来看看A/B Test系统需要哪些模块,各模块之间是怎么配合的。
1. 配置模块
- 配置实验名称、版本等信息;
- 选择实验指标,并从数据仓库获取所有实验的指标配置,若有当前在运行的实验与本次实验选择指标一致,则自动化选择该实验为互斥实验;
- 选择实验对象,如圈选进行过充值的用户进行实验;
- 根据配置的指标及统计参数,计算出需要多少用户量,根据选择的实验对象,从数仓中同步选择的实验对象每天有多少该实验对象用户,计算出需要多少天才能达到最小样本量,并自动化推荐实验时长。
2. 预警模块
若实验快到期,或者实验样本量与预期的出入较大,则向业务方预警及时进行调整。
3. 分流模块
实验配置好并上线后,用户访问APP时,向该模块该用户对应的实验配置信息,分流模块根据现有正运行的实验配置,计算出该用户属于哪些实验,进行互斥处理后返回对应最终实验的版本,客户端展示对应的实验版本。
4. 分析模块
- 从数据仓库中读取实验的指标数据、样本量数据、其他辅助指标数据,进行分析;
- 针对每天新进实验组的用户数据,进行同期群分析,观察每天新增实验用户的数据波动情况,常见应用于留存分析。
本文由 @不语 原创发布于人人都是产品经理,未经许可,禁止转载
题图来自 Unsplash,基于 CC0 协议