A/B testing for wagtail
wagtail-experiments的Python项目详细描述
摇尾实验
摇尾式飞机的A/B测试
该模块支持在wagtail站点中创建a/b测试实验。设置了页面的多个替代版本,在访问指定的控制页面时,会向用户提供其中一个随机选择的变体(使用简化版的规划算法)。将记录接收到每个变体的访客数,以及随后通过访问指定目标页来完成实验的访客数。
安装
摇尾实验与摇尾1.7至2.3和django 1.8至2.1兼容。要安装:
pip install wagtail-experiments
并确保应用程序wagtail.contrib.modeladmin和 实验包含在项目的 已安装的应用程序中:
INSTALLED_APPS=[# ...'wagtail.contrib.modeladmin','experiments',# ...]
用法
安装后,一个新的"实验"项目将添加到wagtail管理菜单的"设置"下。这对超级用户和对实验具有添加/编辑权限的任何其他用户都可用。通过指定一个控制页和该页的任意多个可选版本以及一个可选的目标页来创建一个实验。最初,实验处于"草稿"状态,不会在站点前端生效;若要开始实验,请将状态更改为"活动"。
当实验处于活动状态时,访问控制页面url的用户将被随机分配到一个测试组,以便为控制页面或其他变体之一提供服务。此分配在用户会话中持续存在(根据django的会话配置,即浏览器长度会话与持久会话的比较)。当用户随后访问目标页面时,他们被认为已经完成了实验,并在该用户的测试组中记录完成情况。然后,可以通过"查看报告"下的管理界面查看每个测试组随时间的完成率。
>;在"报告"页中,管理员可以选择一个获胜的变体;然后实验状态将更改为"已完成",并且将为所有访问控制页的访问者提供所选变体。
通常,页面的其他版本将保持未发布状态,因为这将防止它们在站点导航中显示为控件页的副本。如果选择未发布的页面作为替代,则在前端向用户显示的页面修订将是实验状态设置为"活动"时存在的草稿修订。显示替代变体时,将重写标题和树位置以显示为控制页的标题和位置;这意味着可以将替代页的标题设置为描述性的内容,例如"注册页(蓝色文本)",而不会将此文本"泄漏"到网站访问者。
直接URL目标完成
如果您希望目标完成链接到某个操作,而不是访问指定的wagtail页面(例如,单击"在twitter上关注我们"链接),则可以设置一个javascript操作,将请求发送到url,例如 /experiments/complete/twitter follow/
fromexperimentsimportviewsasexperiment_viewsurlpatterns=[# ...url(r'^experiments/complete/([^\/]+)/$',experiment_views.record_completion),# ...]
备用后端
wagtail实验支持用于跟踪参与者和完成的可插入后端。默认后端 experiments.backends.db 将这些记录在数据库表中,按天聚合。可通过设置 wagtail_experiments_backend指定可选后端:
WAGTAIL_EXPERIMENTS_BACKEND='mypackage.backends.thecloud'
后端是一个python模块,它提供以下功能:
记录参与者(实验、用户id、变化、请求):
当用户访问 实验的控制页时调用。 用户id 是分配给该访问者的持久用户id; 变体 是要服务的变体的页面对象; 请求 是用户的当前请求。
记录完成(实验、用户id、变化、请求):
当访问者完成 实验 时调用,方法是访问目标页或触发 记录完成 。 用户id 是分配给该访问者的持久用户id; 变体 是最初服务给该用户的变体的页面对象; 请求 是用户的当前请求。
获取报告(实验):
返回 实验的报告数据,由包含以下内容的dict组成:
< DL>记录列表,每个变体一个(包括控制页)。每条记录都是一个dict,包含:
< DL>测试数据
wagtail实验提供了一个管理命令 实验数据 ,允许使用虚拟数据填充实验以进行测试或演示,并清除现有数据。这个命令是用实验的slug来调用的:
# Populate the experiment 'homepage-banner' with 5 days of test data, # with 100-200 views per variation. All parameters other than experiment slug # are optional ./manage.py experiment-data homepage-banner --days 5 --min=100 --max=200 # Purge data for the experiment 'homepage-banner' ./manage.py experiment-data homepage-banner --purge