成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何進行A/B測試,你學會了嗎?

開發 前端
A/B 測試是種實驗方法,用于比較兩種或更多不同版本網頁、廣告、郵件等產品或服務性能和效果。在A/B測試中,將隨機分配相同數量用戶或訪問者,讓他們分別訪問不同版本產品或服務,然后收集分析他們的反饋和行為數據,以決定哪個版本更有效或更受歡迎。

什么是 A/B 測試?

A/B 測試,也稱為拆分測試,是一種營銷實驗,可以在其中拆分受眾以測試廣告系列的多個變體并確定哪個效果更好。換句話說,可以向一半觀眾展示內容/功能/行為的版本 A,而向另一半觀眾展示版本 B。

為什么不使用第三方服務?

確實將第 3 方 X 用于 A/B。

對于 X,觀察到以下問題:

  • 由于服務器端標記的高延遲
  • 特征復雜度
  • 分割部分的跟蹤和影響測量。
  • 成本高

它提供什么?

該服務(作為微服務實現)將使客戶能夠進行 A/B 測試。可以對多個特征(返回值)進行任意數量的實驗。

設計時要牢記可擴展性和進一步增強功能。

常用功能包括:

  • 能夠在受限的基礎上控制功能上線(特定用戶)
  • 為隨機 (%) 用戶啟用任何功能
  • 根據具有復雜邏輯的用戶配置文件/特定參數評估功能
  • 能夠在受限的基礎上控制前端功能(UI 元素)
  • 在任何實驗中添加/編輯特征
  • 使段相互排斥的能力
  • 能夠找出哪個用戶屬于特定細分
  • 此類實驗可能產生的所有其他分析

技術棧:

Springboot

Java 8

Maven

Mysql

Groovy

架構設計:

圖片

這是上面實體保存的內容的簡短描述。所有實體都擴展 BasEntity 以獲取所有實體的公共列。

  • 實驗:所有實驗都將保存在這里,并帶有唯一名稱和可選描述。
  • Feature:一個實驗可以有多個特征,這些特征將保存在這個表中,具有唯一的名稱,可選的描述和 experiment_id 作為實驗表的外鍵。 值是該功能將以 json 格式返回給客戶端的內容。 Whitelisted_users 將包含 user_id 列表作為逗號分隔列表,它將告訴哪些用戶分配給此功能。
  • 邏輯:由于每個實驗都可以有一定的條件來劃分用戶段,所以這個條件會保存在邏輯表的條件欄中。(我們稍后會來實現)
  • User_Feature_Mapping:因為我們可能希望一旦用戶被分配到某個功能,它將在未來的 api 調用中保持相同的功能。換句話說,我們可能希望保持一致性而不是每次都評估邏輯(條件)。

流程設計:

圖片

圖片

現在將了解以上 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段。可以多次更改比例甚至邏輯無需重新部署。

API列表:

  • /experiment POST -> 創建一個實驗
  • /experiment/{experiment_name} PUT -> 編輯實驗
  • /experiment/{experiment_name} GET -> 獲取實驗的詳細信息
  • /experiment/{experiment_id}/feature POST -> 向實驗添加特征
  • /feature/{feature_id} PUT -> 編輯特征
  • /feature/{feature_id}/whitelist PUT -> 編輯特定功能的白名單用戶列表
  • /experiment/evaluate/{experiment_name} POST -> 主要 api。評估實驗并返回 json 格式的響應
責任編輯:武曉燕 來源: Java學研大本營
相關推薦

2023-07-26 13:11:21

ChatGPT平臺工具

2024-07-10 08:26:02

開源項目測試

2023-04-14 09:04:07

測試TDBF單元測試

2023-01-26 00:28:45

前端測試技術

2024-01-19 08:25:38

死鎖Java通信

2024-02-04 00:00:00

Effect數據組件

2023-01-10 08:43:15

定義DDD架構

2023-07-29 00:10:48

2022-09-12 08:01:21

GreatSQLMySQL性能

2023-12-07 07:03:09

2022-11-30 09:54:57

網絡令牌身份驗證

2024-01-02 12:05:26

Java并發編程

2023-08-01 12:51:18

WebGPT機器學習模型

2022-08-29 08:05:44

Go類型JSON

2023-01-28 10:40:56

Java虛擬機代碼

2023-03-17 16:44:44

Channel進程模型

2024-01-05 07:46:15

JS克隆對象JSON

2022-11-23 14:57:04

2024-11-29 08:53:46

2024-02-21 19:02:05

Go模板化方式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一区二区在线 | 久久国产亚洲精品 | 国产精品视频一区二区三区 | 免费三级黄 | 精品电影 | 国产成人免费视频 | 午夜视频一区二区三区 | 国产精品国产精品国产专区不卡 | 欧美一区二区三区高清视频 | 一区二区三区四区视频 | 日韩视频免费在线 | 视频在线一区二区 | 成人性视频免费网站 | 欧美涩涩网 | 久久久久久久97 | 天堂影院av | 国产在视频一区二区三区吞精 | 国产精品欧美一区二区三区不卡 | 国产一区二区三区在线免费 | 日韩aⅴ在线观看 | 国产色网站 | 一区二区三区免费在线观看 | 91国产在线播放 | 96久久久久久| 国产在线精品一区二区 | 午夜a√ | 99tv| 成人做爰www免费看视频网站 | 国产精品三级久久久久久电影 | 日韩一区二区在线观看视频 | 亚洲人a | 久久久久久91 | www.中文字幕.com | 亚洲一区视频在线播放 | 日日干天天操 | 欧美中文字幕一区 | 免费看大片bbbb欧美 | 91久久久久| 性欧美精品一区二区三区在线播放 | 色婷婷亚洲一区二区三区 | 97视频成人 |