简单的A/B测试框架
dabble的Python项目详细描述
#dabble是一个简单的python a/b测试框架。使用dabble,您可以
在代码中配置测试,收集结果,并在稍后进行分析,以便
对设计更改、功能实现等做出明智的决定。
您可以使用类a b test在dabble中定义一个a/b测试,该类描述了
测试名称、每个备选方案的名称,以及
用户将在测试期间完成的一组步骤(在最简单的情况下,这只是
两个步骤)。然后定义一个或多个“abparameter”,其中包含
您希望在测试中为每个备选方案更改的值。每个测试可以
有一个或多个备选方案,但最常见的情况是有2个
(因此称为“A/B测试”)。
fsresultstore('/path/to/results.data')
class signup(page):
path='/signup'
signup_button=abtest('signup button',
alternatives=['red','green',
steps=['show','signup'])
button\color=abparameter('signup button',['\ff0000','\00ff00'])
def get(self):
self.signup\u button.record('show')
return render('index.html',button\color=self.button\color)
def post(self):
self.signup\button.record('signup')
return redirect('/account')
在幕后,dabble使用cookie为站点上的每个用户分配了一个*标识*,以便每个用户始终看到相同的
*替代项*。用户可以在许多浏览会话中多次访问主页,但只要浏览器中存在相同的cookie,
他们将始终看到红色或绿色按钮,这取决于第一次查看页面时选择了哪个按钮。
跟踪用户的操作。稍后,可以生成报告来确定红色或绿色按钮是否会导致更多用户注册。
dabble配置除了“abtest”和“abparameter”之外,dabble还需要
“identityprovider”和“resultsstorage”。dabble为每一个现成的选项提供了几种
替代方案,而且编写自己的选项也很简单。
`identityprovider`应该尽最大努力始终
识别个人,而不是浏览会话(特别是当cookies
设置为在用户关闭浏览器时过期时)。如果您正在测试需要用户登录的功能,那么他们的用户名是一个很好的标识选择。
`resultsstorage`存储A/B测试的配置和结果,并提供根据存储的结果生成报告的一些工具。dabble
提供了几个后端,包括“mongoresultsstorage”和“fsresultsstorage”。
通过“report()”方法参与a/b
测试。报告是一个字典,它为每个选项描述在每个定义的步骤中尝试和转换的用户数量。对于上面的示例,报表可能如下所示:
>;>;storage=fsresultstorage('/path/to/results.data')
>;>;storage.report('signup button')
{
'测试名称':'signup button',
'结果':[
{
'可选':'red,
‘漏斗’:[{
‘舞台’:(‘表演’,‘注册’),
“已尝试”:187,
“已转换”:22,
},
},
{
{
“可选”:“绿色”,
“漏斗”:[{
“阶段”:(“显示”,“注册”),
“已尝试”:195
“已转换”:18,
}],
}
],
}
每个“results”条目中的“funnel”键将有一个元素
少于步骤数,因为每个条目描述用户从一个步骤到下一个步骤的进展
。
在代码中配置测试,收集结果,并在稍后进行分析,以便
对设计更改、功能实现等做出明智的决定。
您可以使用类a b test在dabble中定义一个a/b测试,该类描述了
测试名称、每个备选方案的名称,以及
用户将在测试期间完成的一组步骤(在最简单的情况下,这只是
两个步骤)。然后定义一个或多个“abparameter”,其中包含
您希望在测试中为每个备选方案更改的值。每个测试可以
有一个或多个备选方案,但最常见的情况是有2个
(因此称为“A/B测试”)。
fsresultstore('/path/to/results.data')
class signup(page):
path='/signup'
signup_button=abtest('signup button',
alternatives=['red','green',
steps=['show','signup'])
button\color=abparameter('signup button',['\ff0000','\00ff00'])
def get(self):
self.signup\u button.record('show')
return render('index.html',button\color=self.button\color)
def post(self):
self.signup\button.record('signup')
return redirect('/account')
在幕后,dabble使用cookie为站点上的每个用户分配了一个*标识*,以便每个用户始终看到相同的
*替代项*。用户可以在许多浏览会话中多次访问主页,但只要浏览器中存在相同的cookie,
他们将始终看到红色或绿色按钮,这取决于第一次查看页面时选择了哪个按钮。
跟踪用户的操作。稍后,可以生成报告来确定红色或绿色按钮是否会导致更多用户注册。
dabble配置除了“abtest”和“abparameter”之外,dabble还需要
“identityprovider”和“resultsstorage”。dabble为每一个现成的选项提供了几种
替代方案,而且编写自己的选项也很简单。
`identityprovider`应该尽最大努力始终
识别个人,而不是浏览会话(特别是当cookies
设置为在用户关闭浏览器时过期时)。如果您正在测试需要用户登录的功能,那么他们的用户名是一个很好的标识选择。
`resultsstorage`存储A/B测试的配置和结果,并提供根据存储的结果生成报告的一些工具。dabble
提供了几个后端,包括“mongoresultsstorage”和“fsresultsstorage”。
通过“report()”方法参与a/b
测试。报告是一个字典,它为每个选项描述在每个定义的步骤中尝试和转换的用户数量。对于上面的示例,报表可能如下所示:
>;>;storage=fsresultstorage('/path/to/results.data')
>;>;storage.report('signup button')
{
'测试名称':'signup button',
'结果':[
{
'可选':'red,
‘漏斗’:[{
‘舞台’:(‘表演’,‘注册’),
“已尝试”:187,
“已转换”:22,
},
},
{
{
“可选”:“绿色”,
“漏斗”:[{
“阶段”:(“显示”,“注册”),
“已尝试”:195
“已转换”:18,
}],
}
],
}
每个“results”条目中的“funnel”键将有一个元素
少于步骤数,因为每个条目描述用户从一个步骤到下一个步骤的进展
。