精华内容
下载资源
问答
  • AB测试

    千次阅读 2018-05-09 10:46:26
    AB测试是为Web或App界面或流程制作两个(A/B)或多个(A/B/n)版本,在同一时间维度,分别让组成成分相同(相似)的访客群组随机的访问这些版本,收集各群组的用户体验数据和业务数据,最后分析评估出最好版本正式...
    AB测试是为Web或App界面或流程制作两个(A/B)或多个(A/B/n)版本,在同一时间维度,分别让组成成分相同(相似)的访客群组随机的访问这些版本,收集各群组的用户体验数据和业务数据,最后分析评估出最好版本正式采用。
    中文名
    A/B测试
    外文名
    A/B Testing
    别    名
    分组测试,分桶测试
    英文名
    Split Testing, Bucketing Tests
    一、A/B测试的好处
    • 消除客户体验(UX)设计中不同意见的纷争,根据实际效果确定最佳方案;
    • 通过对比试验,找到问题的真正原因,提高产品设计和运营水平;
    • 建立数据驱动、持续不断优化的闭环过程;
    • 通过A/B测试,降低新产品或新特性的发布风险,为产品创新提供保障。
    二、A/B测试效率
    在App和Web开发阶段,程序中添加用于制作A/B版本和采集数据的代码由此引起的开发和QA的工作量很大,ROI(return on investment)很低。AB测试的场景受到限制,App和Web发布后,无法再增加和更改AB测试场景。额外的A/B测试代码,增加了App和Web后期维护成本。因此,提高效率是A/B测试领域的一个关键问题。
    三、怎样高效实施A/B测试?
    在App和Web上线后,通过可视化编辑器制作A/B测试版本、设置采集指标,即时发布AB测试版本。
    • AB测试的场景数量是无限的;
    • 在App和Web发布上线后,根据实际情况,设计AB测试场景,更有针对性,更有效;
    • 无需增加额外的AB测试代码,对App和Web的开发、QA和维护的影响最小。
    四、AB测试步骤
    1.现状分析:分析业务数据,确定当前最关键的改进点。
    2.假设建立:根据现状分析作出优化改进的假设,提出优化建议。
    3.设定目标:设置主要目标,用来衡量各优化版本的优劣;设置辅助目标,用来评估优化版本对其他方面的影响。
    4.界面设计:制作2(或多)个优化版本的设计原型。
    5.技术实现:
    • 网站、App(Android/iOS) 、微信小程序和服务器端需要添加各类A/B测试平台提供的SDK代码,然后制作各个优化版本。
    • Web平台、Android和iOS APP需要添加各类A/B测试平台提供的SDK代码,然后通过编辑器制作各个优化版本。
    • 通过编辑器设置目标,如果编辑器不能实现,则需要手工编写代码。
    • 使用各类A/B测试平台分配流量。初始阶段,优化方案的流量设置可以较小,根据情况逐渐增加流量。
    6.采集数据:通过各大平台自身的数据收集系统自动采集数据。
    7.分析A/B测试结果:统计显著性达到95%或以上并且维持一段时间,实验可以结束;如果在95%以下,则可能需要延长测试时间;如果很长时间统计显著性不能达到95%甚至90%,则需要决定是否中止试验。
    五、A/B测试实施策略
    1.从简单开始:可以先在Web前端上开始实施。Web前端可以比较容易的通过可视化编辑器制作多个版本和设置目标(指标),因此实施A/B测试的工作量比较小,难度比较低。在Web前端获得经验后,再推广到App和服务器端。
    2.隔离变量:为了让测试结果有用,应该每个试验只测一个变量(变化)。如果一个试验测试多个变量(比如价格和颜色),就不知道是哪个变量对改进起了作用。
    3.尽可能频繁、快速进行A/B测试:要降低A/B测试的代价,避免为了A/B测试做很多代码修改,尽量将A/B测试与产品的工程发布解耦,尽量不占用太多工程部门(程序员、QA等)的工作量。
    4.要有一个“停止开关”:不是每个A/B测试都会得到正向的结果,有些试验可能失败,要确保有一个“开关”能够停止失败的试验,而不是让工程部门发布一个新版本。
    5.检查纵向影响:夸大虚假的CTA(Call To Action)可以使某个A/B测试的结果正向,但长期来看,客户留存和销售额将会下降。因此,时刻要清楚我们追求的是什么,事先就要注意到可能会受到负面影响的指标。
    6.先“特区”再推广:先在一两个产品上尝试,获得经验后,推广到其他产品中。
    六、A/B测试与一般的工程测试的区别。A/B测试用于验证用户体验、市场推广等是否正确,而一般的工程测试主要验证软硬件是否符合设计预期,因此AB测试与一般的工程测试分属于不同的领域。
    七、A/B测试工具
    国外:Optimizely,Visual Website Optimizer,Omniture等;
    国内:Testin,ABTester,AppAdhoc Optimizer、云眼。
    展开全文
  • AB测试是什么,怎么做AB测试

    千次阅读 2019-10-20 22:24:30
    2000年Google的工程师第一次将AB测试用于测试搜索结果页展示多少搜索结果更合适,虽然那次的AB测试因为搜索结果加载速度的问题失败了,但是这次的AB测试可以认为是Google的第一次AB测试。从那以后AB测试被广泛应用于...

    本文作者康伟华(点融黑帮),现任点融BI总监,曾就职于1号店、携程、eBay等互联网公司从事数据和开发工作,关注数据科学和系统架构。2000年Google的工程师第一次将AB测试用于测试搜索结果页展示多少搜索结果更合适,虽然那次的AB测试因为搜索结果加载速度的问题失败了,但是这次的AB测试可以认为是Google的第一次AB测试。从那以后AB测试被广泛应用于互联网公司的优化迭代, 每年数万个AB实验被Google、Amazon、eBay、阿里等主流互联网公司应用于线上进行UI内容优化、算法优化、收益优化等方方面面。本文将从AB测试的原理、过程、AB测试结果的评测分析以及关于AB测试的一些误区和大家好好聊一聊关于AB测试的那些事儿。

    一、什么是AB测试?

    AB测试的概念来源于生物医学的双盲测试,双盲测试中病人被随机分成两组,在不知情的情况下分别给予安慰剂和测试用药,经过一段时间的实验后再来比较这两组病人的表现是否具有显著的差异,从而决定测试用药是否有效。互联网公司的AB测试也采用了类似的概念:将Web或App界面或流程的两个或多个版本,在同一时间维度,分别让两个或多个属性或组成成分相同(相似)的访客群组访问,收集各群组的用户体验数据和业务数据,最后分析评估出最好版本正式采用。

    二、AB测试的基本步骤

    AB测试是一个反复迭代优化的过程,它的基本步骤如下图所示可以划分为:

    1.设定项目目标即AB测试的目标

    2.设计优化的迭代开发方案,完成新模块的开发

    3.确定实施的版本以及每个线上测试版本的分流比例

    4.按照分流比例开放线上流量进行测试

    5.收集实验数据进行有效性和效果判断

    6.根据试验结果确定发布新版本、调整分流比例继续测试或者在试验效果未达成的情况下继续优化迭代方案重新开发上线试验

    从对AB测试的定义中可以看出AB测试强调的是同一时间维度对相似属性分组用户的测试,时间的统一性有效的规避了因为时间、季节等因素带来的影响,而属性的相似性则使得地域、性别、年龄等等其他因素对效果统计的影响降至最低。

     

    如何提供对用户的有效分组以及如何判断实验中不同分组用户属性的相似性是AB测试需要解决的第一个问题。而在试验过程中如何收集用户的体验和业务数据,如何对收集的数据进行分析并判断不同版本间的优劣是AB测试需要解决的第二个问题,也是AB测试的目的所在。下面我们对AB测试中这两个关键的问题进一步展开。

    三、AB测试的设计

    AB测试中分流的设计直接决定了测试结果是否有效。AB测试是对线上生产环境的测试,而之所以进行AB测试通常是对测试中的改进版本所产生效果的好坏不能十分确定,所以测试版本的流量通常不宜过大。尤其对于那些影响范围较大的改版(如主流程页面的重大调整),影响用户决策的新产品上线和其他具有风险性的功能上线通常采用先从小流量测试开始,然后逐步放大测试流量的方法。但是,测试版本的流量如果太小又可能造成随机结果的引入,试验结果失去统计意义。

    举个例子:某电商网站对我的历史订单这个页面进行改版的AB测试,测试的目标是提升用户的复购,衡量的指标是经过这个页面的单UV产生的GMV贡献(单日GMV总数/单日进入UV)。假设这个页面每天的UV在2000左右,而我们对新版本取的分流比例是2%,那么一天就会有差不多40个UV进入试验版本。如果试验进行1周然后考察试验结果,这是试验的结果就很容易受到某些异常样本的影响,譬如说某个土豪老王恰好分在了试验组然后购买了一个高价值的东西,那么老王的购买行为就可能带偏整个测试组的统计结果。

    为了规避这种因为样本量不足造成的试验结果不可用,在AB测试设计时可以采用如下措施:

    1.试验设计时预估进入试验的样本量,做分流规划时避免分配给测试集的样本量过少。

    2.除了进行AB测试外增加关于数据有效性考量的AA测试,将原始版本的流量中分出两个和测试版本相同的流量也进入测试。例如:为测试一个新的功能,我们原本准备划分90%流量给老版本,10%流量给新版本;这时我们可以分配70%流量给老版本A,同时生成两个10%流量的老版本C和D进行AA测试,然后把剩余的10%流量给新版本B;在试验过程中通过考察分配给老版本C和D的两股流量是否存在显著性差异,从而认定试验分流是否有效。

    3.如果参与测试新版本已经分配了很大的流量比例,但是仍然存在样本量不足的情况,这时就只能通过拉长试验时间的方式来累积足够的样本量进行比较了

    AB测试的设计过程中另一个重要的点就是AB测试延续的时长了,通常AB测试延续的时间不宜太长,因为AB测试是对线上的多个版本的测试,这也就意味着线上系统需要同时维护多个可用的版本,长时间的AB测试无疑加大了系统的复杂性。但是,另一方面如果试验进行的时间太短可能会造成试验样本量不足的问题。同时,如果进行的是UI改版一类影响用户体验的测试,新版本上线后用户通常需要有一个适应的过程,这时我们通常会在试验开始时给用户一个适应期让用户适应新的UI版本,然后再考察试验的结果。适应期的长短通常以足量用户流量参与试验后的2到3天为宜。适应期过后的试验时间长短除了需要考察样本量的情况外,还需要参考用户的行为周期,譬如说电商用户的购买行为有较强的周次规律,周末流量和购买量与工作日会有显著差异,这时测试的周期应该能够覆盖一个完整的周期,也就是应该大于1周。

    在试验版本的设计过程中还需要考虑线上进行多个试验相互间的影响,譬如在电商的购买流程中我们同时对搜索算法和商品详情页的UI进行优化,这两个变动贯穿在用户的购物流程中,相互之间可能是有影响的,我们需要区分试验中这两种改动带来的影响分别是怎样的。

    在这种情况下当然我们可以将用户流量分成:

    A.老的搜索算法和老的详情页UI

    B.新的搜索算法和老的详情页UI

    C.老的搜索算法和新的详情页UI

    D.新的搜索算法和新的详情页UI

    这样四个版本,然后进行测试。但是这样分流的问题是对于流程中元素的改动,测试的版本是呈现指数上升的,在多个改动同时进行时就容易造成版本流量不足的情况。在这种情况下就需要引入试验分层的概念,将实验空间横向和纵向进行划分,纵向上流量可以进入独占实验区域或者是并行实验区域。在独占实验区域,只有一层,实验可以独享流量且不受其他实验的干扰。在分层区域,不同的应用属于不同layer,每个应用内部,又可以划分为多层,层与层之间相互不影响。流量可以横向经过多层,每一层可有多个实验。流量在每一层都会被重新打散。

    这样多层次正交的实验方式使多个并发实验都可以保证具备一定流量的并行进行。

    最后,在对用户体验有明显影响的实验中通常采用对用户稳定的分流实现。即分到不同版本的用户在多次登录应用落入相同的实验版本,这样可以保证用户体验的一致性,保证用户能够在适应新版本的情况下有稳定的表现。通常会采用不同实验选用不同的hash种子,对用户的guid和上述分层实验的实验层次id的组合进行hash,然后根据hash值取余的方式进行分流。

    四、AB测试效果分析

    关于AB测试实验效果的分析通常分为两个步骤:实验有效性的判断、实验结果的比较。实验有效性的判断即判断实验的分流是否已经到达所需要的最小样本量,从而能够以较大的概率拒绝两类统计错误的发生。最小样本量的判断可以采用假设实验目标指标符合正态分布下,两类错误发生概率的分位数的方式进行估算。或者更一般的可以采用AA测试,对两个老版本的实验结果计算P值,从而判断其是否存在显著差异。如果AA实验的结果不存在显著差异,那么可以认为实验结果是有效的,进而可以对新老版本的实验结果进行进一步的判断。

    在确认实验有效后就可以对实验的结果进行判断了,通常通过比较新实验版本和老版本是否存在显著差异(前述的P值判断),以及计算实验结果指标的置信区间(通常选用指标的95%置信区间),从而判断新版本是否相对老版本存在显著提升或下降。

     

    五、关于AB测试的一些误区

    最后,讲一下关于AB测试的一些误区,通过对这些误区的理解希望能够恰如其分的应用AB测试提升网站和产品的转化等指标。

    误区1: AB测试运用成本过高,可以通过灰度发布的方式来进行AB测试,进而避免同时维护不同版本的情况。

    灰度发布是应用发布通常采用的方式,即对一个pool的部分服务器发布新版本的代码,而其余的服务器采用老版本代码,在确认应用正常的情况下逐步将新版本发布到pool的全部服务器。这样的方式的确可以起到分流的作用,但是这样的分流是不稳定的,用户的两次访问很有可能会被分到新老两个版本上。同时,灰度发布的分流单位通常是以服务器的流量为最小单位的,不能做到对测试流量的精确分配。

    误区2: 用参加实验的部分用户的体验质疑AB实验结果的正确性。

    经常碰到产品经理或是业务人员提出某些用户在新版本的实验中没有转化,而实际实验数据体现新版本效果好于老版本的情况,从而质疑实验的结果。AB测试是基于统计的结果,是基于大样本量的有效统计结果,实验结果的好坏是针对参与实验的大多数样本而言的,个例不具备代表性。

    误区3: AB测试是优化Web应用的利器,应该在所有场合都应用AB测试进行优化。

    AB测试从实验的设计、实施和实验结果的收集通常需要一个不短的阶段,且进行AB实验需要在线上维护多个不同的版本,所以不应该所有场景下都采用AB测试对Web应用进行优化迭代。对于那些明显的bug修复,或者对于那些能够明显改善用户体验的功能,应该采用尽快上线并监控关键数据指标的方式。此外,AB测试也不是silver bullet, 通常AB测试的时间不会延续很长时间,对于一些长期效果很难做到有效的监测和对比。

    例如,某OTA对机票进行捆绑销售产生的收益进行了为期一年的多版本AB测试,测试的目标是在用户转化率没有显著下降的情况下提升用户客单价。在实验中,通过对价格非敏感用户的个性化展示、默认勾选等方式的确客单价有了很显著的提升,同时用户的线上转化率并没有显著变化甚至有了略微的提升。但是,这种捆绑销售的方式从长远来看可能对用户是有伤害的,这种情况在低频消费的场景下很难在实验的结果上有所体现。而且,这种捆绑销售的产品为媒体和公众所诟病,这些都不是AB测试能够体现的。

    综上所述,AB测试是一项复杂的系统工程,除了要掌握AB测试方法,制定严谨的AB测试方案之外,还需要依赖科学的AB测试工具进行试验。

    数极客是国内新一代用户行为分析平台,是增长黑客必备的大数据分析工具,支持APP数据分析网站分析,独创了6大转化率分析模型,是用户行为分析领域首家应用定量分析与定性分析方法的数据分析产品,并且基于用户行为分析系统,提供了会员营销系统A/B测试工具两大数据智能应用解决方案,使得企业可以快速的实现数据驱动增长。

     

    欢迎关注技术公众号:架构师成长营

    展开全文
  • AB测试初探

    千次阅读 2018-08-09 15:37:11
    什么是AB测试AB测试的概念来源于生物医学的双盲测试,双盲测试中病人被随机分成两组,在不知情的情况下分别给予安慰剂和测试用药,经过一段时间的实验后再来比较这两组病人的表现是否具有显著的差异,从而决定...

    什么是AB测试?

    AB测试的概念来源于生物医学的双盲测试,双盲测试中病人被随机分成两组,在不知情的情况下分别给予安慰剂和测试用药,经过一段时间的实验后再来比较这两组病人的表现是否具有显著的差异,从而决定测试用药是否有效。互联网公司的AB测试也采用了类似的概念:将Web或App界面或流程的两个或多个版本,在同一时间维度,分别让两个或多个属性或组成成分相同(相似)的访客群组访问,收集各群组的用户体验数据和业务数据,最后分析评估出最好版本正式采用。

    AB测试的基本步骤

    AB测试是一个反复迭代优化的过程,它的基本步骤如下图所示可以划分为:
    1. 设定项目目标即AB测试的目标

    1. 设计优化的迭代开发方案,完成新模块的开发

    2. 确定实施的版本以及每个线上测试版本的分流比例

    3. 按照分流比例开放线上流量进行测试

    4. 收集实验数据进行有效性和效果判断

    5. 根据试验结果确定发布新版本、调整分流比例继续测试或者在试验效果未达成的情况下继续优化迭代方案重新开发上线试验


    本文只讨论AB测试的分流部分,一种分流算法

    两个前提
    • 不考虑灰度
    • 开启AB测试后单个用户每次进入页面看到的内容相同

    思路

    1. 如何才能保证分流的更准确,随机数是一个不错的思路,但差异性过大,当流量巨大时误差率<1%,由于基数过大,误差值就会很大
    2. 将流量分为100份,每个页面按照配置比例占用对应的份数,实际上就是一个长度为100的数组,然后再将数组打乱,这样理论上最大误差值为占比例最大的页面所占份数(因为做了打乱操作,实际误差值会比这个值低),例如:三个页面的比例:60%,30%,10%,则最大误差值为60。当流量过小时,这个误差值就不容忽视了。

    表面上看,第二种方案更好一些,因为流量太小时AB测试是没有意义的,偶然因素太大会导致分析数据能反映的问题有限。

    当我们单纯的考虑分流算法时,作为一个有追求的公司,这种误差也是不允许的,所以我们想出了第三种方案:

    基于第二种方案,求每个页面所占份数的最大公约数,然后让份数除以最大公约数,得到一个长度更小的数组,然后再做打乱操作,这样理论上最大误差值为占比例最大的页面所占份数, 例如:三个页面的比例:60%,30%,10%,则最大误差值为6。

    实现步骤

    1. 求出参与AB测试的页面的配置比例的最大公约数
        const computeGreatestCommonDivisor = (numberArray) => {
          numberArray = _.compact(numberArray);
          const length = numberArray.length;
          let greatestComomonDivisor = parseInt(numberArray[0]) || 1;
          if (length < 2) {
            return greatestComomonDivisor;
          }
          for (let i = 1; i < length; i++) {
            let tempNumber = parseInt(numberArray[i]);
            if (!tempNumber) continue;
            while (tempNumber !== 0) { // 欧几里得最大公约数算法
              const remiander = greatestComomonDivisor % tempNumber;
              greatestComomonDivisor = tempNumber;
              tempNumber = remiander;
            }
          }
          return greatestComomonDivisor;
        }
    1. 创建一个空数组array,将每个比例除以最大公约数得到份数,放入对应份数的该页面的唯一标识,
    2. 数组长度为arrayLength,将数组打乱,存入redis
    3. 当用户访问时为用户生成一个本次AB测试的唯一数值index(从0开始递增),用index对arrayLength取余remainder, 保存index到redis
    4. 用这个remainder作为索引从array中取值,array[remainder], 这个值就是用户访问到的页面,这样每个用户按照访问顺序,顺序的从数组中取值,当用户在此访问时取出index值做相同操作
    几点补充
    • 每组AB测试都需要为用户维护一套用户索引数据结构,在AB测试开启时重置
    • 求最大公约数,初始化数组,打乱操作都是在初始化AB测试时进行的,不会影响后续的分流操作的性能
    • 收集数据、分析等工作不在本文讨论范围内
    展开全文
  • AB测试及检验

    千次阅读 2020-08-09 00:07:12
    一、什么是AB测试? A/B 测试是一种产品优化方法;为同一个优化目标制定两个方案,让同一部分用户中的一部分用户命中 A 方案,同时另一部分用户命中 B 方案,统计并比较不同方案的点击率、转化率等数据指标,通过...

    一、什么是AB测试?

    A/B 测试是一种产品优化方法;为同一个优化目标制定两个方案,让同一部分用户中的一部分用户命中 A 方案,同时另一部分用户命中 B 方案,统计并比较不同方案的点击率、转化率等数据指标,通过不同方案的数据表现,在确定数据表现通过假设检验后,决定最终方案的实验方法。
    在这里插入图片描述

    二、AB测试的意义?

    AB测试是支持数据决策最有力的工具。

    以下为最基础的数据驱动流程,方案验证即为AB测试过程,实验才是检验真理的唯一标准。

    • 数据收集
    • 数据分析
    • 发现问题
    • 提出方案
    • 方案验证
    • 发布上线

    三、AB测试实验需要满足以下两个特性

    1. 同时性

    两个策略是同时投入使用的,而不是AB两种策略分先后上线,这样会有其他因素影响。

    2. 同质性

    两个策略对应的使用群体需要保证尽量一致。

    四、AB测试实验详解

    1. 流量分配规则:正交与互斥

    (1)正交实验

    每个独立实验为一层,一份流量穿越每层实验时,都会随机打散再重组,保证每层流量数量相同。
    在这里插入图片描述

    (2)互斥实验

    实验在同一层拆分流量,不论如何拆分,不同组的流量是不重叠的。
    在这里插入图片描述

    (3)什么情况下正交、互斥分配流量?

    我们刚刚就用的正交流量分配方式,导致了错误的数据结果,如果那个实验我们用互斥的流量分配方法就完美的解决了这个问题。

    AB测试实验中,两个或多个实验内容相互影响则选择互斥方法分配流量,两个或多个实验内容不会相互影响则选择正交方法分配流量。

    • 正交:可以节省流量;
    • 互斥:可以让耦合的实验完美剥离开来不互相影响。

    (4)举个例子

    在详情页面上做两个实验:

    其中一个是转化按钮颜色的AB测试实验;
    另外一个是转化按钮文案的AB测试实验。

    在这里插入图片描述

    如果我们使用正交分配流量的方式会出现什么情况呢?

    也就是流量同时命中实验一与实验二,最后展现在用户面前的就是如下图四种情况,这种情况我们是无法统计出准确的数据结果的,因为已经违背了单一变量原则。

    这种最好使用互斥来分配流量,一部分用户命中实验一、另一部分用户命中实验二。
    在这里插入图片描述

    2. AB测试系统实验架构

    AB测试系统实验架构包括:应用层-实验层-策略层

    (1)应用层

    应用层级别最好,应用层与应用层之间的流量是正交的。

    (2)实验层

    实验层是应用层子层,实验层与实验层之间的流量是互斥的。

    (3)策略层

    策略层是实验层子层,一个实验可以有多个策略,多个策略之间流量相互不影响。

    举个例子:

    应用:App客户端;
    实验:购买按钮颜色;
    策略:红色、橘色。

    3. 创建实验

    创建实验时一般先设置好实验条件和统计指标

    实验条件:AB测试系统可以对一些条件的用户进行限制,城市、年级、新老用户、版本号、平台(ios、android、h5)。这里我们完全可以直接引入用户画像系统直接进行人群定向取做AB测试实验。传送门:斑马:用户画像从搭建到应用实战

    这个功能主要是针对满足这样实验条件的用户进行分流,如不满足这些条件则不分流,直接命中默认策略。默认策略是我们在创建策略时勾选的,如果用户不满足条件命中默认策略,这些用户产生的数据是不参与计算的,也就不会影响实验结果。
    在这里插入图片描述

    (1)城市、年级、新老用户

    这几个条件很好理解,就是指用户所在城市、年级、新老,但需要用户登录才能拿到这样的信息。

    如果设定了实验条件,用户处于非登录态怎么办呢?

    非登录态的用户我们认为他是不满足实验条件的,所以会走默认策略,这样会避免一些不满足实验条件的用户却命中实验的可能。但为了保证同一个用户在登入登出看到的页面是相同的,所以这部分人即使登录后也会走默认策略。

    但不是全部未登录用户都会这样,我们判断当前时间与未登录用户刚登录的时间点的差值是否大于两天。

    如果大于两天我们会让他命中实验,进行分流,这样也是为了保证每天下载的大量用户也会命中AB测试的情况,达到一个平衡的状态。

    在这里插入图片描述

    (2)适用版本

    这里的版本是针对客户端的AB测试提供的功能。

    比如:Ios 在1.0.1 版本,Android在1.0.2版本上线一个AB测试实验。

    如果不绑定版本号会出现什么情况?

    因为版本发布,除强制升级外,用户还处于老版本。对于老版本的用户也会命中实验,但是这些用户并没有看到不同的策略,就会出现,AB测试系统分给用户A策略,但是用户看到的是B策略,最终影响数据准确性。

    版本号设置会向上兼容,也就是说只有此版本号,或者高于此版本的用户才能命中实验。

    (3)平台

    平台分为3种,分别为:IOS客户端、Android客户端、JS(H5)

    分别针对不同的平台进行的AB测试。

    这里不说Ios和Android,只说一下H5,因为H5的埋点上报与客户端不一样,H5 的分流的唯一ID也与客户端不一样。客户端的分流使用的ID是设备ID,H5则是cookieID

    统计指标:

    (1)对于AB两个策略上线后,我们需要跟踪两个策略的数据效果

    这两个策略的效果数据来源就是页面的浏览与按钮的点击两个埋点事件来提供数据支持的。比如:客户端需要对课程详情页的报名按钮样式进行AB测试实验,数据监控的时候我们就需要统计进入详情页的人数与报名按钮点击uv进行统计。

    以报名按钮uv/详情页uv此数值来统计报名按钮样式的AB两种策略效果,那么在创建实验时就需要确定统计指标,确定指标后就需要确定实验所需要哪些埋点指标统计。这里就需要详情页uv以及报名按钮uv两个埋点事件

    当然还有更负责的数据指标,但都可以通过埋点数据上报来进行统计。

    (2)计算方式

    假设一个漏斗中包含了 A、B、C、D、E 五个步骤,选择的时间范围是 2015 年 1 月 1 日到 2015 年 1 月 3 日,窗口期是 1 天。那么,如果用户在2015年1月1日到2015年1月3日触发了步骤 A,并且在步骤 A 发生的 1 天内,依顺序依次触发了 B、C、D、E,则视作该用户完成了一次成功的漏斗转化。

    在这个过程中,如果穿插了一些其它的步骤或者行为,例如在满足时间限制的情况下,用户的行为顺序是 A > X > B > X > C > D > X > E,X 代表任意一个事件,则该用户依然视作完成了一次成功的漏斗转化。

    如果该用户在这个事件限制范围内,依次触发了 A > B > C > E,则该用户没有完成该漏斗的转化,并且会被记作步骤 C 的流失用户。

    考虑一个更复杂的情况,如果一个用户在所选时段内有多个事件都符合某个转化步骤的定义,那么会优先选择更靠近最终转化目标的事件作为转化事件,并在第一次达到最终转化目标时停止转化的计算。

    假设一个漏斗的步骤定义是:访问首页、选择支付方式、支付成功,那么不同用户的行为序列及实际转化步骤(标记部分)见如下例子:

    • 例 1:访问首页 -> 选择支付方式(支付宝) -> 选择支付方式(微信)-> 支付成功
    • 例 2:访问首页 -> 选择支付方式(支付宝) -> 访问首页 -> 选择支付方式(微信)-> 支付成功
    • 例 3:访问首页 -> 选择支付方式(支付宝) -> 访问首页 -> 选择支付方式(微信)->== 支付成功== -> 选择支付方式(微信)-> 支付成功。

    五、分流引擎

    分流策略:简单的理解就是哪些用户会命中策略A,哪些用户会命中策略B。

    在说分流策略之前先举个例子,配合例子更好理解。

    假设报名按钮颜色实验分50%流量,策略“红色”按钮分流量40%,策略“蓝色”按钮分流量60%

    例如:取模10000,那报名按钮颜色实验的数字区间为0-5000;10000*50%。

    策略“红色”按钮数字区间为0-2000;5000*40%。

    策略“蓝色”按钮数字区间为2000-5000;2000+5000*60%。

    现在我们对用户唯一id,应用id进行哈希。哈希后得到一个数字,这个数字落到哪个数字区间就将用户分到哪个策略中去。经测试10w次分流,8s,流量diff在1%以内,每个应用分到的用户正交,不相互影响。

    如图:
    在这里插入图片描述

    六、对接方式

    AB测试系统和App服务端或H5服务端对接

    分别有两个接口:一个是策略请求接口、一个是埋点接口。

    (1)埋点接口

    AB测试系统将接口参数传给服务端,服务端将参数传给客户端和H5前端。

    客户端或者前端遍历这些 eventids(埋点事件id)如果有用户命中这些埋点事件则上百 abtestid key及值。

    (2)策略接口

    例如实验是客户端报名按钮“红色”、“蓝色”。

    当流量进入到客户端后, 客户端向服务端询问:我这有俩颜色的按钮,我要展示哪个颜色的按钮啊?

    服务端:我暂时也不知道,我帮你问问AB测试服务。

    服务端问AB测试服务:客户端来流量了,有两个颜色的按钮,需要展示哪个颜色的按钮啊?

    AB测试服务:展示“红色”按钮。

    服务端:我知道了,并告诉客户端:展示“红色”按钮。

    客户端:我知道了,客户端展示“红色”报名按钮。

    七、AB测试效果分析

    AB测试是典型的通过样本数据估计总体数据效果的方法,所以为了避免出现小概率错误,我们需要对AB测试的结果进行假设检验。

    展开全文
  • 我在windows下用apache ab测试nignx压力测试 无法测试,提示如下 apr_socket_connect(): 由于目标计算机积极拒绝,无法连接。 (730061) 可是apache的是可以测试的。 请求解决方法?
  • Apache-ab测试

    万次阅读 2015-06-14 22:25:23
    使用ab测试,测试网站性能
  • AB测试结果分析

    千次阅读 2017-03-17 21:20:48
    ab测试elasticsearch ./ab -n 10000 -c 100 -A elastic:changeme -p '/tmp/post.txt' 'http://127.0.0.1:9200/presstest/list00/' 转载:http://www.cnblogs.com/hustcat/articles/1785860.html ...
  • AB测试,分组测试,分桶测试

    千次阅读 2018-12-24 10:13:01
      简单来说,A/B 测试的目的是得出:给定环境中存在一处不同时主体...  AB测试是为Web或App界面或流程制作两个(A/B)或多个(A/B/n)版本,在同一时间维度,分别让组成成分相同(相似)的访客群组随机的访...
  • Apache ab 测试使用指南

    万次阅读 2016-08-10 17:59:59
    引言: ab测试是业界比较流行和简单易用的一种压力测试工具包,本文将简要介绍其核心使用的方法。
  • apache ab测试介绍

    2017-05-23 20:10:41
    apache ab测试介绍安装ab命令环境为ubuntu16.04.2 LTS,安装的命令为:sudo apt-get install apache2-utils使用说明格式为:ab [options] [http[s]://]hostname[:port]/path参数比较多,可以通过ab --help来查看。...
  • AB测试和灰度发布

    千次阅读 2018-06-02 00:06:23
    AB测试AB测试是为Web或App界面或流程制作两个(A/B)或多个(A/B/n)版本,在同一时间维度,分别让组成成分相同(相似)的访客群组随机的访问这些版本,收集各群组的用户体验数据和业务数据,最后分析评估出最好...
  • UI 设计之AB测试

    2018-08-01 18:24:10
    UI 设计之AB测试 ——京东淘宝登录键大比拼 作者:Yuie 指导老师:何吉波 赛前准备 什么是AB测试 AB测试是为Web或App界面或流程制作两个(A/B)或多个(A/B/n)版本,在同一时间维度,分别让组成成分...
  • 数据分析AB测试实战项目

    千次阅读 2019-08-02 14:30:57
    本文是《数据蛙三个月强化课》的第四篇总结教程,如果想要了解数据蛙社群,可以阅读给DataFrog社群同学的学习建议。温馨提示:如果您已经熟悉数据分析指标,...这里我们把范围限制到互联网公司的AB测试中,是将...
  • AB测试平台的工程实现

    千次阅读 2019-06-22 18:38:42
    AB测试平台的工程实现 作者在《推荐系统评估》和《推荐系统的商业价值》这两篇文章中提到了AB测试的重要性,新的推荐算法在上线到现网时需要做AB测试,对比新算法和老算法在关键指标上的差异,只有当新算法明显优于...
  • centos单独编译安装ab测试

    千次阅读 2017-03-18 14:45:18
    centos单独编译安装ab测试
  • 使用ab测试工具,测试本地nginx性能,出现如下错误apr_socket_connect(): 由于目标计算机积极拒绝,无法连接;尝试将并发数减小,错误依旧,尝试将并发数改为1,结果如下图:![图片说明]...
  • ab测试高并发

    千次阅读 2018-03-18 10:56:28
    ab测试高并发Write here...Copyright ©2017 . All Rights Reserved. 测试高并发cmd 到命令框 cd 到 D:\wamp\wamp64\bin\apache\apache2.4.23\bin&gt;目录下 输入ab -c 10(人) -n 1000(连接) 请求的路径redis...
  • 基于JS的AB测试方案

    2017-08-07 18:45:45
    客户端的AB测试一直蛮恶心的,基本都是要预置代码、if-else入侵原有逻辑、发版前把所有测试方案都想好,新增只能发版。 当然,像RN这种究极方案解决一切由客户端逻辑不能修改带来的问题,还有一个更加简单的方法:...
  • ab测试中的分层分流算法

    千次阅读 2019-11-19 11:59:17
    AB测试是为Web或App界面或流程制作两个(A/B)或多个(A/B/n)版本,在同一时间维度,分别让组成成分相同(相似)的访客群组(目标人群)随机的访问这些版本,收集各群组的用户体验数据和业务数据,最后分析、评估出...
  • AB测试的统计学原理

    千次阅读 2020-02-29 19:44:40
    随笔记一些: 1. 大数定理说明频率的极限是概率;...2. AB测试中的假设检验都用双侧检验,这样比较容易记忆和处理,即原假设都设置为等号,即AB策略没有差异。 3. AB测试中的假设检验一般用Ttest,...
  • ab测试算法的基本概念

    千次阅读 2017-12-28 16:48:15
    对于AB测试来说,ab测试算法是非常重要的一个组成部分,一起跟我来看看AB测试是如何通过算法来实现的吧。 AB测试其实就是为了优化网站设计了A版本和B版本,然后通过必要的测试来比对这两个版本之间各种重要的数据来...
  • ab测试工具结果分析

    2015-03-13 17:08:36
    以下,是一个ab测试返回的结果,作一个分析说明 This is ApacheBench, Version 2.0.40-dev apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 2006 The Apache ...
  • 分级测试,就是说对测试进行分级,区分什么重要、什么不重要,做区别对待。 之所以需要区别对待,我总结有两个原因。 一个是因为资源上的限制,时间、人力,让我们没有条件来做无差别覆盖。 二是本身的限制,在...
  • 从零开始学AB测试:基础篇

    千次阅读 2020-04-22 21:41:26
    什么是AB测试? 通俗点理解,AB测试就是比较两个东西好坏的一套方法,这种A和B的比较在我们的生活和人生中非常常见,所以不难理解。具体到AB测试这个概念,它和我们比较哪个梨更大、比较哪个美女更漂亮、比较哪个...
  • Why需要进行AB测试? A方案和B方案主观上各有优劣,无法判断,选取一部分用户样本,做AB测试,根据上线之后的数据表现,来决定哪个更好。 AB—越来越重要,why? 互联网产品设计的流程和方法论逐渐成熟,产品同质化...
  • AB测试中如何给样本分组?

    千次阅读 2019-03-11 18:26:36
    目录什么是AB测试?什么叫相似?为什么要相似?怎么实现相似?随机化(Rerandomization)再随机化[^2]协方差适应的再随机化(Covariance-Adaptive Rerandomization)[^3] 什么是AB测试AB测试现在大规模出现在...
  • apache ab测试

    千次阅读 2018-10-01 22:38:05
    Apache的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx、lighthttp、IIS等其它Web服务器的压力。  ab命令对发出负载的计算机要求很低,既不会占用很多CPU,也不会占用太多的内存,但却会给目标...
  • ab测试】关于ab测试中path传参

    千次阅读 2014-03-09 00:37:17
    假设有这么一个Get请求: ... 通过ab进行并发测试时,该请求url需要使用引号来标记。如: root@XIAOMO:/home/xiaomo/# ab -c 10000 -n 10000 'http://myserverfortest.com:7086/test
  • ab测试工具使用

    千次阅读 2019-05-20 17:47:02
    网站压力测试 Usage: ab [options] [http[s]

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 159,313
精华内容 63,725
关键字:

ab测试