• 使用optimizely做A/B测试


    摘要:

    optimizaly是一个提供A/B测试服务的网站,可以可视化地在线编辑测试内容和目标,简单方便。

      1. A/B测试简介

    所谓 A/B 测试,简单来说,就是为同一个目标制定两个方案(比如两个页面),让一部分用户使用 A 方案,另一部分用户使用 B 方案,记录下用户的使用情况,看哪个方案更符合设计目标。参考:

    http://oldj.net/article/ab-testing-basic-concept

    http://www.zhihu.com/question/20045543

    http://en.wikipedia.org/wiki/A/B_testing

    https://www.optimizely.com/ab-testing

       2. optimizaly是什么

    optimizaly是一个提供A/B测试SaaS服务的互联网公司,网址是https://www.optimizely.com。是家美国公司,2010年创立,获得$1.2M,2013.04获得A轮$28M,2014.05获得B轮$57M。参考:

    https://www.optimizely.com/about

    http://en.wikipedia.org/wiki/Optimizely

    http://www.zhihu.com/question/23756936

      3. optimizaly的使用简述

    (1)测试发布

    测试发布流程:登陆optimizaly的网站  —>输入要测试的URL —>在optimizaly上编辑对照版本的页面 —>在optimizaly设定测试目标 —>在页面源码上加入一小段js,该js由optimizaly生成 —>启动测试

    所有测试发布操作都是可视化的。可以在线编辑页面各元素的内容、坐标、样式,也可以插入或删除元素。新增图片时,可以上传到optimizaly的cdn上,也可以提供已存在图片的URL。

    提供了多种测试目标的设定:

    a)点击事件,在一个预览页面上,可视化地进行点击页面配置

    b)pageView,提供精确、简单、子串、正则表达式四种URL匹配方法

    c)自定义事件,要通过optimizaly提供的api进行设定

    操作细节详见:https://www.optimizely.com/gettingstarted

    测试发布的关键在于optimizaly生成的js代码,所有与测试相关的在线编辑,都会相应地体现在该js代码里,最终也是通过此js控制页面显示与数据统计。

     

    注意:该js需要加入到html的head中。该js保存在optimizaly的cdn服务器上,每个测试有一个固定的js的url,但每次修改测试内容或目标,都会生成一个新的js,但url不变。

    实际的页面大改版,不适合在线编辑页面,会有实际的页面文件存在于我们自己的服务器,可以通过重定向的方式,对新旧版本页面做A/B测试,详见:https://help.optimizely.com/hc/en-us/articles/200040675-Redirect-experiments-Comparing-two-separate-pages 

    (2)页面浏览与统计

    页面浏览流程:输入网址并回车  —>下载页面元素,并要下载optimizaly的js —>optimizaly的js通过hash计算出展示给用户的页面版本,并通过js控制展示,发送一个uv记录到optimizaly服务器—>用户操作...  —>如果触发预设的事件,则通过ajax发送相应记录到optimizaly服务器

    用户浏览测试页面,会额外产生两类流量:

    a)下载optimizaly的js代码:因为js是在head中,所以打开页面时必然要先加载此js,且会影响到用户打开页面的速度。js文件大小是46KB,位于美国的服务器上,我的网络的打开速度在200-500ms之间。可以考虑把此js放到自己的国内服务器上,但要保证每次修改测试时,都要及时更新js文件。

    b)触发统计事件,发送消息给optimizaly服务器:接受操作日志的服务器也在美国,我的网络延迟在300ms以上,低概率出现发送失败或时间超长的情况,但因为是异步发送操作日志,对用户是没有影响的。如果发送失败,则丢失统计数据

    (3)统计结果查看

    optimizaly有专门的测试结果页面,使用比较简单,结果也直观。有几个指标,说明如下:

    visitor over time:统计周期的uv数

    conversion over time:如果用户对页面进行操作,此处数值就加1;多次操作也算1

    conversion rate:conversion/visitor的计算结果

    improvement:会挑选一个版本叫做baseline,此数值表示与baseline的转换率差值

    chance to beat baseline: 若用当前版本替换baseline,战胜它的概率

      4. optimizaly的一些技术细节

        (1) 如何辨别UV

    关键在于cookie,会存储用户id,测试id,浏览版本记录,用户设备信息,最近10次历史操作,时间戳等信息。详见:

    https://help.optimizely.com/hc/fr/articles/200040335-What-information-does-Optimizely-store-in-its-cookies-

    https://help.optimizely.com/hc/en-us/articles/200040335-How-Optimizely-Works-Snippet-order-of-operations-JavaScript-evaluation-timing-and-cookies 

    optimizaly生成的js中,根据用户cookies,通过一个hash算法,计算出当前用户展示的页面样式,或者跳转页面,一个用户总会看到相同版本的页面,算法的细节没能找到资料。如果删除了cookie,即便是同一台电脑同一个浏览器,再次访问时,又会当做一个新的uv。

        (2) optimizaly的架构

    有三个组件:

    a) Google App Engine,用于存储用户账户、测试配置信息

    b) Amazon Elastic Compute Cloud and Simple Storage Service,用于接收、存储、计算统计数据

    c) Akamai ,用于存储生成的js文件

    optimizaly的官方网站没有披露更多技术细节 

      5. optimizaly的坑

    (1)费用

    它提供的A/B测试是收费的,按照被测网站的uv收费,类似运营商套餐,按月计费,不同套餐提供不同的月uv上限,超出部分费用另算。详见:https://www.optimizely.com/pricing

    (2)统计精度

    可能出现统计不准的情况,可能的原因有

    a)统计事件发送失败:统计服务器在美国,低概率发送失败,文档前面有描述

    b)统计结果非实时:一次用户操作后,一般5分钟以后才能在统计结果里查到,并且各指标是分开统计的,例如可能用户的uv数已经+1了,但该用户的点击操作还没有+1

    c)可能optimizaly本身就不准

    (3)optimizaly网站最好翻XX墙

    测试配置、统计结果等页面经常打不开,最好带梯子。

  • 相关阅读:
    linux安装nodejs
    linux系统执行.exe文件
    linux部署php网页
    S: WARNING: Could not write to (C:UsersAdministratorAppDataLocalapktoolframework), using C:UsersADMINI~1AppDataLocalTemp instead...
    Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file at brut.androlib.res.decoder.ARSCDecoder.decode
    .frm文件怎么导入到数据库
    layui时间控件闪退的问题
    spring boot集成Swagger2
    java.io.IOException: Connection reset by peer at sun.nio.ch.FileDispatcherImpl.read0(Native Method) at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)
    spring Securicty入门(一)
  • 原文地址:https://www.cnblogs.com/todsong/p/3918406.html
Copyright © 2020-2023  润新知