摘要:并不是每個測試都可以用到生產中,但即使是失敗的測試也能幫助我們理解如何才能更好地改進。當有回應返回后,我們就會更新按鈕。淺綠色的條柱是試驗用戶的數量,黑綠色的條柱是實際被影響的用戶數。設備請求用于試驗的數據,服務器記錄它發(fā)出的回應。
譯者注:本文來自 Facebook 工程師團隊博客
兩年前,我們重寫了我們移動端(iOS,Android)的應用,使用了原生的開發(fā)棧(native development stacks)代替我們以前定制開發(fā)的 Web 棧(custom web-stack)。這給了我們在關于項目在那里/怎樣下載、緩存、釋放等等方面一個更好的控制。它分別深入地和操作系統(tǒng)整合在一起,提供在底層調整修改所有系統(tǒng)的一整套工具。
測試是我們開發(fā)的一個重要部分,但在轉換到原生的之后,我們沒有了 A/B 測試的能力。并不是每個測試都可以用到生產中,但即使是失敗的測試也能幫助我們理解如何才能更好地改進。失去的這部分能力變成了一個我們要應對的挑戰(zhàn)。
A/B 測試要把我們的應用移植到 iOS 和 Android 上,需要來自不同團隊的人來進行協(xié)作,每四周就要產生一個新的修復一些 bug 和帶有一些新特性的二進制軟件包。在我們發(fā)布一些更新之后,對于我們很重要的事情是要去明白:
新特性的使用情況
bug 修復后的運行情況和穩(wěn)定性
用戶界面改進之后用戶是怎么使用這個應用及在哪里花的時間多
為了去了解這些事情,我們需要一個移動端進行 A/B 測試的基礎組件,這個組件能讓我們的用戶分別使用不同版本的應用(版本 A 和版本 B),這些版本在除某些特別需要測試的部分外,其他各層面都是一樣的。所以我們創(chuàng)造了 Airlock,一個可以讓我們比較不同版本應用的度量數據(metric data)和進行各種各樣測試的測試框架,這幫助我們決定采用那個版本或者后續(xù)如何迭代。
從一點一滴中建成我們盡可能從最簡單的試驗開始:使用已有的 Web-Stack A/B 分箱(binning system)系統(tǒng)。我們構造了一個測試:把聊天按鈕換成文字"Chat"的試驗。當應用啟動的的時候,它會發(fā)送一個到我們服務器上的網絡請求,詢問這個試驗的參數。當有回應返回后,我們就會更新按鈕。一些員工會有按鈕,另一些員工會有文字"Chat"。我們期望這僅僅會影響信息發(fā)送的數量(看起來不會太多),其他的東西不會受影響。
曝光日志當這個版本的應用公開發(fā)布了,我們等待數據能穩(wěn)定下來,然后發(fā)現看到文字"Chat" 的版本會更熱衷于使用這個應用。是不是我們發(fā)現了什么秘密,或者誘惑般的魔法?沮喪地說,并不是。我們遇到了很多 bug,其中一個很大的問題是,某個組件并不能正確地緩沖數值。由于這是個大的系統(tǒng),基礎設施(the infrastructure)必須要是 "防彈的",不然收集到的數據就沒用了。
從服務器開始的數據管道決定某個人的版本是屬于那種變體的。然后,數據就會被打包,接著發(fā)送到設備上,設備分析返回的信息然后保存。接著,這個值會被用于重新配置 UI,然后最終在屏幕上顯示。問題是我們在依靠服務器對我們數據分析的分類。一個簡單的 bug 就導致了一大群用戶在使用有別于我們期望的的變種版本。服務器還在堅持:"我告訴了設備去顯示字符串!" 但在某處地方這個語句變得有點令人模糊(一個在客戶端存貯邏輯上的 bug)。
一個試驗的部署圖:
上面圖表展示了一個試驗的部署。淺綠色的條柱是試驗用戶的數量,黑綠色的條柱是實際被影響的用戶數。我們可以看到,服務器和設備的數據區(qū)別還是很大的: 在第一天,大多數用戶收到這個配置,但大多數用戶沒有留意到我們試驗。當問題不僅僅是設備收到返回的數據,而需要加上我們的數據分析需要知道什么時候收到信息,然后把它正確地顯示在 UI 上時,問題變得更大了。即使信息能正確地到達,在 UI 不正確時也有一個延遲。我們通過
添加雙向握手(wo-way handshake)解決了這個問題。設備請求用于試驗的數據,服務器記錄它發(fā)出的回應。因此,即使某用戶沒有看到我們想讓他看到的,我們仍然可以進行正確性分析(但也必須意識到選擇性偏差(selection bias)的問題,還有分發(fā)時由于某些原因變得不平均)。
在進行了幾個月這樣的"課程"之后,我們必須將支持兩個試驗的系統(tǒng)升級支持整個應用的系統(tǒng)。這個促使 Airlock 發(fā)生變革的試驗是以前我們原想著進化和簡化我們應用內的導航模塊而開發(fā)的。在經歷這幾個月之后,我們把這個應用改變了很多,你可以去下載 Facebook for iPhone 來體驗一下,這里面很多是測試的功勞。
隨后,Airlock 被用于支持更多的試驗,其請求的參數,數據的記錄、客戶端計算等等都快速地變多。Airlock 充分地被用于測試原生的應用,使得我們的應用運行得前所未有的輕快,伴隨著測試的自由,再測試,和評估測試結果,我們期望能建造更好的測試和創(chuàng)造更好的用戶體驗。
原文:Airlock - Facebook"s mobile A/B testing framework
翻譯:Segmentfault
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://www.ezyhdfw.cn/yun/8684.html
摘要:這一新程序被稱為,是一個完整的深度學習系統(tǒng),它的架構已經嵌入手機中。因此,移動設備環(huán)境對機器學習系統(tǒng)提出了機遇和挑戰(zhàn)。展望下一步,加上這樣的研究工具鏈,是的機器學習產品的核心。 風格遷移一直是機器學習領域內的一項重要任務,很多研究機構和研究者都在努力打造速度更快、計算成本更低的風格遷移機器學習系統(tǒng),比如《怎么讓你的照片帶上藝術大師風格?李飛飛團隊開源快速神經網絡風格遷移代碼 》、《谷歌增強型...
摘要:移動測試就是指把這個試驗用來對比優(yōu)化移動應用。移動端測試應該測試什么對于移動端,幾乎所有都可以并應該進行測試。對消極和積極影響的權衡評估會是優(yōu)秀測試平臺的重要組成部分。那么,準備好開始你的第一個移動端測試了嗎本文作者吆喝科技 做A/B測試的理由很多,Facebook、Google、BAT、滴滴、美團……大公司都在做。但知道它們?yōu)槭裁醋觯吭趺醋??A/B測試有哪些方法論來指導最近實踐,讓我...
摘要:前端每周清單半年盤點之與篇前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點分為新聞熱點開發(fā)教程工程實踐深度閱讀開源項目巔峰人生等欄目。與求同存異近日,宣布將的構建工具由遷移到,引發(fā)了很多開發(fā)者的討論。 前端每周清單半年盤點之 React 與 ReactNative 篇 前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點;分為...
摘要:數據管理及性能優(yōu)化統(tǒng)一管理數據這一部份算是重頭戲吧。重復渲染導致卡頓這套的東西在家校群頁面上用得很歡樂,以至于不用怎么寫都沒遇到過什么性能問題。但放到移動端上,我們在列表頁重構的時候就馬上遇到卡頓的問題了。列表頁目前的處理辦法是將值換成。 本文來自于騰訊bugly開發(fā)者社區(qū),非經作者同意,請勿轉載,原文地址:http://dev.qq.com/topic/57908... 最近一個季度...
摘要:通過對比各項目過去個月在上新增數量,來評估其在年度的受關注程度,進而選出年度領域崛起的明星項目。也許正因為上述最后一點,在中國擁有大量的擁躉。不僅被中國最大的電商平臺阿里巴巴使用,也獲得了與這些公司青睞。 共 4741 字,讀完需 8 分鐘,速讀 2 分鐘。我有幸參與了該項目的部分中文版翻譯、校對工作,感謝 Sacha Grief,Micheal Ramberu 的統(tǒng)計整理,以及 Fr...
閱讀 2728·2021-11-23 09:51
閱讀 3321·2021-11-22 14:44
閱讀 4730·2021-11-22 09:34
閱讀 5407·2021-10-08 10:14
閱讀 2796·2021-09-22 15:47
閱讀 3595·2021-09-22 15:40
閱讀 1581·2019-08-30 15:44
閱讀 1692·2019-08-28 18:23