• 0
  • 0
分享
  • 如何进行A/B测试,你学会了吗?——软件测试圈
  • 曼倩诙谐 2024-08-20 16:54:12 字数 2114 阅读 196 收藏 0

  什么是 A/B 测试?

  A/B 测试,也称为拆分测试,是一种营销实验,可以在其中拆分受众以测试广告系列的多个变体并确定哪个效果更好。换句话说,可以向一半观众展示内容/功能/行为的版本 A,而向另一半观众展示版本 B。

  为什么不使用第三方服务?

  确实将第 3 方 X 用于 A/B。

  对于 X,观察到以下问题:

  · 由于服务器端标记的高延迟

  · 特征复杂度

  · 分割部分的跟踪和影响测量。

  · 成本高

  它提供什么?

  该服务(作为微服务实现)将使客户能够进行 A/B 测试。可以对多个特征(返回值)进行任意数量的实验。

  设计时要牢记可扩展性和进一步增强功能。

  常用功能包括:

  · 能够在受限的基础上控制功能上线(特定用户)

  · 为随机 (%) 用户启用任何功能

  · 根据具有复杂逻辑的用户配置文件/特定参数评估功能

  · 能够在受限的基础上控制前端功能(UI 元素)

  · 在任何实验中添加/编辑特征

  · 使段相互排斥的能力

  · 能够找出哪个用户属于特定细分

  · 此类实验可能产生的所有其他分析

  技术栈:

  Springboot

  Java 8

  Maven

  Mysql

  Groovy

  架构设计:

1-1.png

  这是上面实体保存的内容的简短描述。所有实体都扩展 BasEntity 以获取所有实体的公共列。

  实验:所有实验都将保存在这里,并带有唯一名称和可选描述。

  Feature:一个实验可以有多个特征,这些特征将保存在这个表中,具有唯一的名称,可选的描述和 experiment_id 作为实验表的外键。 值是该功能将以 json 格式返回给客户端的内容。 Whitelisted_users 将包含 user_id 列表作为逗号分隔列表,它将告诉哪些用户分配给此功能。

  逻辑:由于每个实验都可以有一定的条件来划分用户段,所以这个条件会保存在逻辑表的条件栏中。(我们稍后会来实现)

  User_Feature_Mapping:因为我们可能希望一旦用户被分配到某个功能,它将在未来的 api 调用中保持相同的功能。换句话说,我们可能希望保持一致性而不是每次都评估逻辑(条件)。

  流程设计:

1-2.png

1-3.png

  现在将了解以上 2 个流程的含义:

  usePreCalculated标志在这里很重要,因为它意味着我们是要重用 User_Feature_Mapping 表中包含的值还是再次评估逻辑表中的条件。

  如果为假,将检查实验的每个特征的 whitelisted_list。如果退出则返回值,否则将评估逻辑然后相应地返回特征值;

  如果为真,将首先检查 user_feature_mapping 表是否存在 user_id 和 experiment_id。如果是,那么返回该值。如果没有,那么将按照上面的步骤(步骤 1)

  注意:每次评估逻辑时,都会将结果保存在user_feature_mapping表中

  如何评估条件?

  将常规代码存储在逻辑表的条件列中。以下只是一个示例:

  import groovy.lang.GroovyShell;
  public class GroovyDemo {
      public static void main(String[] args) {
          System.out.println("This represents some random code");
          String groovyScript = "println 'first line of Groovy output'\n" +
                  "println 'second line of Groovy output'";
          GroovyShell groovyShell = new GroovyShell();
          // instead of passing a String you could pass a
          // URI, a File, a Reader, etc... See GroovyShell javadocs
          groovyShell.evaluate(groovyScript);
          System.out.println("This represents some more random code");
      }
  }

  选择 groovy shell 是因为它具有绝对的灵活性。可以执行复杂的功能,甚至可以使用存储为文本的代码调用外部方法和 api。当用例很复杂时,这很有用,例如想根据某些只能由第三方 api 实现的用户属性或参数来分配用户段。

  例如,如果想将A/B分成90:10,可以对user_id进行模10运算,并将结果0分配给B段,剩下的分配给A段。可以多次更改比例甚至逻辑无需重新部署。


作者:学研妹    

来源:http://www.51testing.com/html/11/n-7796011.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1.分析BUG是前端问题还是后端问题web端第一章通过浏览器的控制台(F12)点击Network查看HTTP状态码和数据传参情况第二种通过抓包工具Charlesapp端通过抓包工具Charles来确定传参是否准确如果app发抓包那么可以用jmeter跑接口,看传参2.查看服务器查看服务器日志查看动态日志 tail -ftail -f vsr/xxx/log.logtail  -fn 1000   vsr/xxx/ltest.log   循环实时查看最后1000行记录(最常用的)查看静态...
            1 1 1059
            分享
          • 前言随着测试技术的发展,接口自动化测试逐渐成为各大公司投入产出比最高的测试技术。介入时间早,执行效率高,稳定性高的优点,让越来越多的公司引入接口自动化测试。框架简介APIAutoTest是处理API接口的轻量级自动化测试框架,Java语言实现,基于TestNG测试框架,支持持续集成,自动构建与测试。框架介绍数据驱动设计,使用TestNG中的@DataProvider读取Excel中存储的自动化测试用例;基于TestNG测试框架;使用HttpClient发送Http请求,并统一接口response返回值为String;使用fastJson和Jsoup进行数据解析,由于请求返回值的统一,解析数据异...
            12 13 2129
            分享
          •   很多对软件测试行业感兴趣的小伙伴,都听说过兼容性测试,但却不太理解兼容性测试是干啥的。除了我们日常经常听到的手机版本兼容,游戏升级迭代,其实兼容性测试还包括很多其他方面。今天,我们就一起来盘一盘什么是兼容性测试吧~  什么是兼容性测试?  我们先来想一下,什么叫兼容。也就是说放在不一样的载体,或者不一样的环境里,这个程序都必须能正常运转,这个叫兼容。所以,也就不难理解什么叫兼容性测试了吧~  根据度娘官方的解释:软件兼容性测试是指,检查软件之间能否正确地进行交互和共享信息。  随着用户对来自各种类型软件之间共享数据的能力,和充分利用空间同时执行多个程序能力的要求,测试软件之间能否协作变得越...
            0 0 880
            分享
          •   A / B测试  A / B测试通常适用于网站或登录页面。 在一段时间内测试了两个单独的设计(A和B)。 然后收集有关其性能的数据。 目标是潜在客户的产生或产品销售的转换。 如果分析表明设计A或B转换用户的速率更高,那么它被宣布为获胜者,其他设计也将退出,我们将继续进行其他拆分测试-始终尝试提高转换率。 有许多第三方解决方案将帮助运行此类可用性测试。 实际上,如果没有诸如Optimizely之类的第三方工具,则很难运行这些测试。  好的A / B测试应该有多具体? 一次更改一个元素。 要真正理解为什么一种设计优于另一种设计需要特定性。 明确定义测试的目标,用户的方案,用户可能遇到的问题以及...
            0 0 953
            分享
          •   今天给大家分享下,大田在平常工作中,使用 Jmeter 做完接口测试后,如何去简单做个压力测试,看本次测试接口的承载能力。  在接口测试的基础上增加一个元件:聚合报告。  步骤  1、准备好批量的压测数据,这个数据是来源于接口测试过程,将数据保存在 CSV 或者 txt 文件中;  2、创建 CSV 元件,配置好文件路径,以及各个变量名称,应为数据文件中各个表头数据;  3、在 HTTP 请求中使用 ${} 去引用上述图中各个变量,如:${变量名1};  4、在线程组中设置要并发的数量即下图中的线程数,还可以勾选调度器,设置持续时间和启动线程组时延迟时间。  备注  大...
            0 0 1490
            分享
      • 51testing软件测试圈微信