如何停止担心并开始相信A / B测试

当您开发产品时,每次新迭代都可能会丢失指标并失去用户。但是,有时,尤其是在初期阶段,公司会在不知不觉中冒这种风险-仅依靠自己的直觉和假设来更改产品。

在Badoo,我们不信任感情,但我们相信数字。总共,我们的服务拥有超过5亿用户,我们编写了很长时间的测试框架。六年中,通过了2962次测试,A / B测试证明了其重要性,可靠性和有效性。



但是在本文中,我不会谈论我们的系统如何工作。一篇文章还不够。此外,许多事情是我们公司特有的,不适合其他公司。今天,我将讨论我们有关A / B测试的思想的演变:我们在过程中采用了哪种抽佣方式以及如何检查测试的正确性。本文适用于尚未开始测试但想一想的人,以及不确定自己的测试系统的人。

什么是A / B测试?


想象一下一种情况:即将推出一项新功能,而我们的产品经理还不准备冒险为该产品带来少量但稳定的收入。经过深思熟虑,他建议通过A / B测试来启动该功能,看看它是否会起飞并且用户不会与竞争对手竞争。 

我们之前没有进行过A / B测试,所以我们了解的第一件事就是它们。维基百科说:“ A / B测试是一种营销研究方法,其本质是将元素对照组与一组测试组进行比较,在测试组中一个或多个指标已更改,以便找出哪个改变改善目标”。事实证明,我们需要进行一项研究,其中应该有一个对照组,至少一个测试组和一个目标指标。

对于测试组,我们将显示付款页面的替代版本。在它上面,我们想要更改文本,突出显示折扣,替换图片-所有这些对于来自欧亚大陆的用户来说,以便他们购买更多。对于来自美国的用户,我们不想更改任何内容。 

我们将有目标。让我们来看一些基本的:

  • ARPU(每位用户的平均收入)-我们平均将从用户那里获得的利润; 
  • 点击号召性用语(号召性用语)元素的次数-付款页面上的按钮和链接。 

技术任务


计划同时更改页面上的三个元素:带有折扣信息的文本,按钮和图像。



如果同时进行测试,将很难理解其中哪些变化会影响结果。也许新文本会排斥用户并导致购买数量减少,但是突出显示折扣会增加折扣:结果,我们得到零。开发资源将被浪费,工作假设将被拒绝。 

因此,我们不会这样做。我们将只保留一项更改进行测试-分配折扣。 


第一次测试


计划是这样的:我们将用户分为两个相等的组,然后等待结果。收到后,我们将比较对照组和测试组中的指标。 

一切看起来都很简单:我们将用户分为偶数和奇数,然后查看统计信息。 

我们编写代码:

if (userId % 2 == 1) {
    showNewAwesomeFeature();
}

我们期待数周的时间:效果惊人!ARPU增加了100%!人们点击付费后,产品经理便要求迅速推出所有零钱。 



我们将其打开,又过了几周,但没有结果。利润总额没有增加。 

我们做错了什么?

我们选择一个测试组


我们只是将用户分为两组,然后进行测试,但是您不能这样做。毕竟,只有欧亚大陆的用户有所改变。而且,与美国用户相比,我们的用户数量要少得多。因此,事实证明,来自美国的用户活动突然激增影响了我们的测试结果,尽管实际上它们并不是最好的。

结论:始终仅在测试组中选择为其实施更改的那些用户。

让我们修复代码:

if (user.continent === ‘eurasia’ && userId % 2 == 1) {
    showNewAwesomeFeature();
}

现在一切都应该正常工作!运行测试。我们正在等待几个星期。



发生了!ARPU上涨了80%!向所有用户推出更改。 

并且...在相同的时间段之后,这些图再次看起来与我们计划的方式不同。

计算统计意义


不能仅仅在“几周后”就停止测试:获得的结果可能不准确。我们遵循的指标变化越少,参与测试的人越少,则随机化的可能性就越大。  

可以计算出该概率。表示它的值称为p值。我会告诉你它是如何工作的。

在任何测试期间,都有机会获得随机结果。例如,访问该网站的用户分布可能不均匀-整个付费受众将属于其中一组。在实际测试中,度量标准的差异通常不会太大:很难或什至不可能注意到图表上的问题,并且不能放弃统计测试。特别是,我们需要确定概率第一种和第二种错误 -换句话说,在不存在的地方发现变化的概率,反之,在存在的情况下找不到它们。根据度量值和确定的概率,我们将需要不同数量的用户。

您可以使用在线计算器进行计算:指定受监视指标的当前值和目标值-您获得测试所需的用户数量,反之亦然。


相对于当前值的转换计算为10%,变化为0.2%

现在,我们已经收到了所有必要的数据,并且知道何时停止测试。没有更多的障碍。

让我们运行A / B测试并查看结果。



这次,结果更像是事实,但仍然很出色:ARPU增长了55%。 

我们停止测试,完全应用测试组。而且...指标再次下降。为什么? 

检查用户数


让我们找出在进行测试时实际有多少用户访问了我们的网站。从日志来看,只有我们测试组的10%,但是我们没有考虑到这一点。 

如果您的DAU(每天的唯一用户数)为1000,这并不意味着在十天内您将有10,000个用户。始终将实际匹配记录到测试中(测试匹配),并仅对它们进行计数。

我们实现简单的逻辑。对于每个访问该站点的用户,我们向服务器发送一个带有A / B测试和控制组名称的请求。因此,我们将确切地知道有多少用户访问了我们,并且我们不会再犯错了。

我们启动了A / B测试。

结果非常好。我们再赚更多钱!我们为所有人打开测试-再次出问题:几周后,指标再次低于预期。 

还记得我们开始为所有访问该网站的用户发送匹配吗?绝对不要那样做。匹配应该仅发送给与资源的测试部分进行了交互的那些用户。而且定义得越准确,效果越好。 

幸运的是,这很容易验证。为此,您可以进行A / A / B测试。它看起来像A / B测试,但在这种情况下,您有两个对照组和一个测试组。为什么需要这个?如果发送匹配数据的时间选择不正确,则未与网站的经过测试的部分进行交互的用户将进入测试。在这种情况下,组A和A中的指标会有很大的差异,您可以立即了解到出现了问题。 

我们启动了A / A / B测试。 

在B组中,保留50%的用户,然后将其余50%的用户平均分配到A组和A组中(我们将其称为control和control_check)。是的,结果将需要等待更长的时间,但是通过组A和组A的结果是否收敛,您将了解匹配是否已正确发送。



结果是适度的(仅增长20%),但是很现实。让我们彻底改变。 

一切正常! 

但是一个月后,指标再次下降。

测试我们可以控制的


事实证明,我们的第三方帐单也进行了A / B测试,这直接影响了我们的结果。因此,请始终跟踪生产结果,并尝试全面测试您控制的内容。


A / B测试可以帮助产品成长。但是,为了信任测试,正确进行测试并始终检查结果很重要。这种方法将使您能够定性地测试产品并测试假设,然后再丢弃所有指标。

  • 始终检查目标组。
  • 提交匹配。
  • 发送正确的点击。
  • 全面测试您控制的内容。
  • /-!

All Articles