jenssegers / ab
Laravel的服务端A/B测试工具。
Requires
- php: >=5.4.0
- illuminate/support: 4.*|5.*
- league/csv: ~6.0
- symfony/console: *
Requires (Dev)
README
Laravel的服务端A/B测试工具,是optimizely等服务的一个出色的免费替代品。使用A/B测试来确定哪些内容有效,哪些无效。
此工具允许您对不同版本的网站进行实验,并跟踪它们之间参与度或达成目标的差异。每次您请求A/B测试类当前实验时,它将选择下一个访问量最少的实验,以确保每个实验都得到测试。当有活跃的实验正在进行时,它将开始跟踪参与度(点击不同的链接或提交表单)并检查是否达到某些定义的目标。这些目标通常是URL或路由,也可以手动触发。
安装
使用composer安装
composer require jenssegers/ab
在app/config/app.php
中添加服务提供者
'Jenssegers\AB\TesterServiceProvider',
注册AB别名
'AB' => 'Jenssegers\AB\Facades\AB',
配置
发布包含的配置文件
php artisan config:publish jenssegers/ab
接下来,编辑config/packages/jenssegers/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>
@endif
一旦访客被分配给一个实验,他的后续点击将自动跟踪以查看他是否与您的网站互动或完成某些目标。这些目标是相对URL或命名路由,当访客在实验期间访问该URL时,将标记为完成。
注意:只有在您进行实验时,才会跟踪访客。只有在您请求当前的AB::experiment()
时,它才会使用当前的Laravel会话将实验分配给该用户。
添加新的实验
如果您想添加新的实验,最好使用此命令清除现有的A/B测试数据
php artisan ab:flush
如果您未清除现有的实验数据,所有新访客将首先看到新的实验,直到它的页面浏览量赶上旧实验。
报告
可以通过 artisan 命令访问 A/B 测试报告。
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()
获取目标列表。