手把手教你從0到1搭建AB測試系統(核心架構)
本文對AB測試做了相關的整體介紹。什么是A/B測試?為什么要使用A/B測試?A/B測試的架構是什么?
最近一段時間在負責公司內部AB測試系統從0到1的搭建,在實現中踩了很多坑,也做了很多競品分析了解國內外的競品通用做法。
借此機會總結下這段時間的經驗并分享給大家,希望能讓看到這篇文章的人少走彎路。
之所以命名這個題目是因為我小學的時候曾學過一篇文章叫《手把手教你從0-1搭建傳奇私服》,一不小心就暴露了年齡哈哈哈,跟著教程確實搭建成功并且還有附近的人進入游戲,可是當時自己的電腦作為服務器的性能太差,運營一天就關閉了,傷感。
分析大多是從產品經理需要了解的寬度和深度來描述,具體的技術不會涉及很多。AB測試的系統里面細講起來會比較復雜,這一系列文章的主要目的就是掰開了揉碎了結構化的把這點事說清楚。
閑話少敘,進入正題!
一、什么是AB測試?
引用VWO對AB測試的解釋:
A/B testing (sometimes called split testing) is comparing two versions of a web page to see which one performs better.?You compare two web pages by showing the two variants (let’s call them A and B) to similar visitors at the same time. The one that gives a better conversion rate, wins!
從圖中可以看出,AB測試是對比兩個或多個變體在同一地方好壞的方法,并且需要保證樣本的同時和同質。
同時性:兩個變體是同時投入使用的,而不是今天使用A變體,明天使用B變體,這樣會有其他因素影響。比如,對于電商網站來說今天沒有活動,而明天是雙十一,在這個條件下我們不能判斷變體B比變體A好。
同質性:兩個變體對應的使用群體需要保證盡量一致。比如,想想一個極端場景:變體A里全是女性,變體B中全是男性,我們根本無法判斷出來究竟是方案影響了最終效果還是性別。
為什么要使用AB測試?
先來看下最近挺火的一個概念:增長黑客。
俗話說:人挪活,樹挪死?;ヂ摼W想要成長也得挪一挪,我個人理解增長黑客的核心就是:變。
左邊PDCA戴明環,這個四部的循環一般用來提高產品品質和改善產品生產過程。
右邊是增長黑客環,是不是很像?
互聯網的好處就是能對數據能夠有更加深層次的挖掘和記錄,經過對整體數據的分析提出能夠達成自己的目標的解決方案,然后排期、測試,根據測試數據再進行分析依次循環,如下圖:
觀察力驚人的你一定還發現了增長黑客里邊有個紅色星星是干啥的?
增長黑客里叫北極星指標,他的作用是:
- 重點抓取;
- 明確優先級;
- 提高行動力;
北極星指標舉例:
詳細介紹北極星指標的文章可以看這篇:如何選擇正確的數據指標?
上述說了這么多概念,主要是為了讓大家對AB測試的背景有個基礎的認知,接下來重點說AB測試。
二、AB測試的架構
我會從四個方面:管理后臺、分流引擎、結構數據、對接方式來解構如果想要做一個AB測試系統需要準備哪些。
這篇文章的目的是為了讓大家有一個宏觀的了解,詳細的功能性闡述會放在后續的文章中。
下面這張是宏觀的腦圖:
1. 管理后臺
我們習慣定義每一個AB測試都屬于一個獨立的實驗,方便管理和查看統計數據。
在管理后臺當中可以創建、管理實驗,還可以在實驗進行中、結束后查看實驗數據。
舉例國外和國內分別做的比較好的AB測試平臺的實驗架構:
國外:Google 的 Optimize。Google的實驗架構一共有五層:
國內:吆喝科技。吆喝科技的實驗架構一共有四層:
為什么有這么多層?
其實真正看實驗的是最下面那兩層,實驗下面綁定不同的變體(或者叫版本)。
上面的層是為了更好的管理賬號,他們作為商業軟件需要更靈活的適合不同公司的情況,各位按需即可。
2. 分流引擎
AB測試一般又稱為桶測試,為啥叫桶測試呢?奧秘就在分流這塊!
先解釋一下變體和桶的關系:
為了方便計算,假設現在有12個人(Customer),我們給12個人進行編號,C1~C12;有6個桶(Bucket)我們編號為B1~B6。
每個用戶在訪問實驗時,會先進入到分流算法中,由算法來決定分到哪個桶里面,都分完后最理想的是每個桶里正好有2個人。(實際上基于大數定律原理,數據量越大分配的會越平均)
那么現在,假設每個變體的流量是50%,變體A我們假定對應的是三個桶B1、B2、B3桶,變體B也是對應的是B4、B5、B6桶。
實際上有沒有發現,變體A選中的概率是50%,所以只要對應任意三個桶即可:
- 算法:保證分每個桶分到的越隨機越平均越好。
- 節點:前端分流和后端分流
- 分流主體:Cookie、Session
國內的AB測試一般采取的是Cookie分流,Google采取的是Session分流。
3. 結構數據
- 埋點方式:主要是數據的采集和上報
目前市面上常用的埋點方式為:代碼埋點、可視化埋點、全埋點(或者無埋點)
- 數據倉庫:埋點數據的清洗、計算、儲存。
結構數據的準確性決定了,AB測試數據分析準確性,如果你所在的公司埋點沒有搞起來,并且無法保證數據的準確性,我勸你還是不要做AB測試浪費時間 [尷尬又不失禮貌的微笑]。
4. 對接方式:業務方接入到AB測試的方式
對接方式更偏技術,但是從產品的角度需要知道不同方式對AB測試競爭力的影響。
如果是商用的AB測試軟件SDK肯定是首選,因為你不可能每次都與業務方對接接口,并且SDK里面是會包含埋點的。
如果只是內部使用,并且是初步搭建AB測試系統,最好還是選取接口的方式,方便快捷并且比較穩定。
5. 從訪問到產生實驗統計數據的流程
上面是拆分了不同的模塊做了簡單的介紹,下面介紹一下用戶從訪問到產生實驗統計數據的整個流程。
1. 分流引擎:當用戶來到實驗時會通過分流引擎把流量一部分分到變體A,一部分分到變體B。
注:在分流引擎中會有一些模塊拆分,這些會在后續的文章中詳細講解。
2. 變體展示:為了方便理解,假設我們本次實驗每個變體流量均為50%,則所有訪問本次實驗的將會有50%的概率看到變體A,有50%的概率看到變體B。
注:實驗對應的每個變體的流量是可以通過管理后臺進行配置的。
3. 埋點指標:業務端或者AB測試服務提供端采集預先定義好的“埋點指標”。埋點指標的意思是,能證明此是否達成了所設定的北極星指標的具體數據。
4. 數據整理:針對埋點指標進行清洗、計算。
5. 數據展示:對應到管理后臺中是實驗報告,是對本次實驗結果的集中展示。包括描述性統計分析和決策統計分析。
6. 變體編輯:對不同變體實際功能需求的開發。這個模塊是發生整個實驗開始之前,需要定義好每個變體究竟是以什么方式展示給參與實驗的用戶。
比如:變體A用紅色按鈕,變體B用綠色按鈕。
如果把所有的信息全部都寫進一篇文章可能大家對這篇文章剩下的操作就只剩收藏了,加之平時寫文章的時間畢竟也比較有限,所以就把它拆分成了一個系列。
本次只是先將AB測試做整體介紹,后續再分開做某一模塊的詳細介紹。大家可以在留言中給自己感興趣留言,疑問比較多或者更多人感興趣的地方會優先更新。
萬一此篇文章看的人很少也沒人回復,只能按自己的節奏逐步更新,就全當總結歸納罷了。
水平有限,歡迎各位大神來砸場討論!謝謝!
本文由 @?任秀明 原創發布于人人都是產品經理。未經許可,禁止轉載
題圖來自Unsplash,基于CC0協議
SDK里面都包含啥呢?
新手在,看不明白,期待大神的進一步更新。
寫的太好了,啥時候更新
老哥有時間可以更新2了
感謝分享!另外請教一下,描述性統計和決策統計這塊,一般的開展維度有哪些呢?按我理解:
1)描述性統計:更多的是對實驗設定的指標做基礎值觀測,包括組內指標的眾數、分位數、方差等
2)決策統計:基于上面的數據對比,增加一個顯著性校驗,基于校驗結果來說明實驗和參照組哪些指標差異較大
為什么就沒有第二篇啦~
分流算法可以補充下嗎,我們目前是對移動設備做哈希,但還是會有偏差,不知道是不是樣本量的問題
試驗的狀態怎么搞?
老師好
贊,坐等更新
想問下如果ab測試的是功能模塊,那怎么上架appstore?一直沒明白,求解答,謝謝
好文!點贊,很干貨,樓主在自己公司內部搭建自家的AB測試,想必公司規模達到數量級了。
不過,一般團隊來說很難有精力和資源來搞自己的AB測試系統,推薦下Testin云測A/B測試:http://ab.testin.cn,標準版免費,不用自己折騰啦 ??
給機智的小編加雞腿
啥時候更新呀,對分層管理和埋點最感興趣了
老師,請教下,AB測試,最主要就是變變變,提高轉換率,完成北極星指標?
老師不敢當哈。
功能那么多,資源又有限,不可能一步到位,需要借數據證明是增長、降低還是不變,從而給下次迭代提供參考。
如果你是電商行業,你的北極星指標就是轉化率,是GMV,這要看整個公司的戰略方向。
不停的實驗,不停的朝著北極星目標前進。
寫的不錯。中小電商企業有必要做 AB測試嗎?
公司的能力:從統計學角度來講,只要參與實驗的獨立用戶超過1000,實驗周期15天,實驗結論是可信的。所以對公司的用戶量級是有要求的。
公司的意愿:增長黑客絕不是哪個員工拍腦袋想做就能做的,得是公司老板有數據驅動的意識。
公司的資源:公司愿意投入成本去做這件事,并且得有耐心。
獨立用戶超過1000,這個1000是怎么定的?