任何人都有使用Play Framework进行A / B测试的好策略?

时间:2011-01-20 21:48:41

标签: java playframework ab-testing

我对使用Play Framework的A/B or split testing的良好策略感兴趣。

显而易见的选择是使用Google网站优化工具,但我不想出于以下几个原因:

  • 仅允许您在表示层中测试内容
  • 难以根据收入(而不是点击或转化等二元事件)进行测试
  • 必须使用Javascript代码搞乱模板
  • 测试必须是离散的,而我喜欢不断测试新的变化

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

如果您希望控制器决定使用哪个版本,您可以通过在两个不同的模板之间进行选择来完成此操作(至少在Scala中),如下所示:

if (mode == "A")
  html.showA(product)
else
  html.showB(product)

在控制器中执行此操作的优点是能够跟踪哪个用户收到了哪个版本的页面,从而在每次后续登录时向他显示相同的页面。

编辑: 在这种情况下忘记提及你,然后需要两个不同的模板,showA.scala.htmlshowB.scala.html

答案 1 :(得分:0)

虽然我认为Google网站优化工具是一个不错的选择,但我认为您可以通过以下方式构建自己的系统:

  • 一个@Before方法,它为会话生成一个随机值(比如一个测试种子)或一个基于你决定的参数的值(收入等)
  • 围绕业务层种子价值的一些逻辑
  • UI部分的标签,其中标签显示某些文本或其他(或图像,或......),具体取决于种子的值
  • 数据库中用于存储链接到会话的信息的表(用于跟踪用户进入您网站时的移动)
  • 有关表格中数据的一些报告(我只能推荐JasperBirt,但未与其他人合作)

但这将是相当多的工作。

老实说,我真的相信使用现有系统(谷歌网站)是一个更好的主意。认为您为自定义A / B测试设置环境的所有时间都是您不开发产品的时间。虽然A / B很适合提高转换率,但你需要多次迭代才能找到最佳选择,因此你花在其他事情上的时间越多,你可能会失去更多的钱。

事实上,从您对Google工具的抱怨:

  • 我不得不说A / B测试的要点是表示层,因为这是用户看到的内容以及驱动其行为的因素。他们不关心你的合并排序的实现是否更好,他们关心你的徽标是可爱的。
  • 无论你做什么,都会让你的模板变得杂乱无章。那或者您将不得不创建页面的许多“克隆”,每个版本对应您要显示的每个版本。无论哪种方式,它都不是“好”的代码。
  • 在能够做出决定之前,你需要考虑一段时间才能获得有效数量的样本。这意味着您无法每天更改选项(除非您的网站每天有数千名用户),否则您将无法获得具有统计意义的数据

所以从你的4点来看,我认为3是值得商榷的。我建议先使用一些现有的工具来提高性能。一旦你获得了最好的转换,你就可以考虑根据其他参数做一些额外的自定义工作。


答案 2 :(得分:0)

  1. firebase远程配置(它是免费的)作为AB测试选项提供商。它允许您以百分比
  2. 定义A / B ...组
  3. 在您的项目中创建类以获取配置值并提供接口 //用于实验1  fun isButtonColorBlue():Boolean  fun textButton():String 返回值取决于您的远程配置
  4. 在您的代码中实现A / B变体的一条建议。为了保持代码稳定性并且不影响单元测试(您可能已经编写过),请为要进行更改的类创建子类,并根据AB测试覆盖要更改的方法。然后替换代码中的定义以使用新的类版本。在这种情况下,旧班级的所有测试都是安全的。
  5. 要获得AB测试结果,请使用任何Analytics SDK。当您获得远程配置并为用户定义组时,您需要更新用户信息(对于Google mFirebaseAnalytics.setUserProperty(“experiment_button”,“A”))