Laravel 5的服务端A/B测试工具。

0.5.1 2016-04-20 00:47 UTC

This package is not auto-updated.

Last update: 2024-09-26 00:14:36 UTC


README

Laravel的服务端A/B测试工具,是Optimizely等服务的优秀免费替代品。使用A/B测试来确定哪些内容有效,哪些无效。

该工具允许您对网站的不同版本进行实验,并跟踪它们之间参与度或达到目标的差异。每次您请求A/B测试类当前的实验时,它将选择访问次数最少的下一个实验,以确保每个实验都能得到公平的测试。当有一个正在进行的实验时,它将开始跟踪参与度(点击不同的链接或提交表单)并检查是否达到某些定义的目标。这些目标通常是url或路由,但也可以手动触发。

安装

使用composer安装

composer require rcalmeida/ab

app/config/app.php中添加服务提供者

'RCAlmeida\AB\TesterServiceProvider',

注册AB别名

'AB'           => 'RCAlmeida\AB\Facades\AB',

配置

发布包含的配置文件

php artisan config:publish rcalmeida/ab

接下来,编辑config/ab.php文件。以下配置选项可用

数据库连接

这是您用于存储A/B测试数据的Laravel数据库连接。当您想将A/B测试数据存储在不同的数据库中时,这很有用。为空时,它将使用您的默认数据库连接。

'connection' => 'mysql',

实验

这些是您的A/B实验。这些是您可以在代码或视图中使用的唯一标识符,用于决定应显示哪个版本。

'experiments' => [
    'big-logo',
    'small-buttons',
    'short-form'
],

目标

没有目标,每个实验将跟踪看到实验的访问者数量并检测参与度。此外,您还可以定义想要通过实验达到的特定目标。如果您的目标是让访客购买您的产品或联系您获取更多信息,并且您为这两个页面都设置了特定的路由,则您的目标可能如下所示

'goals' => [
    'pricing/order',
    'contact'
]

您的目标可以是相对url、命名路由或可以手动触发。

准备A/B测试数据库

一旦您选择了数据库连接,请使用包含的安装命令准备所需的表

php artisan ab:install

数据库结构小巧轻便,因此不会影响您的应用程序。

使用

在定义了您的实验和目标之后,您可以开始设计您的A/B测试。所有访客都将获得访问次数最少的下一个实验。您可以使用AB::experiment()方法请求当前实验标识符。例如,如果您定义了以下实验['a', 'b', 'c'],则您的视图可能如下所示

@if (AB::experiment('a'))
    <div class="logo-big"></div>

@elseif (AB::experiment('b'))
    <h1>Brand name</h1>

@elseif (AB::experiment('c'))
    <div class="logo-greyscale"></div>
@else
    // Original or default value
    // This maybe appears when experiment has inactive
@endif

一旦访客被分配到实验,他的下一次点击将自动跟踪以查看他是否与您的网站互动或完成某些目标。这些目标是相对url或命名路由,当访客在实验期间访问该url时,将被标记为完成。

注意:只有在您正在进行实验时才会跟踪访客。只有当您请求当前的AB::experiment()时,它才会使用当前的Laravel会话为该用户分配一个实验。

添加新实验

如果您想添加新实验,最好使用此命令清除现有的A/B测试数据

php artisan ab:flush

如果您不清除现有的实验数据,所有新访客将首先看到新的实验,直到它的页面浏览量赶上旧实验。

报告

A/B测试报告可通过Artisan命令获得

php artisan ab:report

这将生成一个简单的输出,包含每个实验的结果及其目标。

+------------+----------+----------------+---------------+---------------+---------------+
| Experiment | Visitors |     Engagement |           Buy |       Contact |       Pricing |
+------------+----------+----------------+---------------+---------------+---------------+
|          a |  173,074 | 6.0 % (10,363) | 1.3 % (2,249) | 4.8 % (8,307) | 5.3 % (9,172) |
|          b |  173,073 |  5.1 % (8,826) | 1.1 % (1,903) | 3.5 % (6,057) | 3.9 % (6,749) |
|          c |  173,073 |  5.0 % (8,653) | 1.0 % (1,730) | 1.3 % (5,538) | 3.2 % (5,538) |
+------------+----------+----------------+---------------+---------------+---------------+

您还可以使用此命令将这些报告导出为.csv格式

php artisan ab:export /path/to/file.csv

如果您在没有文件路径的情况下运行该命令,它将写入控制台。

高级

AB::pageview()

用于手动触发页面浏览。

AB::interact()

用于手动触发互动,从而产生参与。

AB::complete($goal)

用于手动触发目标。当您想跟踪与url或路由未链接的目标时非常有用。

AB::getExperiments()

获取实验列表。

AB::getGoals()

获取目标列表。

AB::hasExperiments()

如果表中“实验”有超过1个实验,则返回true。

AB::currentExperiment()

返回当前会话实验的名称。

高级

由Raphael Almeida编辑和修复