| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> app 里的 A_B 测试简介,蚂蚁金服4面Android高级开发 -> 正文阅读 |
|
[移动开发]app 里的 A_B 测试简介,蚂蚁金服4面Android高级开发 |
然后,我还会涉及更多可以探索的高级技巧。 第一步,建立假设假设是根据一种现象提供相应的解释,而 A/B 测试是一种确定假设是否为真的方法。这个假设可能是通过检查现有的数据而产生的,也可能猜测的成分多一点,或者仅仅只是一种“预测”。(对于新功能所涉及到的新指标,假设常常是基于“预测”。)在导航的例子中,可以用这种方式来表达假设:“采用底部导航会较标签增加用户的参与度“。然后,如果你的 app 有对导航风格进行了更改,以及该更改对用户参与度的有影响,你可以根据这个假设来进行相应决策。重要一点的是要记住,测试的唯一目的是证明底部导航对每个用户的平均收入(或者 ARPU)有着直接,积极的影响。 要测试什么(A 是什么?B 又是什么?)下面的表格列出了大部分的情景,可以帮助你确定要如何选择测试的版本。以我们假设的导航实验为例。 “排除测试”这一列表示不参与测试的用户。他们的行为将不会有助于测试结果。我们看看谁是测试用户。 我们根据假设想要度量什么来选择情景 2 或者情景 3。如果仅与新功能有关(例如,如果新功能是需要 app 内购,则这个功能仅和 app 内购买收入相关),那么选择情景 2。如果假设要实现的新功能(例如,如果新功能是“最爱”机制,并且度量指标是用户参与度)与之前的东西(并且是可测量的)相关,则选择情景 3。
谁来测试如果已知观察到的行为会因为假设外的某个因素发生变化 —— 例如,当假设仅考虑全球收入的影响时,已知行为会因居住国而异 ——?需要让该因素(单一国家)的值唯一,或者使用全体人口(所有国家)的代表性样本。 受控的代表性样本的大小也可以设定为总人口的百分比。例如,测试样本大小是总人口的 10%,其中 5% 收到版本 A,5% 收到版本 B,其余 90% 排除在测试之外。也就是 90% 的用户只会看到现有的功能,并不会看到任何新功能,他们的行为被排除在测试指标之外。 要测试多久最长时间: 用户的行为通常会随着时间,这周的第几天,月份,季节等类似因素而变化。为了让版本之间体现出足够的差异,您需要平衡统计显着性和业务的需求。(您的业务可能无法等到你有足够的数据可以完整的统计。)如果知道某个特定指标会在较短的时间段内发生变化,例如一天中的某个时间或一周中的某一天 —— 那么就尝试让测试涵盖这一整个时期。对于需要较长的时间段的指标,只测试几周可能会更好一点,并要根据度量标准随时间的变化进行相应地推测。 最短时间: 测试运行的时间要足够长,来获取足够的数据从而能够提供具备统计意义的结果。通常对应的测试人数是 1,000 个用户(至少)。但是,能否得到明显的结果取决于从假设推导出来的指标分布。你可以通过估计有多少用户能够在所需的时间段内进行测试,从而在合理的时间内完成此操作,然后选择估计用户数量的百分比,以便让你的测试在这个时间段内达到统计显著性。一些 A/B 测试平台能自动管理这些操作,同时也可以提高你的测试采样率,让你的测试更快地达到统计显著性。 第 2 步,整合 A/B 测试平台已经有几种 A/B 测试平台,既可以作为一个独立产品进行测试,也可以作为一个更大分析平台的组件,例如 Firebase 远程配置分析。通过客户端库,平台会向 app 发送一组配置指令。app 不知道为什么要返回某个参数,因此不知道它在测试哪一部分,甚至不知道是否这是测试的一部分。客户端应该按照配置指令自己进行相应配置,由客户端来解释其中的价值。 在最简单的情况下,返回的参数可以是简单的键值对,用于控制是否启用给定功能,如果是,则激活对应的版本。 在更复杂的情况下,如果需要进行大量的远程 app 配置,app 会将参数发送到 A/B 测试平台,测试平台会跟据这些参数来选出更精细的测试配置。例如,如果假设只涉及具有 xxxhdpi 屏幕密度的设备,那么 app 将需要将其屏幕密度发送到 A/B 测试平台。 不要重复发明轮子直接从现有平台中选择一个可以满足 A/B 测试需求的。注意:需要养成相应习惯来做到 A/B 测试和数据驱动决策。
当然,你要为每个要测试的版本写代码。但是,不应该由 app 或某个定制服务来决定在给定时间内使用哪个版本。这要交给 A/B 测试平台来处理,应用这种标准方法,可以在集中管理同一时间内同一人群的多个测试。当你在平台上只执行一个测试时,亲自实现一个简单的 A/B 测试机制才有意义。 对于硬编码两个测试的成本,您可以集成一个现成的 A/B 测试平台。和写两个硬编码测试的成本相比,不如把这些测试集成进一个现成的 A/B 测试平台。 整合分析功能选一个可以提供详细的测试状态信息的现有分析平台,可以自动帮你可以把测试人群进行分类。要紧密地把这两个平台集成在一起,取决于每个测试的具体配置,和要直接在 A/B 测试平台和分析平台之间传递的版本。A/B 测试平台会为每个版本分配一个唯一的引用,并将其传递给客户端和分析平台。然后,只允许客户端把该引用而不是整个版本的配置传递给分析平台。 远程配置一个具有远程配置功能的 app,已经有了实现 A/B 测试时所需的大部分代码。实质上,A/B 测试添加了一些服务器端的规则用来确定什么配置发送到 app。 对于没有远程配置功能的 app,那么引入 A/B 测试平台是让你引入这一功能的其中一个好方法。 第 3 步,测试假设一旦确定好你的假设和设计好测试,而且也集成了 A/B 测试平台,实现你的测试版本就是一个最简单的操作了。下一步,开始你的测试。A/B测试平台将一组样本用户分配在测试群体上,然后给每个测试用户分配版本。然后平台继续在理想时间段内的分配用户。对于更高级的平台,平台会一直执行测试,直至达到统计显著性。 监控测试我建议在测试过程中监控新版本所造成的影响,包括测试假设中未提及的指标。如果你发现它会造成不良的影响,那么可能要尽早停止测试,尽可能快地让用户恢复到之前的版本 —— 最大限度地减少糟糕的用户体验。一些 A/B 测试平台能够自动监控并会提醒测试可能会有意想不到的负面影响。如果你的平台不能做到这一点,你需要把现有的监控系统中看到的任何影响和目前的测试相互参考,来识别“不良”版本。
第 4 步,分析并得出结论一旦测试正常结束,你就可以用在分析平台中收集到的数据确定测试的结果。如果结果指标和假设相符,那么你可以认为这个假设是正确的。否则,你猜错了。确定观察结果是否具有 统计显著性 取决于指标的性质和分布。 如果假设错误 —— 因为相关指标没有正面或者负面影响 —— 那么就没有理由继续保留这一版本了。然而,新的版本可能会对相关但意想不到的指标产生积极的影响。这可能是一个选择新版本的理由,但通常来说执行一个专门针对辅助指标的附加测试来确认其影响会更好一点。实际上,一个实验的结果经常会引起额外的问题和假设。 第 5 步,采取行动如果假设是真的,并且新的版本比旧的好,那么我们可以更新要传递给 app 的“默认”配置参数,指示它使用新的版本。一旦新的版本为成为默认后持续了足够的时间,你就可以把旧版本的代码和资源从下一个版本的 app 中删除。 迭代展示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 测试是测试两种以上版本的简写。这可能是多个新的版本要取代现有的版本,如有全新功能的几个版本要取代没有任何新功能的版本。当你进行了深度地分组后,可能会发现不同的版本会在不同的组中表现最好。 多变量测试一个多变量测试是一个单一的测试,它一次性改变 app 多个部分。然后,在 A/n 测试中,将唯一的一组值作为一个单独变量处理。例如: 会在不同的组中表现最好。 多变量测试一个多变量测试是一个单一的测试,它一次性改变 app 多个部分。然后,在 A/n 测试中,将唯一的一组值作为一个单独变量处理。例如: |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 17:18:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |