简单的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”键将有一个元素
少于步骤数,因为每个条目描述用户从一个步骤到下一个步骤的进展

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java通过Spring MVC web应用程序向客户端发送文本文件   java是否可以在运行时动态实例化DAO类?   调用VB。来自Java的net函数   java在Android中通过单击打开特定文件夹   java如何使用maven pom。xml标识非标准项目结构中的testng测试用例?   java为什么FOP在大文件上崩溃?   Architecture python+flask和spring boot+java   java Kafka工具根本没有启动Ubuntu 19.10   如何使用Eclipse运行Java USB API for Windows   java如何在Eclipse中查看J2EE预览服务器/容器的日志/控制台?   网页抓取是否可以使用Java crawler crawler4j暂停和恢复抓取?   java当我第二次按下按钮时,应用程序停止工作   带有偏移量和限制的java SQLite分页问题   java如何在OSX mavericks中将端口80转发到8080   java从泛型方法调用非泛型方法   java My代码未按预期工作。十进制输出不是它应该的样子   节点。java中的js加密(jasypt)和nodejs中的解密   java乘法表不工作数组索引超出范围   java将JDBC与Firebirdsql连接起来