详细讲解 A/B 测试关键步骤,快来检查下还有哪些疏漏的知识点

作为一种对照实验方法,A/B 测试通过比较两个 (或多个) 不同版本之间的差异来验证假设是否正确。该方法将特定测试组从实验其余部分中独立出来,从而得出可靠结果。在被测人不知情且测试场景真实的情况下,A/B 测试得出的结果最为有效。

为使每个版本的样本群体具有代表性,A/B 测试平台随机让用户使用版本 A 或版本 B,或者将其排除在测试之外。测试平台须要确保用户在整个测试周期中体验一致 (总是 A 或总是 B),并向分析平台提供额外元数据以确定对指标的影响。一旦完成指标分析并确定最佳版本,您可以通过 A/B 测试平台向所有用户逐步推广获胜版本。

譬如,您建立假设 “与应用中的标签相比, 底部导航能更好地提高用户参与度”。为此,您可以设计一个 A/B
测试来比较标签 (版本 A) 和底部导航 (版本 B)。接着,测试平台会生成一个用户基础样本,并将样本内用户随机分配使用版本 A 或版本 B,
同时保证每位用户在测试期间将一直使用被分配到的版本。在测试结束时,您可比较两个版本的用户参与度,观察版本 B 的参与度是否显著高于版本 A。若版本 B
的数值更高,这说明数据支持您选用底部导航设计,并向所有用户推广这一版本。


左边?: ?版本 A,
标签;右边?: ?版本 B, 底部导航

关于 Google Play 管理中心中商店资讯实验的说明

Google Play 管理中心还支持对应用的商店资讯进行 A/B
测试,本文对此不加赘述。商店资讯实验能让您测试不同的图标、功能图、推广视频、简短描述和详细描述,观察应用的安装量是否随之增加。商店资讯实验侧重提高用户转换率,而本文的余下部分则着重讨论应用内
A/B 测试对安装后指标的影响,如用户存留率,用户参与度和应用内购买营收。

在这篇文章中,我将介绍应用内 A/B
测试的五个关键步骤:

1. 建立假设

2. 整合 A/B 测试平台

3. 测试假设

4. 分析并得出结论

5. 采取措施

此外,本文还会稍微谈一下您可能会用到的高级技巧。

假设是对某种现象提出的解释,而 A/B
测试则是用来鉴定假设是否正确的一种方法。假设的建立可能基于对现有数据的检查,也可能更具猜测性,或者是仅凭“直觉”得出来的
(对于涉及新指标的新功能,此类“直觉”性假设往往更为常见)。在上文提到的导航例子中,可以建立如下假设:“弃用标签,改用底部导航可增加用户参与度”。接下来,您可以根据作出相关决定
—— 对应用导航风格作出何种改变 (如果可以改变的话) 以及这个改变对用户参与度又会带来哪些影响。要记住这个要点:测试的唯一目的是验证底部导航对每用户平均营收
(即 ARPU) 有直接的积极影响。

要测试什么 (A 是什么?B
又是什么?等等)

下面的表格列举了大致场景,可以帮助您如何决定选择测试版本。以我们假设的导航实验为例:

△?“从测试中排除”
这一列表示不参与测试的用户;他们的行为不计于测试结果。详情请参照下文
“测试谁“ 板块。

根据假设测量指标的不同,可选择场景 2 或场景 3。如果测量指标仅与新功能相关,请选择场景 2
(例如,若新功能是应用内购买,那么只有新功能实现后,“应用内购买营收”这项指标才有意义)。如果假设涉及的测量项,在添加新功能之前,也具有意义,请选择场景 3
(例如,若新功能是 “最爱” 机制,而测量项是用户参与度)。

注意: 在下文到 “采取行动”
部分前,为简洁起见,我将使用情景 1 为例。 相同的方法亦适用于情景 2 和情景 3,并且我会以 “现有版本” 和 “新版本” 代替 “新 1 版本” 和 “新
2 版本”。

测试谁?

若被观察行为受到假设以外的某些因素影响
(如,已知行为根据国家不同而发生变化,而假设仅仅考虑全球收入影响),请将该因素设定为唯一值 (单一国家) 或者使用全体人口 (所有国家)
的代表性样本。

具有代表性的控制样本大小也可设定为总人口的百分比。例如,测试样本为总人口的 10% —— 版本 A 和版本 B 各占 5% —— 剩余 90%
人口则排除在测试外。即是说,这 90% 的人或使用现有功能,或完全看不到任何新功能,且他们的行为不被计入测试指标内。

测试多久?

最长时间:用户的行为通常会随着时间发生变化,一天中的某个时段,一周中的某一天,某个月,某个季节等等。为了体现这些差异,您会想要在统计意义和业务需求之间找到某种平衡
(您的业务可能无法等到您拥有足够的数据完成统计)。如果知道某项特定指标会在短时间内发生变化 —— 例如一天或者一周中的某一天 ——
那就尝试让测试涵盖这整个时期。对于用时较长的指标,只测试几周可能会更合适一点,然后根据已知的随时间变化结果进行相应推断。

最短时间:须要测试足够长的时间,以便获取足够数据使得结果具有统计意义。这通常意味着受测用户至少达到
1000
人。不过,能否取得明显的测试结取决于从假设推导出来的指标的分布情况。那么如何在合理时间内完成测试呢?您可以通过估计有多少用户能够在所需的时间段内进行测试,然后从中选择一定比例的用户作为测试者,这样您的测试就能在这段时间内达到统计意义。一些
A/B 测试平台能自动管理这些操作,同时也可以提高您的测试采样率,让您的测试更快地达到统计意义。

目前市面上已经有几种 A/B 测试平台,它们或是独立的产品,或是某更大分析平台 (如 Firebase
远程配置及分析)
的某一组件功能。通过客户端库,平台会向应用发送一组配置指令。由于应用不知道为什么要返回某个参数,因而无法获知这是测试的哪个部分,甚至不知道这是否属于测试的一部分。客户端仅仅是按照配置指令进行相应配置。此外,平台不关心返回到客户端的参数值的意义;而是由客户端自行解释。在最简单的情况下,返回的参数可以是简单的键值,对于控制是否启用给定功能,如果须要启用,则激活对应的版本。

在更复杂的情况下,如须要进行大量的远程应用配置,应用会将参数发送到
A/B 测试平台,测试平台会跟据这些参数对测试进行更为精细的调整。例如,如果假设只涉及具有 xxxhdpi 屏幕密度的设备,那么应用须要将其屏幕密度发送到
A/B 测试平台。

不要重复工作

请选择一个能够满足您 A/B 测试需求的现有平台。请注意:平台提供的 A/B
测试以及数据驱动型决策是习惯性的。

保持测试状态一致,并公平分配受测用户到多个测试并非易事。没有必要从零开始写代码。

当然,每个测试版本的代码还是必须要写的。不过,不应该由应用或某个定制服务来决定在给定时间内使用哪个版本;而是交由
A/B 测试平台处理,这样就可以应用标准方法,在同一时间对同一人群进行多项测试。只有当您确定只须进行单项测试的情况下,自己动手编写 A/B
测试机制代码才有意义。与其花大成本写两个测试的代码,不如集成一个现有的 A/B 测试平台。

整合分析工具

所以说您可以将受测群体进行自动分组,挑选一个可以直接向您现有分析平台提供详细测试状态信息的分析平台。能否紧密将两个平台整合在一起,取决于每个测试的具体配置以及直接在
A/B 测试平台和分析平台之间传递的版本。A/B
测试平台会为每个版本分配一个全局唯一引用,并将其传递给客户端和分析平台。在这种情况下,客户端只须要将该引用而不是整个版本的配置传递给分析平台。

远程配置

若应用具备远程配置功能,那么它本身就已经拥有实现 A/B 测试所需的大部分代码。基本上,A/B
测试添加了一些服务器端规则来确定向应用发送何种配置。若应用不具备远程配置功能,那么 A/B 测试平台是引入这一功能的好方法。

 

一旦完成假设和测试设计,并集成 A/B
测试平台,实现测试版本就是最简单的一步了。接下来,请开始进行测试。A/B
测试平台将一组样本用户分配到测试群体上,并将测试版本分配给每位测试用户。在接下来的测试时间内,平台会继续分配用户参与测试。若平台更为高级,那么测试会一直进行,直至达到统计价值。

监控测试

我建议在测试过程中监控新版本所造成的影响,包括那些在假设中未被提及的指标。如果您发现负面影响,可能需要提早停止测试,让用户尽早恢复到之前的版本——最小化不良用户体验。某些
A/B
测试平台能提供监控功能,并在测试遇到意外负面影响时发出自动警告。否则,您须要对之前监控系统监测到的影响和现有测试进行交叉对照,以识别“不良”版本。

注意:
如果须要提早停止测试,那您应该谨慎处理收集到的数据,因为无法确保测试群体样本具有代表性。

一旦测试正常结束,您就可以利用在分析平台中收集到的数据得出测试结果。如果结果指标和假设相符,那么你可以确认该假设为真,反之,则为否。观察到的结果是否具有统计意义取决于指标的性质和分布。

如果假设错误
—— 因为相关指标没有正面或者负面影响 ——
那么就没有理由继续保留这一版本了。不过有些情况下,新版本可能会对一个相关但意料之外的指标产生积极影响。这或许是支持新版本的正当理由,但是一般来说还是针对该指标重新设计一个测试更好一点。实际上,一个实验的结果往往会产生额外的问题和假设。

如果假设正确,并且新版本比旧版本好,那么返回到应用的“默认”配置参数会被更新并且指示应用使用新版本。一旦应用将新版本设为默认版本,并使用足够长时间后,那么在下次发布的时候,旧版本的代码和资源就会从应用内移除。

渐增发布

A/B 测试平台的常见用例之一就是转变自身角色成为渐增发布机制,将测试的获胜版本逐渐推广到所有用户,以取代旧版本。可以把它当作 A/B
设计测试,而渐增发布则是一种 Vcurr/Vnext 测试,用以确认所选的版本不会对更多用户造成负面影响。可以通过逐步提高接收新版本的用户百分比 (例如,从
0.01%提高到 0.1%,1%,3%,7.5%,25%,50%,100%)
来进行渐增发布,并观察在进入下一步之前是否有不利的结果。同时你还可以用其他方式进行分类,包括国家,设备类型,用户组等。你还可以选择仅向特定用户群体
(如内部用户) 发布新版本。

高级实验

譬如说,您可以设计一个简单的 A/B 测试进一步理解用户行为范围。您还可以同时运行多个测试,并在单个测试中比较多个版本,从而提高效率。

深度分组和定位

A/B 测试结果可用于分析不同分组间的差异,也可用于确定目标方法论。在这两种情况下,可能须要提高采样率或延长测试时间让每个组都具有统计意义。例如,标签
vs
底部导航假设的测试结果可能会根据国家的不同而有所不同;在另外情况下,一些国家的用户参与度可能会大幅度增长,有些则没有变化,有的略有下降。在这种情景下,A/B
测试平台可以根据国家设置不同的“默认”版本,以最大限度地提高用户总体参与度。

针对特定组可以使用同一组的数据进行测试。例如,您可以测试居住在美国的用户和之前使用过标签导航风格的用户。

A/n 测试

A/n
测试是指被测版本超过两个的测试。这可能是用几个新版本代替某一现行版本;或者是几个添加新功能的版本与无新功能的版本进行比较。在进行深度分组之后,您可能会发现不同的组表现最好的版本也各有不同。

多变量测试

多变量测试允许开发者在单次测试内,同时改变应用的多个项目,并根据每一组值设计出单独测试版本用于 A/n 测试。譬如说:

若多个相关项目会共同作用影响指标整体表现,多变量测试是不错的选择,不过可能会无法确定影响究竟来自哪一个具体项。

扩大测试规模

若在同一人群中同时进行多项测试,那么这些测试必须由同一个平台管理。有些平台可以支持千项并行测试,有些平台则只支持独立测试
(即用户一次只能进行一次测试),而有些平台则允许共享测试群
(即用户同时进行多个测试)。前一种情况更易管理,但会迅速用完测试用户,并达到具有统计价值的并行测试数量上限。后一种情况会增加 A/B
测试平台管理难度,但是不存在并行测试数量上限,因为平台把每一个测试当作另一个测试的附加组。

自我选择

自我选择让用户获知自己正在使用某一特定测试版本。用户可以自行选择使用版本,或者让 A/B
测试平台随机给他们分配。无论哪种情况,这些用户数据都不可用于指标分析,雅思托福怎么考因为他们并不是在不知情的状态下参与测试 ——
由于知道这是一个测试,因此他们的反应可能带有偏见。

结论

应用内测试是一款非常灵活的工具,助力开发者制定由数据驱动的决策,正如我在前文中强调的一样,它可以帮助您对新功能作出明智选择。A/B
测试允许您向真实世界中的真实用户测试应用的方方面面。为了简化应用内 A/B 测试的设计、集成、执行及分析,谷歌提供了一整套工具,包括:

请记住:在 A/B
测试中,结果分析很重要。测试和分析双管齐下才能为您提供洞见,改善应用未来的设计及开发,激发应用最优性能。

若您对 A/B 测试有任何疑问或者想法,欢迎您在文章下方留言与我们讨论。

 

 

?点击屏末?|?阅读原文?| 您可查看?Android?和?Google
Play
?相关内容信息

推荐阅读:

·?如何优化您的
Android 应用 (Go 版)
·?Material Design
现在不仅仅是设计指南
·?在 Android P 中使用默认 TLS
来保护您的用户?



文章来源:https://blog.csdn.net/jILRvRTrc/article/details/80837505

原文地址:https://www.cnblogs.com/yujingyua/p/9645394.html

时间: 2024-10-27 04:35:09

详细讲解 A/B 测试关键步骤,快来检查下还有哪些疏漏的知识点的相关文章

详细讲解提高数据库查询效率的实用方法、外键关于性能

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0 3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放

小白学习大数据测试之主流程和关键步骤

转发是对小编的最大支持 万变不离其宗,不论是什么测试ta的主流程基本都是一样的,就是我们刚开始学习测试的那一套流程.也许你会觉得简单,但你要明白,无规不成方圆,有时候没有推行好或者结果不好不一定是因为技术不行,也许是没有好的流程.就好像,一辆汽车的生产,如果没有好的流程你觉得最终出来的汽车质量会好吗? 明白这个道理之后,我们就先来看看大数据测试的主流程是个神马样子的. 需求分析.这步考虑的越全面那么后续问题就会越少. 测试计划.此处省略N个字. 测试用例编写与评审.可以从数据库层面和页面层面考虑

[iOS]数据库第三方框架FMDB详细讲解

[iOS]数据库第三方框架FMDB详细讲解 初识FMDB iOS中原生的SQLite API在进行数据存储的时候,需要使用C语言中的函数,操作比较麻烦.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepersistentobjects等. FMDB是一款简洁.易用的封装库.因此,在这里推荐使用第三方框架FMDB,它是对libsqlite3框架的封装,用起来的步骤与SQLite使用类似,并且它对于多线程的并发操作进行了处理,所以

C++语言堆栈的详细讲解

本文主要向大家介绍了C++语言堆栈的详细讲解,通过具体的内容向大家展示,希望对大家学习C++语言有所帮助. 一.预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 2.堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 .注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵. 3.全局区(静态区)(stati

文案写作有哪些关键步骤?

从事网络运营工作,文案写作是必不可少的环节,那文案写作中有哪些注意事项,有哪些关键步骤呢,本文就和大家一起来扒一扒. 文案归根结底是产品(品牌)战略的终端艺术展示,卓越的文案离不开对战略思想的彻悟,对产品的用心体验.对用户的感同身受. 我以前面试高级运营候选人时,经常会使点小坏心眼: 先跟候选人谈生活谈理想让他极度放松跟我称兄道弟以为Offer十拿九稳的时候,漫不经心的抛出一个烧脑的开放型问题,比如: "假如你现在运营共享雨伞app,要在地铁投放一期广告,文案你打算怎么写?" 大部分人

详细讲解Android的网络通信(HttpUrlConnection和HttpClient)

前言,Android的网络通信的方式有两种:使用Socket或者HTTP,今天这一篇我们详细讲解使用HTTP实现的网络通信,HTTP又包括两种方式编程方式: (1)HttpUrlConnection: (2)HttpClient: 好了,我们直接进行讲解,当然之前也会有一部分有关Android网络通信的其他知识,我们也应该了解. 一.获取网络状态的方法 (1)MainActivity.java中的关键代码 1 2 3 4 5 6 7 8 //网络管理类,可以判断是否能上网,以及网络类型     

Android自定义相机超详细讲解

Android自定义相机超详细讲解 转载请标明出处: http://blog.csdn.net/vinicolor/article/details/49642861: 由于网上关于Android自定义相机的文章写得不是太详细,Google官方的文档又说得不太容易理解,所以今天我来详细讲解一下Android自定义相机. 这篇文章主要写给一些刚刚接触Android的那些看官方API困难以及不太了解Android机制的同学们,所以熟练开发者可以绕道了. 最近在使用Camera类的时候发现居然被弃用了,

CentOS 5 CentOS 6 启动流程及关键步骤

CentOS 5 CentOS 6 启动流程及关键步骤 1.加电自检:当打开主机电源时,主机会唤醒cpu,使其运行CMOS中的BIOS, BIOS检查必要的硬件是否存在(内存.硬盘等) BIOS其实是一个小型系统,可以完成一些像检测这样的任务. 自检若不通过,关机 2.BIOS查找可启动设备 自检通过,根据BIOS设定的启动顺序(一般有硬盘启动.光盘启动.移动设备启动.以及网络启动等,这个设定值可通过人工干预修改以使加载不同的系统)找到第一个具有引导程序(bootloader)即为要加载的设备,

Spark SQL操作详细讲解

一. Spark SQL和SchemaRDD 关于Spark SQL的前生就不再多说了,我们只关注它的操作.但是,首先要搞明白一个问题,那就是究竟什么是SchemaRDD呢?从Spark的Scala API可以知道org.apache.spark.sql.SchemaRDD和class SchemaRDD extends RDD[Row] with SchemaRDDLike,我们可以看到类SchemaRDD继承自抽象类RDD.官方文档的定义是"An RDD of Row objects tha