日前,在WOT全球創新技術大會上,火山引擎DataTester技術負責人韓云飛做了關于字節跳動A/B測試平臺的分享。DataTester是字節跳動內部應用多年的A/B實驗平臺,平臺自建立至今,承載了內部500余個業務線的A/B實驗任務,累計已開展超過150萬次實驗,現在字節跳動每天會新增實驗2000余個,同時在DataTester上運行的實驗有3萬余個。
字節跳動內部有著非常濃厚的數據文化和實驗文化,抖音、今日頭條的名字都經由A/B測試確定,而A/B測試也是整個研發鏈路上的必經一環。本文將以字節研發流程中的兩個個案例,介紹A/B測試在研發全流程中的角色。
1.產品系統重構
今日頭條是一款信息類互聯網產品,它會基于數據挖掘的推薦引擎向用戶推薦文章。今日頭條早期的信息流服務是使用Python的一項單體服務,但隨著字節業務發展的迅速,今日頭條的流量也迎來了爆發式增長,產品在性能工程上的復雜度也在急劇升高。
為了優化產品,使之更加適應大流量下的響應,今日頭條的信息流業務設計了一次大規模服務化重構:語言選型從Python切換到了Golang,從單體服務架構演變成了分層的微服務架構。

但這個重構設計,是圍繞產品性能方面的技術指標展開的,但對于用戶體驗的影響和業務目標的影響,卻無法通過短期觀察得到結論。為了避免復雜的新系統上線后,降低頭條用戶的產品使用體驗,因此在重構方案設計完畢后,今日頭條業務花費了6個月以上的時間,開展了新方案和舊方案對比的A/B測試,總共進行過幾十次A/B實驗,多點開啟灰度測試,并不斷分析結果、迭代方案,確認改進點對業務數據指標的影響。
在半年多之后,這個復雜的新系統終于結束了A/B測試,并推全上線。上線后的新系統對今日頭條大部分全局指標幾乎無影響,甚至一些關鍵指標取得了顯示正向的結果。
2.產品Bug修復
這個案例是字節直播產品的場景。該產品在設計了新的精排模型,原本期望是想召回模型學習到更多信息,提前做一些召回符合用戶興趣的內容,提升部分產品關鍵指標。但在實際操作中,由于模型配置出現了Bug,上線失敗。

因此,該直播產品的團隊針對這個Bug進行了修復,但只能采用使精排模型變得更復雜的方案。新的功能雖然已經成功跑通,但由于模型更加復雜,對于用戶產品體驗負向影響的風險會隨之升高。
為了驗證新開發的功能對用戶體驗的影響,該團隊使用DataTester開啟了A/B測試,他們將用戶分為新用戶組、老用戶組分別開啟實驗,通過數據觀察發現,新的功能對于新用戶的而言沒有什么實質性影響,新用戶的使用時長、留存等指標依然是在一個特定區間波動;但在老用戶組的實驗數據中,他們發現老用戶在內容人均閱讀時長上,有了0.3%的顯著提高。雖然0.3%是一個看起來不大的數字,但對于字節產品的用戶體量而言,這種幅度的提升,在用戶內容消費時長上的實質提升很大。
上述兩個案例是DataTester在字節跳動應用的縮影,實際上,在字節整個的研發流程中,開發、上線、BugFix、優化、重構,A/B測試都會作為基礎設施中的一環,來服務于整個研發流程。除此之外,A/B實驗也廣泛應用于字節跳動業務的方方面面,從產品命名到交互設計,從改變字體、彈窗效果、界面大小,到推薦算法、廣告優化、用戶增長…… 可以說,DataTester已經融入在字節的每一個業務和每一項決策中。

DataTester 當前已通過火山引擎向外部企業開放服務,能基于先進的底層算法,提供科學分流能力和智能的統計引擎,支持多種復雜的A/B實驗類型。目前,火山引擎 DataTester 已經服務了美的、得到、凱叔講故事等在內的上百家標桿客戶,將成熟的“數據驅動增長”經驗賦能給各行業。