跳转到主要内容

Wagtail的A/B测试

项目描述

wagtail-experiments.png

Wagtail Experiments

Wagtail的A/B测试

此模块支持在Wagtail站点内创建A/B测试实验。为页面设置了几个不同的版本,当访问指定的控制页面时,用户会随机展示这些版本之一(使用PlanOut算法的简化版本)。记录了接收每个版本的访问者数量,以及随后来访问指定目标页面并完成实验的数量。

安装

“wagtail-experiments”与Wagtail 5.2至6.0和Django 4.2至5.0兼容。它依赖于Wagtail ModelAdmin模块,从Wagtail 5.0开始作为一个外部包提供;我们建议使用这个模块而不是捆绑的《wagtail.contrib.modeladmin》模块,以避免弃用警告。从Wagtail 6.0开始需要这个外部包。

安装步骤

pip install wagtail-experiments wagtail-modeladmin

并确保应用wagtail_modeladminexperiments包含在项目的INSTALLED_APPS

INSTALLED_APPS = [
    # ...
    'wagtail_modeladmin',
    'experiments',
    # ...
]

然后执行迁移

./manage.py migrate

使用方法

安装后,在设置下的Wagtail管理菜单中会添加一个新的“实验”项目。这对超级用户以及拥有实验添加/编辑权限的任何其他用户都可用。通过指定一个控制页面和该页面的任意多个替代版本(以及可选的目标页面)创建一个实验。最初实验处于“草案”状态,不会在网站前端生效;要开始实验,请将状态更改为“实时”。

当实验处于实时状态时,访问控制页面URL的用户将被随机分配到一个测试组,以提供控制页面或其中一种替代变体。这种分配将保持用户会话期间(根据Django的会话配置),因此每个用户每次都收到相同的变体。当用户随后访问目标页面时,他们认为已经完成了实验,并将完成记录在用户的测试组中。然后可以通过管理界面下的“查看报告”查看每个测试组随时间变化的完成率。

https://i.imgur.com/tG7JH13.png

从报告页面,管理员可以选择一个获胜的变体;然后实验状态更改为“完成”,所有访问控制页面的访客都将提供所选的变体。

通常,页面的替代版本将被保留未发布状态,因为这可以防止它们在网站导航中作为控制页面的副本出现。如果选定了未发布的页面作为替代,则用户前端显示的页面修订版将是实验状态设置为“实时”时存在的草案修订版。在显示替代变体时,标题和树位置将被覆盖以显示为控制页面的标题和位置;这意味着可以将替代页面的标题设置为描述性的内容,例如“注册页面(蓝色文本)”,而不会将此文本“泄漏”给网站访客。

目标完成的直接URL

如果您想将目标完成与访问指定的Wagtail页面以外的某些操作相关联 - 例如,点击“关注我们的Twitter”链接 - 您可以设置一个JavaScript操作,该操作向类似于/experiments/complete/twitter-follow/ 的URL发送请求,其中twitter-follow是实验的别名。要设置此URL路由,请将以下内容添加到您的URLconf中

from experiments import views as experiment_views

urlpatterns = [
    # ...

    url(r'^experiments/complete/([^\/]+)/$', experiment_views.record_completion),

    # ...
]

替代后端

“wagtail-experiments”支持用于跟踪参与者和完成的可插拔后端。默认后端experiments.backends.db将这些记录在数据库表中,按天聚合。可以通过WAGTAIL_EXPERIMENTS_BACKEND设置指定替代后端

WAGTAIL_EXPERIMENTS_BACKEND = 'mypackage.backends.thecloud'

后端是一个Python模块,提供以下函数

record_participant(experiment, user_id, variation, request)

当用户访问实验的experiment的控制页面时调用。user_id是分配给该访客的持久用户ID;variation是要提供的服务变体的页面对象;request是用户的当前请求。

record_completion(experiment, user_id, variation, request)

当访客完成实验时被调用,无论是访问目标页面还是触发record_completionuser_id 是分配给该访客的持久用户 ID;variation 是最初为该用户服务的变体页面对象;而 request 是用户的当前请求。

get_report(experiment)

返回实验的报表数据,包含一个包含以下内容的字典

变体

记录列表,每项变体一个记录(包括控制页面)。每个记录是一个包含以下内容的字典

变体_pk

页面对象的键

is_control

一个布尔值,指示这是否是控制页面

is_winner

一个布尔值,指示此变体是否被选为获胜者

total_participant_count

分配此变体的访客数量

total_completion_count

分配此变体的访客中完成实验的数量

历史

显示参与者和完成情况随时间变化的列表,每个字典包含 dateparticipant_countcompletion_count

测试数据

Wagtail-experiments 提供了一个管理命令 experiment-data,允许为测试或演示目的向实验中填充模拟数据,并清除现有数据。此命令使用实验的别名调用

# 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

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

wagtail-experiments-0.4.tar.gz (120.5 kB 查看哈希值)

上传时间

构建分布

wagtail_experiments-0.4-py3-none-any.whl (124.0 kB 查看哈希值)

上传时间 Python 3

由以下赞助

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面