A/B测试实践全总结

news2024/11/14 15:21:17

一:基本概念


网站设计中,我们经常会面临多个设计方案的选择,比如某个按钮是用红色还是用蓝色,是放左边还是放右边。传统的解决方法通常是集体讨论表决,或者由某位专家或领导来拍板。虽然传统解决办法多数情况下也是有效的,但A/B 测试(A/B Testing)可能是解决这类问题的一个更好的方法。

所谓 A/B 测试,简单来说,就是为同一个目标制定两个方案(比如两个页面),让一部分用户使用 A 方案,另一部分用户使用 B 方案,记录下用户的使用情况,看哪个方案更符合设计目标。当然,在实际操作过程之中还有许多需要注意的细节。

A/B 测试最核心的思想,即:

  1. 多个方案并行测试;

  1. 每个方案只有一个变量不同;

  1. 以某种规则优胜劣汰。

需要特别留意的是第 2 点,它暗示了 A/B 测试的应用范围,——必须是单变量。

另外,虽然 A/B 测试名字中只包含 A、B ,但并不是说它只能用于比较两个方案的好坏,事实上,你完全可以设计多个方案进行测试,比如ABC测试,“A/B 测试”这个名字只是一个习惯的叫法。

回到网站设计,一般来说,每个设计方案应该大体上是相同的,只是某一个地方有所不同,比如某处排版、文案、图片、颜色等。然后对不同的用户展示不同的方案。

要注意,不同的用户在他的一次浏览过程中,看到的应该一直是同一个方案。比如他一开始看到的是 A 方案,则在此次会话中应该一直向他展示 A 方案,而不能一会儿让他看 A 方案,一会儿让他看 B 方案。

同时,还需要注意控制访问各个版本的人数,大多数情况下我们会希望将访问者平均分配到各个不同的版本上。要做到这些很简单,根据 cookie (比如 cookie 会话ID的最后一位数字)决定展示哪个版本就是一个不错的方法。

要实现 A/B 测试,我们需要做以下几个工作:

1、开发两个(或多个)不同的版本并部署;

2、收集数据;

3、分析数据,得出结果。

二:实践方法


从左到右,3条较粗的竖线代表了 A/B 测试中的3个关键角色:客户端(Client)、服务器(Server)、数据层(Data)。从上到下代表了3种访问形式:

  1. 无 A/B 测试的普通访问流程(Non AB test)

  1. 基于后端分流的 A/B 测试访问流程(Back-end AB test)

  1. 基于前端分流的 A/B 测试访问流程(Front-end AB test)。

A/B 测试需要将多个不同的版本展现给不同的用户,即需要一个“分流”的环节。从上图中我们可以看到,分流可以在客户端做,也可以在服务器端做。

传统的 A/B 测试一般是在服务端分流的,即基于后端的 A/B 测试(Back-end AB test),当用户的请求到达服务器时,服务器根据一定的规则,给不同的用户返回不同的版本,同时记录数据的工作也在服务端完成。

基于后端的 A/B 测试技术实现上稍微简单一些,不过缺点是收集到的数据通常是比较宏观的PV(Page View)信息。虽然可以进行比较复杂的宏观行为分析,但要想知道用户在某个版本的页面上的具体行为往往就无能为力了。

基于前端的 A/B 测试则可以比较精确地记录下用户在页面上的每一个行为。它的特点是,利用前端 JavaScript 方法,在客户端进行分流,同时,可以用 JavaScript 记录下用户的鼠标行为(甚至键盘行为,如果需要的话),直接发送到服务器记录。

下面,我将重点介绍一下我们在基于前端的 A/B 测试上的一些实践。

首先遇到的问题是如何分流的问题。对于大部分需求来说,我们希望各个版本的访问人数平均分配。可以根据某一个 Cookie ID 来划分用户,比如“123.180.140.*.1267882109577.3”,可以根据这个 Cookie ID 的最后一位(在本例中是“3”)来划分人群,比如单数的显示 A 版本,偶数的显示 B 版本。

正确展示对应的版本后,就要开始采集需要的数据了。当前版本有多少 PV (Page Views,访问量),如果需要记录这个数据的话,在正确版本加载完成之时就要发送一个打点信息。不过很多需求中,具体版本的 PV 的精确数值可能不是很重要,而且要收集这个信息需要多一次打点操作,所以一般情况下这个数据是可选的。

必须的数据是测试区域内用户的点击信息。当用户在测试区域点击了鼠标左键(无论这个点击是点击在链接、文字、图片还是空白处),我们就需要发送一条对应的打点信息到打点服务器。一般来说,这个打点信息至少需要包含以下数据:

  • 当前 A/B 测试以及版本标识

  • 点击事件的位置

  • 点击时间戳(客户端时间)

  • 当前点中的URL(如果点在非超链接区域,此项为空)

  • 用户标识(比如 Cookie ID)

  • 用户浏览器信息

三:应用例子


今年,EA公司发布新版《模拟城市》(SimCity)游戏时,在网站做了一个A/B测试,以便试验转化率在不同的布局下是否有变化。

下面是两个不同的版本:

B版本与A版本的差别在于新版本删除了Pre-Order的促销广告图片,页面更清爽一些。

结果数据显示,A版本的转化率为5.8%,B版本的转化率为10.2%,提高了43.4%。

这几乎是一个完美的A/B测试案例:有明确的测试目标,清晰的衡量标准(订单转化率),以及完美的结果数字。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/391432.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小型双轮差速底盘双灰度循迹功能的实现

1. 功能说明 在机器人车体上安装2个 灰度传感器 ,实现机器人按照下图所指定的路线进行导航运动,来模拟仓库物流机器人按指定路线行进的工作过程。 2. 使用样机 本实验使用的样机为R023e样机。 3. 功能实现 3.1 电子硬件 在这个示例中,我们采…

[Linux入门篇]一篇博客解决C/C++/Linux System Call文件操作接口的使用

目录 0.前言 1.C / C ->文件操作 1.1 C语言文件操作 1.1.1 C语言文件打开/关闭/写入 1.1.2 C语言文件的追加操作 1.1.3 C语言文件的读取 1.2 C语言文件操作 1.2.1 C文件打开 / 关闭 / 写入 1.2.2 C文件读取 1.2.3 文件追加 2.三个默认输入输出流 2.1 C语言中的三…

#gStore-weekly | gBuilder功能详解之项目管理

1. gBuilder介绍 我们知道知识图谱整个生命周期分为构建、存储管理与应用三个阶段。其中我们之前介绍的图数据库gStore对应解决的是知识图谱的存储与管理这个阶段问题。实际上知识图谱项目中大部分时间都花在知识图谱构建阶段,虽然知识图谱构建不直接体现价值&…

Hermite插值及其Julia实现

文章目录基本原理算法实现无论是Newton插值还是Lagrange插值,都只能在数值本身上满足插值函数与数据节点的重合,Hermite插值则要求其导数值相等。 基本原理 设在节点a⩽x0⩽x1⩽…⩽xn⩽ba\leqslant x_0\leqslant x_1 \leqslant\ldots\leqslant x_n\le…

ESP32使用TCP HTTP访问API接口JSON解析获取数据

ESP32使用TCP HTTP访问API接口JSON解析获取数据API接口代码解析获取时间代码烧录效果总结API接口 单片机常用的API接口基本都是返回的一串JSON格式的数据,这里以ESP32联网获取时间信息作为获取API数据的示例,以便后续移植使用。 很多功能性的API接…

UML-活动图以及PlantUML绘制

介绍 活动图(英语:activity diagram)是工作流的图形化表示。活动图主要由活动和动作构成,也可以支持分支选择、迭代、并行。在 UML 中,活动图主要用于为计算性和组织性过程(即工作流)建模&…

PaddlePaddle本地环境安装(windows11系统)

写在前面: 这里是关于win11安装PaddlePaddle的步骤和方法,建议参考官方的方法。截止2023年3月份,PaddlePaddle的版本是2.4.2。 官方参考:飞桨PaddlePaddle快速安装使用方法 建议使用Anaconda安装 ,关于Anaconda创建环境的可以借鉴:深度学习Anaconda环境搭建(比较全面)…

Exposure X7胶片滤镜调色插件免费版下载

ps是我们为图片进行调色的一种必要手法,我们可以通过添加滤镜、使用曲线、调整色相、饱和度等ps手法来对图片加以修饰。下面这篇文章就来为大家介绍一下ps调色方法主要有,ps调色插件怎么用的相关知识。 Exposure X7是一款特别好用的胶片滤镜模拟软件&am…

ESP32设备驱动-MicroSD Card驱动

MicroSD Card驱动 1、SDCard介绍 SD卡是Secure Digital Card卡的简称,直译成汉语就是“安全数字卡”,是由日本松下公司、东芝公司和美国SANDISK公司共同开发研制的全新的存储卡产品。SD存储卡是一个完全开放的标准(系统),多用于MP3、数码摄像机、数码相机、电子图书、AV器…

代码看不懂?ChatGPT 帮你解释,详细到爆!

偷个懒,用ChatGPT 帮我写段生物信息代码如果 ChatGPT 给出的的代码不太完善,如何请他一步步改好?网上看到一段代码,不知道是什么含义?输入 ChatGPT 帮我们解释下。生信宝典 1: 下面是一段 Linux 代码,请帮…

开学季平价好用电容笔有哪些?ipadpro触控笔推荐

众所周知,苹果原装的Pencil的售价由于比较高,所以很多用户都无法入手。那么,市场上会不会有一款价格上只有苹果Pencil五分之一左右、但功能几乎相同的电容笔?事实上,确实存在。国内的平替电容笔,不管是压感…

二点回调测买 源码

如图所示,两点回调测买点的效果图,这是我们常见的一种预测买点计算方法。 现将源码公布如下: DRAWKLINE(H,O,L,C); N:13; A1:REF(HIGH,N)HHV(HIGH,2*N1); B1:FILTER(A1,N); C1:BACKSET(B1,N1); D1:FILTER(C1,N); A2:REF(LOW,N)LLV(LOW,2*N1…

正交采样

文章目录【 1、欧拉公式的频谱 】【 2、模拟正交采样 】【 3、数字正交采样 】【 1、欧拉公式的频谱 】 对于余弦信号 cos(2πf0t)12ej2πf0t12e−j2πf0tcos(2\pi f_0 t)\frac{1}{2}e^{j2\pi f_0 t}\frac{1}{2}e^{-j2\pi f_0 t}cos(2πf0​t)21​ej2πf0​t21​e−j2πf0​t&a…

Shell基础 (一)

目录 一、关于shell 1、什么是shell? 2、shell入门 二、shell进阶(重点) 1、变量 2、条件判读语句 3、运算符 一、关于shell 1、什么是shell? Shell(外壳)是一个用C语言编写的程序,它是用…

《程序员面试金典(第6版)》面试题 02.08. 环路检测

题目描述 给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。若环不存在,请返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环&#xf…

如果想了解营销的最高境界,请看如何开创新品类?

如果想了解营销的最高境界,请看 如何开创新品类? 中国奶粉第一品牌飞鹤奶粉~ 品牌策划人王博总结的方法 趣讲大白话:看看高手怎么想 【安志强趣讲信息科技95期】 ******************************* 不懂品牌营销的程序员不是好厨师…

第一次使用Python for Qt中的问题

在创建带有form的python for qt的时候,使用的库是pySide6,而不是pyqt。 因此,需要安装pyside6。 Running "/usr/bin/python3 -m pip install PySide6 --user" to install PySide6. ERROR: Could not find a version that satisfi…

hivesql实现不同的求和需求【分组求和、帕累托累计求和、滑动求和】

hivesql求和,分组求和,帕累托累计求和,滑动求和 实现功能如下示例: 列s1:分组求和,这里以sku_id分组求和,E5单元格对应sku_ida01时的C列求和; 列s2:帕累托求和&#x…

X264简介-Android使用(一)

X264 简介及使用 1、简介 2、环境搭建 3、使用 4、小结 简介 官网连接:https://www.videolan.org/developers/x264.html 官方文档:https://wiki.videolan.org/Category:X264/ x264是用于编码H.264/MPEG-4 AVC视频流的免费软件库。它世界上最流行的…

每天一个linux命令:性能监控和优化命令之top

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止…