-->

朱赟的技术管理课_04_03_每个工程师都应该了解的AB测试

你好,我是朱英。

今天我分享的主题是每个工程师都应该了解的AB测试。

说到AB测试,不论你是工程师、数据科学家还是产品经理,应该对这个概念都不陌生。

简单来说,AB测试是一种数据分析手段,它可以对产品、特性、设计、市场营销等方面进行受控实验。

在实验中,数据样本被分到两个桶中,分别加以不同的控制和处理,然后对采集回来的信息进行对比分析。

举一个例子吧,假如你想修改UI上一个模块的交互设计,这个模块的内容是引导用户点击下一步按钮,但是你不知道设计改动前后哪种效果更佳。

于是呢你通过AB测试,让一部分用户体验新的UI,另一部分用户继续使用旧的UI,再对采集回来的数据进行分析。

对不同组的用户在这个页面上的转化率进行比较观察,在哪一种UI下用户更愿意往下走。

有了设计分析,我们就可以判断新的设计是否改进了用户体验了。

原理就是这么简单。

下面呢我会从自己使用AB测试的经验出发,重点说一说AB测试中需要注意哪些问题,观点会比较侧重于工程师视角,但是对产品经理也会有帮助。

第一点,永远不要过分的相信你的直觉。

有时候我们会觉得一个功能特征的改动是理所当然的,更新之后效果肯定更好。

做什么AB测试呢?显然是画蛇添足。

这就像是一个资深的程序员,修改线上的代码一样,这样改一定不会出问题。

我们当然不否认这样的情况存在。

但是每当你开始有这样的念头的时候,我建议你先停下来,仔细的想一想,是不是就不那么确定了呢?把你的想法和别的工程师、设计师、产品经理深入的交流一下,看看他们会不会有不同的意见和建议。

不同的角色背景也不同,考虑问题的方式也就不一样。

当你不确定哪种方式更好的时候,AB测试就是你最好的选择了。

第二点,实验样本的数量和分配很重要,如果你的实验注定没有太多数据,也许就不要去做AB测试了。

小样本的偏差会很大,帮不了太多的忙,除非你的测试结果出现一边倒的情况。

另外呢,请确保你在a组和b组的随机分配数据是绝对公平的。

也就是说,你的分配算法不会让两个桶的数据产生额外的干扰。

比如不要按不同时间段把用户分配到不同的组里。

因为在不同时间段使用产品的用户本身就会出现一些不同的情况,区域分配也存在同样的问题,这些都有可能会导致偏差。

第三点,分析的维度尽可能全面。

文章的开头举的例子是说,虽然你最在乎的是用户转换率,但是功能改动可能会影响很多指标,这些指标都要尽可能的测量和分析。

比如,虽然a组转化率略高于b组,但是a组点击后会引发API调用流程的变化,结果延迟高出很多,或者出错率变高了,那么a依然不是更好的设计。

换句话说,AB测试不能只关注单一指标测试的目标虽然是转化率,但是倘若高转化率的方案会导致其他风险,比如提高了出错率,也应当舍弃。

第四点,其他组的改动对AB测试产生的影响。

当AB测试成为一个广泛使用的工具后,产品很多特性的改动都会用到这个工具。

这也就意味着当你采集数据分析的时候,别人也在做同样的事情,只不过策略和数据样本不同。

换句话说,你在跑AB测试比较a和b的优势。

另一个同事在跑AB测试比较c和d的优势结果。

因为实现细节的原因,a组大部分样本同样也是c组改动过的样本,这样一来两个实验很可能就会互相影响了。

因此呢你要做足够的分析,确保实验结果考虑到了这种相关性的影响。

第五点,比较值的趋势必须是收敛的,而不是发散的。

想要比较结果,有实际的统计意义,一定要每天采集数据的比较结果,逐步收敛。

最终趋于稳定。

如果一周内a比较好,后面又开始波动,b变得更好。

这样来回波动的结果是没有太大参考价值的。

另外,即使比较值趋于稳定,还要确保这个稳定数据所处的阶段不在一个特殊时期。

如果恰好有促销或者类似的市场活动,那么即便获得了稳定的结果,这个结果也不一定是普世的。

第六点数据买点、数据买点和采集是AB测试成功的关键。

怎么样进行买点呢?总体来说,这其实和每个公司的代码架构有很大关系。

公司使用哪种方式触动事件,记录事件尽可能的重用前端买点一般可以采集实时数据,后端买点,可以采用实时事件,也可能是一些聚合数据样式具体情况和应用而定。

第七点,形成一个流程或者设计一个工具,这一点很重要。

Ab测试作为一个工具,只有在它足够灵活好用的情况下,才能更广泛的应用到日常的产品迭代和开发当中。

虽然说这个方法很简单,但是做好一套,包括买点、采集、处理和具备UI的工具,会让工程师事半功倍。

第八点,试图给每个结果一个合理的解释,不用过分相信数据,也不要拿到什么分析,结果都照单全收。

试着去给每一个结果一个合理的解释,不要觉得结果比期望值还好,就不用思考为什么结果这么完美了。

这可能并不是一件好事,实际的情况是,如果解释不了,可能它就是个bug.第九点必要的时候重新设计实验,很多实验都会有不同的版本,每个版本都会根据实验结果做一些改动和调整。

如果发现实验设计上有漏洞或是代码实现有问题,那就需要随时调整或者重新设计实验。

重新取样。

分析实验的版本控制,会让分析和重新设置的过程更加快捷。

第十点,不同客户端分开进行实验,web端IOS android尽可能分开观察。

很多时候你会发现,同样的实验数据对比,在不同的客户端会有完全不同的结果。

如果不分开,很可能会让数据变得难以解读或者出现,将只对移动客户端成立的结果扩散到客b端。

这样的以偏概全的错误。

最后,我们来做一个小结,今天我结合自己的实际工作经验,为你讲述了AB测试中需要注意的一些问题。

Ab测试是一种行之有效的产品验证和功能,改进方法相多互联网公司,如google、 facebook、 air、 BNB等,都有自己的AB测试工具。

他们会基于工具和数据验证自己的想法,持续进行功能,改进,推动自品的发展。

如果你也在做AB测试实验,可以对照我在文本当中提到的那些问题来思考,相信你可以做出更好的测试结果。