petervincze / laravel-ab
Laravel A/B 测试工具,包括正常和修订版本的方式
Requires
- php: ^7.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 | ^8.0
README
该软件包帮助您找出哪些内容在您的网站上有效,哪些无效。
它允许您创建实验和目标。访问者将随机接收下一个实验,您可以自定义您的网站以适应该实验。视图和目标转换将被跟踪,您可以在报告中查看结果。它可以通过基于 git 仓库的方式工作,以便能够为不同的 A/B 测试实验获取单独的代码,以便在 A/B 测试目标完成后更容易地将代码维护到 git 修订版的 master 代码中。
安装
此软件包可用于 Laravel 8 或更高版本。
您可以通过 composer 安装此软件包
composer require peter-vincze/laravel-ab
配置
安装后,发布配置文件,使用上述命令。
php artisan vendor:publish --provider="PeterVincze\AbTesting\AbTestingServiceProvider"
如果您编写一个配置以从 repo 检出分支/提交,其中配置实验 git_repo 字段指定为 base_path() 下的 abtesting/{experiment->id} 目录,则将发生以下操作,使用 composer install 和 npm update,然后运行 npm run development。如果您在分支/提交下在 base_path() 下创建 "ab-testing-deploy-script" 目录,则进程将搜索该目录中每个实验基于 deploy_script 字段文件名的配置,然后运行它,最后删除所有 abtesting/** 目录下的 .git 目录以通过性能原因移除修订系统。如果您更改 config.php,则应运行此脚本以同步更改,不要忘记如果实验名称与之前相同,通过运行此命令,它将丢失其目标和访问。
php artisan ab:config
您可以在其中定义您的实验和目标。
最后,运行新添加的迁移
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
在目标完成时触发。您可以将目标作为事件的属性获取。
测试
composer test
更新日志
有关最近更改的更多信息,请参阅更新日志。
贡献
有关详细信息,请参阅贡献指南。
安全
如果您发现任何与安全相关的问题,请通过电子邮件vicnzepetertamas@gmail.com联系,而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。
Laravel 包模板
此包是使用Laravel 包模板生成的。