reallyli / laravel-ab-test
Laravel 的后端 A/B 测试工具。
Requires
- php: >=5.4.0
- illuminate/support: 5.*
- league/csv: ~6.0
- symfony/console: *
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-15 17:32:06 UTC
README
Laravel 5+ A/B 测试
Laravel 5+ 的后端 A/B 测试工具
安装
composer require reallyli/laravel-ab-test
配置
发布包含的配置文件
php artisan config:publish reallyli/laravel-ab-test
以下配置选项可用
数据库连接
这是您用于存储 A/B 测试数据的 Laravel 数据库连接。当您想要在不同的数据库中存储 A/B 测试数据时,这很有用。如果为空,它将使用您的默认数据库连接。
'connection' => 'mysql',
实验
这些是您的 A/B 实验对象。这些是您可以在代码或视图中使用的唯一标识符,用于决定应显示哪个版本。
'experiments' => [
'old-form',
'new-form',
],
目标
没有目标,每个实验将跟踪看到实验的访问者数量并检测参与度。此外,您还可以定义希望实验达到的特定目标。如果您的目标是让访客购买您的产品或联系您获取更多信息,并且您为这两个页面都设置了特定的路由,则目标可能如下所示
'goals' => [
'submit-userinfo',
]
您的目标可以是相对 URL、命名路由,或者可以手动触发。
准备 A/B 测试数据库
一旦您选择了数据库连接,请使用包含的安装命令来准备所需的表
php artisan ab:install
数据库结构小巧轻便,因此不会影响您的应用程序。
用法
在您定义了实验和目标之后,您可以开始设计您的 A/B 测试。所有访客都会被分配给访问次数最少的下一个实验。您可以使用 AB::experiment()
方法请求当前实验标识符。例如,如果您定义了以下实验 ['a', 'b', 'c']
,则您的视图可能如下所示
@if (AB::experiment('old-form'))
<input name='username' data-name='old-form-action'>
@elseif (AB::experiment('b'))
<input name='username' data-name='new-form-action'>
@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()
用于手动触发目标。当您想要跟踪与 URL 或路由不相关的目标时非常有用。
AB::complete($goal)
获取实验列表。
AB::getExperiments()
获取目标列表。
AB::getGoals()
如果表格"experiments"中包含超过1个实验,则返回true。
AB::hasExperiments()
返回当前会话实验的名称。
AB::currentExperiment()