3

我对使用 Play Framework进行A/B 或拆分测试的良好策略感兴趣。

显而易见的选择是使用 Google 网站优化器,但出于以下几个原因,我不希望这样做:

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

有任何想法吗?

4

3 回答 3

3

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

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

在控制器中这样做的好处是能够跟踪哪个用户收到了哪个版本的页面,从而在每次后续登录时向他显示相同的页面。

编辑:忘了提到你需要两个不同的模板,showA.scala.htmlshowB.scala.html这种情况下。

于 2011-11-10T10:35:45.470 回答
0

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

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

但这将是相当多的工作。

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

事实上,从你对谷歌工具的抱怨来看:

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

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


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