如何确保页面上只运行一个Optimizely Experiment并获得公平的流量?

时间:2014-07-10 22:56:22

标签: reverse-engineering ab-testing optimizely

使用Optimizely我可以在同一个项目中创建一个或多个实验,但不能保证它们不会同时执行。例如,如果我为具有100%访问者的流量分配的特定网址创建2个实验 - 所有这些实验都将接受这两个实验。这并不好,因为第一次实验给出的经验将与第二次实验相结合;它们可能会发生冲突并可能影响最终数字。

官方文档告诉您,您可以使用自定义JavaScript来设置实验,方式是只为访问者激活组中的其中一个:

https://help.optimizely.com/hc/en-us/articles/200040205-Mutually-exclusive-experiments

我对JavaScript很好,但不幸的是,它需要在代码中预定义独立实验列表,并将该脚本复制粘贴到每个实验中。此外,该技术没有考虑到定位规则,因为在列表中进行所有这些实验并不能保证所有这些实验都会被激活。

我正在寻找可以放在Optimizely片段上方/下方的JavaScript。该代码应该知道哪个实验与当前页面视图匹配,并且只激活其中一个实验。

更新:2014年7月12日 优化更新他们的代码,所以现在看起来一切都变得更加复杂。无论如何,经过长时间的逆向工程和调试会话,如果我们可以在测试现有实验的顺序之前对流量分配规则进行测试(在今天的变化之后 - 未分段的受众),看起来问题可能会得到解决。

2 个答案:

答案 0 :(得分:2)

第1步:将两个实验的激活模式更改为“手动激活”。

第2步:使用一种变体创建第三个实验(代理)。所以你将拥有控制和变化1。

第3步:在控制手册上激活实验1并在变体1手册上激活实验2

结论:代理将在两个实验之间分配流量(50/50)并保证实验永远不会同时运行。

答案 1 :(得分:0)

优化无法保证每个给定页面只会激活一个实验。此外,他们提出的方法无法保证这些实验将获得50%/ 50%的流量。

如果您知道在页面上进行2-4次并发实验,并且您希望以特定比例分配流量,则必须将随机化代码添加到:

  1. 页面上Optimizely代码段上方的脚本。
  2. Project JavaScript
  3. Global JavaScript of the each concurrent experiment
  4.     if(!window.trafficSegment) {
          window.trafficSegment = Math.floor(Math.random()*4+1);
        }
    

    此代码生成1到4的随机数,概率相同 - 为25%。 现在,您可以在受众群体定位条件中使用此变量。

    enter image description here

    另一项实验可以让受众定位下半部分流量:

    var ts = window.trafficSegment;
    return ts >=3 && ts <=4;
    

    这不是一个完美的解决方案,但如果不修补Optimizely code,这是最简单的方法。