av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

如何進(jìn)行A/B測試,你學(xué)會了嗎?

什么是 A/B 測試?

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

創(chuàng)新互聯(lián)公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站建設(shè)、做網(wǎng)站網(wǎng)站策劃,項目實(shí)施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元益陽做網(wǎng)站,已為上家服務(wù),為益陽各地企業(yè)和個人服務(wù),聯(lián)系電話:18980820575

為什么不使用第三方服務(wù)?

確實(shí)將第 3 方 X 用于 A/B。

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

  • 由于服務(wù)器端標(biāo)記的高延遲
  • 特征復(fù)雜度
  • 分割部分的跟蹤和影響測量。
  • 成本高

它提供什么?

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

設(shè)計時要牢記可擴(kuò)展性和進(jìn)一步增強(qiáng)功能。

常用功能包括:

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

技術(shù)棧:

Springboot

Java 8

Maven

Mysql

Groovy

架構(gòu)設(shè)計:

這是上面實(shí)體保存的內(nèi)容的簡短描述。所有實(shí)體都擴(kuò)展 BasEntity 以獲取所有實(shí)體的公共列。

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

流程設(shè)計:

現(xiàn)在將了解以上 2 個流程的含義:

usePreCalculated標(biāo)志在這里很重要,因為它意味著我們是要重用 User_Feature_Mapping 表中包含的值還是再次評估邏輯表中的條件。

  • 如果為假,將檢查實(shí)驗的每個特征的 whitelisted_list。如果退出則返回值,否則將評估邏輯然后相應(yīng)地返回特征值;
  • 如果為真,將首先檢查 user_feature_mapping 表是否存在 user_id 和 experiment_id。如果是,那么返回該值。如果沒有,那么將按照上面的步驟(步驟 1)

注意:每次評估邏輯時,都會將結(jié)果保存在user_feature_mapping表中

如何評估條件?

將常規(guī)代碼存儲在邏輯表的條件列中。以下只是一個示例:

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 是因為它具有絕對的靈活性??梢詧?zhí)行復(fù)雜的功能,甚至可以使用存儲為文本的代碼調(diào)用外部方法和 api。當(dāng)用例很復(fù)雜時,這很有用,例如想根據(jù)某些只能由第三方 api 實(shí)現(xiàn)的用戶屬性或參數(shù)來分配用戶段。

例如,如果想將A/B分成90:10,可以對user_id進(jìn)行模10運(yùn)算,并將結(jié)果0分配給B段,剩下的分配給A段??梢远啻胃谋壤踔吝壿嫙o需重新部署。

API列表:

  • /experiment POST -> 創(chuàng)建一個實(shí)驗
  • /experiment/{experiment_name} PUT -> 編輯實(shí)驗
  • /experiment/{experiment_name} GET -> 獲取實(shí)驗的詳細(xì)信息
  • /experiment/{experiment_id}/feature POST -> 向?qū)嶒炋砑犹卣?/li>
  • /feature/{feature_id} PUT -> 編輯特征
  • /feature/{feature_id}/whitelist PUT -> 編輯特定功能的白名單用戶列表
  • /experiment/evaluate/{experiment_name} POST -> 主要 api。評估實(shí)驗并返回 json 格式的響應(yīng)

網(wǎng)頁標(biāo)題:如何進(jìn)行A/B測試,你學(xué)會了嗎?
文章出自:http://uogjgqi.cn/article/dpdshdo.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流