詹姆斯布莱克威尔/laravel-experiments

为 Laravel 提供的服务器端 A/B 测试工具。

dev-master 2016-04-26 14:56 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:53:07 UTC


README

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

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

安装

需要此包

composer require jamesblackwell/laravel-experiments

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

'Jamesblackwell\AB\TesterServiceProvider',

注册 AB 别名

'AB'           => 'Jamesblackwell\AB\Facades\AB',

配置

发布包含的配置文件

php artisan config:publish jamesblackwell/ab

接下来,编辑 config/packages/jamesblackwell/ab/config.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()

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

高级

由 @rafelsanso 编辑并导出到 Laravel 5.1