gleman17 / laravel-ab
Laravel A/B 测试工具
Requires
- php: ^7.2 | ^8.0
- illuminate/support: 5.6.* | 5.7.* | 5.8.* | ^6.0
- jaybizzle/crawler-detect: ^1.2
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: 3.6.* | 3.7.* | 3.8.*
- phpunit/phpunit: ^7.0
README
此包可以帮助您找到哪些内容在您的网站上有效,哪些无效。
它允许您创建实验和目标。访客将随机收到下一个实验,您可以将您的网站定制为该实验。视图和目标转换将被跟踪,您可以在报告中查看结果。
安装
此包可用于Laravel 5.6或更高版本。
您可以通过composer安装此包
composer require gleman17/laravel-ab
配置
安装后发布配置文件
php artisan vendor:publish --provider="gleman17\AbTesting\AbTestingServiceProvider"
您可以在其中定义您的实验和目标。
最后,运行新添加的迁移
php artisan migrate
应添加两个新迁移。
用法
实验
@if (AbTesting::isExperiment('logo-big')) <div class="logo-big"></div> @elseif (AbTesting::isExperiment('logo-grayscale')) <div class="logo-greyscale"></div> @elseif (AbTesting::isExperiment('brand-name')) <h1>Brand name</h1> @endif
这是包的最基本用法。您不需要初始化任何东西。如果调用isExperiment
,则包会为您处理所有事情。
或者,您可以使用自定义blade if语句
@ab('logo-big') <div class="logo-big"></div> @elseab('logo-grayscale') <div class="logo-greyscale"></div> @elseab('brand-name') <h1>Brand name</h1> @endab
这将完全一样工作。
如果您不想进行任何持续的渲染,您可以调用
AbTesting::pageView()
直接并触发一个新的页面视图,带有随机的实验。此函数也将由isExperiment
调用。
在底层,一个新的会话项目将跟踪当前实验。会话将只有一个实验,并且只会触发一个页面视图。
您可以使用以下方式获取当前实验
// get the underlying model AbTesting::getExperiment() // get the experiment name AbTesting::getExperiment()->name // get the visitor count AbTesting::getExperiment()->visitors
或者,您有一个请求助手供您使用
public function index(Request $request) { // the same as 'AbTesting::getExperiment()' $request->abExperiment() }
目标
要完成一个目标,只需调用
AbTesting::completeGoal('signup')
此函数将增加分配给活动实验的目标转换。如果没有活动实验在会话中运行,将创建一个。您只能在每个会话中触发一次目标转换。这将通过另一个会话项目来防止。此函数返回底层的目标模型。
要获取当前会话中所有完成的目标
AbTesting::getCompletedGoals()
爬虫和机器人
此包可以尝试忽略爬虫和机器人注册页面视图。只需在配置中启用ignore_crawlers
选项。
报告
要获取页面视图、完成的目标和转换的报告,请调用报告命令
php artisan ab:report
这将打印类似以下内容
+---------------+----------+-------------+
| Experiment | Visitors | Goal signup |
+---------------+----------+-------------+
| big-logo | 2 | 1 (50%) |
| small-buttons | 1 | 0 (0%) |
+---------------+----------+-------------+
重置
要重置所有访客和目标完成情况,请调用重置命令
php artisan ab:reset
事件
除了这些,您还可以挂钩两个事件
ExperimentNewVisitor
在实验被分配给新访客时触发一次。您可以将实验作为事件的属性来获取。GoalCompleted
在目标完成时触发一次。您可以将目标作为事件的属性来获取。
URL 覆盖
为了测试页面的外观和感觉,您有时会想指定要运行的特定实验。只需将参数ab_exp=[实验名称]附加到您的URL上,这将运行该实验,无论会话状态如何。配置中有一个变量allow_ab_exp,可以通过环境(env('APP_ENV_STATUS')的结果)来设置。
测试
composer test
更改日志
有关最近更改的更多信息,请参阅更改日志。
贡献
有关详细信息,请参阅贡献。
安全
如果您发现任何安全相关的问题,请通过电子邮件发送至 moin@benjaminbortels.de,而不是使用问题跟踪器。
致谢
许可协议
MIT 许可协议 (MIT)。有关更多信息,请参阅 许可文件。
Laravel 包模板
此包是使用 Laravel 包模板 生成的。