AB测试实战(一)

简介: AB测试是一种数据驱动的产品优化方法,用于比较不同版本的网页、应用界面或营销策略的效果。

AB测试实战


1、AB测试介绍🐾


AB测试是为Web或App界面、流程设定两个或多个(A/B/n)版本,在同一时间维度下,分别让类似的客户群体随机访问这些版本,收集各群组的用户体验数据和业务数据,最后通过显著性检验分析评估出最优版本,并正式采用。简而言之,就是通过同时进行多个方案的测试,选出最佳版本。

AB测试的核心原理是假设检验,通过检验我们提出的假设是否正确来做出决策。在AB测试中,就是检验实验组和对照组的指标是否有显著差异。


1.1 AB测试的关键点:目标KPI和策略


  • AB测试,作为一种数据驱动的产品优化方法,其核心在于通过对比不同版本的策略或设计(通常称为A版本和B版本),来评估它们对关键性能指标(KPI)的影响。这种方法的关键在于明确目标KPI,并制定具有针对性的策略,以测试哪些变更能够显著提升用户满意度、增加转化率、减少跳出率或达到其他预定的业务目标。
  • 通过精心设计的AB测试,企业可以系统地评估不同策略的有效性,从而做出基于数据的决策,优化产品体验和业务结果。这不仅有助于提高产品的竞争力,还能为企业的持续成长和创新提供有力支持。


1.2 AB测试的作用


  • 优化用户体验:通过比较不同版本的界面、布局、按钮设计、文本内容等,找出用户更喜欢的版本,从而提升用户体验。
  • 提高转化率:AB测试可以针对网站的特定页面(如着陆页、购物车页面、注册页面等)进行测试,找出哪些设计或策略能更有效地吸引用户完成目标操作(如购买、注册、下载等),从而提高转化率。
  • 验证假设:在产品开发和市场策略中,经常会有各种假设。通过AB测试,可以验证这些假设是否成立,为产品迭代和市场策略调整提供数据支持。
  • 降低风险:在推出新产品或新功能之前,通过AB测试可以预先了解用户对新特性的反应,从而降低产品失败的风险。
  • 个性化推荐:通过AB测试,可以了解不同用户群体对不同内容或功能的偏好,从而为用户提供更个性化的推荐和服务。
  • 提升品牌忠诚度:通过优化用户体验和提高转化率,AB测试有助于提升用户对品牌的满意度和忠诚度。


1.3 AB测试实施的一般步骤


明确目标(KPI):


  • 清晰地定义测试的目标,比如提升转化率、点击率、分享率等。


  • 确定需要改进的具体点,如策略、算法、界面调整或功能调整。

确定样本量:


  • 通过假设检验或统计学的知识,估算出为了达到一定置信水平和效果提升所需的实验人数。


  • 考虑用户群体的特性和行为模式,确保样本具有代表性。

    分组(圈人):


  • 将用户随机分配到实验组(B组)和对照组(A组)。


  • 确保两组用户在人口统计特征、历史行为等方面尽可能相似,以消除其他潜在影响。

     AA测试(基准测试):


  • 在进行真正的AB测试之前,先进行一次AA测试,即两组用户都展示相同的内容或版本。


  • 观察两组用户在AA测试期间的KPI表现,确保没有显著差异,从而验证分组和流量分配的有效性。

     实施AB测试:


  • 对照组(A组)继续展示原始产品或功能。


  • 实验组(B组)展示新的产品或功能调整。


  • 监控两组用户的行为和KPI表现。


2、AB测试常见问题和应对方案🐾

2.1 如何分配流量🐣


一般采用A组B组人数相等的方法进行流量分配


常用的分流方法


  • 利用随机数排序,例如My SQL中的 rand()函数


select a.*,case when rand()<0.1 then 'ctrl'
when rand() between 0.1 and 0.55 then 'test1' else 'test2' end as ab_group_tag
from (select distinct customerID from user_table) a
order by ab_group_tag;


  • 利用某些随机ID的尾数,例如case when ID like ‘%1’then ‘Ctrl’else ‘Test’end as AB_group
select a.*,case when customerID like '1%' then 'ctrl'
when customerID like '2%' or customerID like '3%' or customerID like '4%' or customerID like '5%' then 'test1'
else 'test2' end as ab_group_tag
from(select distinct customerID from user_table) a 
order by ab_group_tag;


  • 不管用哪种方法都要在人群身上留好标签以便事后分析


2.2 确定试验有效的最小参与人数🐣


  • AB测试的效果会一定程度上受到随机波动的影响


  • 完全随机的两组人不发优惠券,观察同一段时间的人均交易数,人均交易额这些KPI,都不会完全一样
  • 为了使测试结果显著有效,我们首先要确保测试组里人数最少的一组达到验证效果有效性的最小样本数量
  • 帮助计算样本量的网站:https://www.evanmiller.org/ab-testing/sample-size.html


  • Baseline conversion rate: 这里填写基准比率 10%
  • Minimum Detectable Effect:这里填写最低的可探知效果2%
  • Significance level α:显著性水平 一般选择5%
  • Statistical power 1−β:统计功效(statistical power )一般选择80%
  • 经过计算得知,我们想通过AB测试确定新的策略能够将KPI提升两个点参数实验的每组人数最少为7678人


2.3 AB测试中的假设检验🐾


为什么要计算参与AB测试的最少参与人数🐣


  • 我们做AB测试的目的是在尽量不影响用户体验的前提下,让少部分用户来验证新旧方案的优劣。这里就需要对用户进行抽样, 也就是抽取部分用户来代表全体用户来参与实验,并得出结论
  • 如果抽取的用户数量过少,不能代表所有用户的观点,结果没有意义
  • 如果抽取的用户过多,一旦我们的新方案与预期效果偏差较大则会对用户体验带来较大影响
  • 我们可以使用假设检验的理论帮助我们计算参与实验的最少人数


什么是假设检验?


假设检验(hypothesis testing)是一种统计推断方法,用于判断样本与样本、样本与总体的差异是由抽样误差引起还是本质差别造成的。假设检验是指从对总体参数所做的一个假设开始,然后搜集样本数据,计算出样本统计量,进而运用这些数据测定假设的总体参数在多大程度上是可靠的,并做出承认还是拒绝该假设的判断。


假设检验的基本思想


  • 假设检验的基本思想是“小概率事件”原理,其统计推断方法是带有某种概率性质的反证法。


  • 小概率思想是指小概率事件在一次试验中基本上不会发生。反证法思想是先提出检验假设,再用适当的统计方法,利用小概率原理,确定假设是否成立


  • 即为了检验一个假设H 0  是否正确,首先假定该假设H 0  正确,然后根据样本对假H 0 做出接受或拒绝的决策
  • 如果样本观察值导致了“小概率事件”发生,就应拒绝假设H 0 ,否则应接受假设H 0  。
  • 假设检验中所谓“小概率事件”,并非逻辑中的绝对矛盾,而是基于人们在实践中广泛采用的原则,即小概率事件在一次试验中是几乎不发生的


  • 概率小到什么程度才能算“小概率事件”,显然,“小概率事件”的概率越小,否定原假设H 0 就越有说服力,常记这个概率值为α(0<α<1),称为检验的显著性水平


  • 对于不同的问题,检验的显著性水平α不一定相同,一般认为,事件发生的概率小于0.1、0.05或0.01等,即“小概率事件” 。



AB测试中的假设检验


通过上面的例子我们对假设检验有了基本的了解, 接下来我们看一下如何在AB测试中应用假设检验


  • 原假设H 0 老的方案老的设计
  • 备择假设H 1 新的方案新的设计


在上面的例子中,实验的次数越多我们得到的结论就越准确,那么在AB测试中,实验的次数实际上就是参与实验的人数,我们可以通过设置显著性水平(Significance level) α来倒推参与实验的最少人数,具体计算可以通过上面给出的工具网站实现


显著性水平α : 依据实验结果做出推翻原假设(否定原方案) 选择备择假设(采用新方案) 的决定,犯错的概率, 一般设置为5%


统计功效(1−β): 依据实验结果做出保留原假设(保留原方案) 不选择备择假设(不采用新方案) 的决定,犯错的概率, 一般β设置为20% 那么1−β 为80%



2.4 AB测试与辛普森悖论


辛普森悖论为英国统计学家E.H.辛普森于1951年提出,即在某个条件下的两组数据,分别讨论时都会满足某种性质,可是一旦合并考虑,却可能导致相反的结论。



方案A(现有方案)转化率
方案B(新方案)转化率
Android 用户 70/800 = 8.75% 20/200 = 10%
iphone 用户 10/200 = 5% 50/800 = 6.25%
总用户 80/1000 = 8% 70/1000 = 7%


AB测试中产生辛普森悖论的原因:流量分割不均匀导致的实验组与对照组的用户特征不一致


AB测试中如何避免辛普森悖论


  • 要得到科学可信的 AB 测试试验结果,就必须合理的进行正确的流量分割,保证试验组和对照组里的用户特征是一致的,并且都具有代表性,可以代表总体用户特征。



方案A(现有方案)转化率
方案B(新方案)转化率
Android 用户 70/800 = 8.75% 80/800 = 10%
iphone 用户 10/200 = 5% 12/200 = 6%
总用户 80/1000 = 8% 92/1000 = 9.2%


  • 在实验设计上,如果我们觉得某两个变量对试验结果都有影响,那我们就应该把这两个变量放在同一层进行互斥试验,不要让一个变量的试验动态影响另一个变量的检验。如果我们觉得一个试验可能会对新老客户产生完全不同的影响,那么就应该对新客户和老客户分别展开定向试验,观察结论


  • 在试验实施上,对试验结果我们要积极的进行多维度的细分分析,除了总体对比,也看一看对细分受众群体的试验结果,不要以偏盖全,也不要以全盖偏。一个试验版本提升了总体活跃度,但是可能降低了年轻用户的活跃度,那么这个试验版本是不是更好呢?一个试验版本提升总营收0.1%,似乎不起眼,但是可能上海地区的年轻女性 iPhone 用户的购买率提升了20%,这个试验经验就很有价值了。



AB测试实战(二)+https://developer.aliyun.com/article/1544771?spm=a2c6h.13148508.setting.33.22454f0eHFZZj3

相关文章
|
7月前
|
测试技术 持续交付 UED
软件测试的艺术:确保质量的实战策略
在软件开发的舞台上,测试是那把确保每个功能如交响乐般和谐奏响的指挥棒。本文将深入探讨软件测试的重要性、基本类型以及如何设计高效的测试策略。我们将通过一个实际的代码示例,展示如何运用这些策略来提升软件质量和用户体验。
|
2月前
|
监控 测试技术 数据库连接
RunnerGo API 性能测试实战:从问题到解决的全链路剖析
API性能测试是保障软件系统稳定性与用户体验的关键环节。本文详细探讨了使用RunnerGo全栈测试平台进行API性能测试的全流程,涵盖测试计划创建、场景设计、执行分析及优化改进。通过电商平台促销活动的实际案例,展示了如何设置测试目标、选择压测模式并分析结果。针对发现的性能瓶颈,提出了代码优化、数据库调优、服务器资源配置和缓存策略等解决方案。最终,系统性能显著提升,满足高并发需求。持续关注与优化API性能,对系统稳定运行至关重要。
|
12天前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
190 23
|
2月前
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
243 24
|
4月前
|
存储 人工智能 编译器
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
138 10
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
3月前
|
数据可视化 JavaScript 前端开发
从Postman到Apipost:我的动态参数测试实战踩坑记
作为一名全栈开发工程师,在开发用户中心模块时,我遇到了复杂参数API测试的挑战。最初使用Postman时,发现其在生成动态参数(如邮箱、手机号和日期)时存在诸多问题,导致测试效率低下甚至出错。例如,随机生成的邮箱格式无效等 后来,CTO推荐了Apipost,它提供了更智能的参数生成方式:支持真实邮箱、符合规范的手机号以及合法日期范围,极大提升了测试效率和准确性。通过对比,Apipost在处理复杂动态参数方面明显优于Postman,减少了维护成本并提高了团队协作效率。现在,我们已全面切换到Apipost,并利用其「参数组合测试」功能发现了多个边界条件bug。
|
3月前
|
机器学习/深度学习 设计模式 测试技术
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
|
4月前
|
存储 数据可视化 测试技术
一个测试工程师的实战笔记:我是如何在Postman和Apipost之间做出选择的?
优秀的API测试工具应该具备: 分层设计:既有可视化操作,也开放代码层深度定制 场景感知:自动识别加密需求推荐处理方案 协议包容:不强迫开发者为了不同协议切换工具 数据主权:允许自主选择数据存储位置
117 7
|
5月前
|
搜索推荐 测试技术 API
探秘电商API:从测试到应用的深度解析与实战指南
电商API是电子商务背后的隐形引擎,支撑着从商品搜索、购物车更新到支付处理等各个环节的顺畅运行。它通过定义良好的接口,实现不同系统间的数据交互与功能集成,确保订单、库存和物流等信息的实时同步。RESTful、GraphQL和WebSocket等类型的API各自适用于不同的应用场景,满足多样化的需求。在测试方面,使用Postman、SoapUI和jMeter等工具进行全面的功能、性能和安全测试,确保API的稳定性和可靠性。未来,随着人工智能、大数据和物联网技术的发展,电商API将进一步智能化和标准化,为用户提供更个性化的购物体验,并推动电商行业的持续创新与进步。
162 4
|
4月前
|
小程序 测试技术 数据安全/隐私保护
微信公众号接口测试实战指南
微信公众号接口测试是确保系统稳定性和功能完整性的重要环节。本文详细介绍了测试全流程,包括准备、工具选择(如Postman、JMeter)、用例设计与执行,以及常见问题的解决方法。通过全面测试,可以提前发现潜在问题,优化用户体验,确保公众号上线后稳定运行。内容涵盖基础接口、高级接口、微信支付和数据统计接口的测试,强调了功能验证、性能优化、安全保护及用户体验的重要性。未来,随着微信生态的发展,接口测试将面临更多挑战和机遇,如小程序融合、AI应用和国际化拓展。