一文搞懂灰度釋出與 AB Test 的聯絡與區別
在網際網路的世界裡,試錯永遠是一個非常重要的產品思維,而AB測試和灰度釋出是試錯機制中兩種重要的表現手段。這兩種機制之間有什麼區別與聯絡呢?一起來看看
1、什麼是AB Test?
AB測試一般由產品經理和運營來主導。它是把兩種功能,或者兩個版本,交給相同的使用者來使用,看使用者喜歡哪種功能。
要點是,AB的兩種功能都是可用的, 投放的使用者群體無差別,讓使用者選擇更受歡迎的功能,後期可能是A上線,也可能是B上線。
2、什麼是灰度釋出?
灰度測試一般由研發,測試或運維來主導。它是把系統的新版本,或者說新功能,以部分上線的方法來上線,驗證新版本是否足夠可靠。
關鍵要點是,灰度版本未必是可用的,或者說沒有嚴重bug的,投放的客戶群體可能只是北上廣深等一線城市的使用者,由監控確定是否有問題,後續可能會繼續放量上線。
兩者的聯絡:
- 兩者都是為了保證整體系統的穩定,降低產品升級所影響的使用者範圍
- 可以說這兩者是包含關係,灰度分析方法包含AB Test,AB Test也是灰度釋出眾多方法中的一個
-
讓一部分使用者繼續用A,一部分使用者開始用B,如果使用者對B沒有什麼反對意見,則逐步擴大範圍,把所有使用者都遷移到B上面來
兩者差異點:
- 灰度測試:主要用於上線前的測試,收集使用者反饋。當灰度測試結束後,線上版本會實現統一
- AB測試:是一個反覆迭代最佳化的過程,制定兩種方案,對相似屬性分組使用者進行測試,分析評估出最好的版本
灰度釋出的優勢
1、提前獲得使用反饋,縮減風險影響範圍
因為灰度釋出可以透過地域、性別、使用者等級、使用客戶端等一系列的策略條件對目標使用者群進行篩選,所以可以保證驗證版本影響的使用者在最小可接受的範圍內。此外,基於驗證版本提前收集使用者使用意見,及時完善產品功能,並且根據使用者和監控的反饋結果,做到查漏補缺,對於過程中發現的重大問題,甚至可以及時的回滾至“舊版本”。
2、自定義規則引擎,精準控制內容投放
此外灰度釋出可以作為一個自定義的規則引擎,可按地域、人群、時段等自定義標籤對 App 模組或者 Web 頁面進行內容的精準投放,滿足企業產品的精準化投放釋出需要。就像是我們業務組負責人提出的需求,把新上線的活動僅投放給北上廣深四個一線城市的高等級使用者。
灰度釋出方案分析
1、TestFlight
對於 iOS 開發者來講有一個較為方便的灰度測試方案,也是大家使用最多的 —— TestFlight。TestFlight測試工具允許開發者透過郵件等方式邀請使用者測試。TestFlight 在被蘋果收購之後,和 AppStoreConnect 進行了深入整合,現在,它可以生成一個公開的連結,使用者可以直接安裝測試。
當使用者開啟現有版本的 App 後,伺服器可以根據當前使用者的標籤判斷是否為灰度使用者。如果是的話,需下發TestFlight 的安裝連結,App 端引導使用者進入TestFlight 安裝。
但 TestFlight 也有一定的不足:
- 使用者必須安裝 TestFlight ;
- 有效測試時間為60天,在有效期結束之前需引導使用者更新正式版本;
-
測試使用者可以達到最多10000。
2、功能小程式化
第二種對於很多開發者來講可能比較陌生,起因是因為公司的 App 較為臃腫,迭代發版非常麻煩,希望功能模組互相解耦實現模組化開發,各業務模組間互不影響,所以計劃 ,( )讓整個 App 具備小程式的執行能力,繼而把 App 之前的業務功能都小程式化,透過管理後臺去實現動態更新與釋出。
剛好在進行技術體驗時發現,FinClip 的小程式是藉助部署的 FinClip 管理後臺實現上下架,上下架的同時可以進行上架規則的制定。這樣一來,相當於有了一個自定義的灰度釋出引擎去自由配置地域、性別、使用者等級等自定義條件,不需要編寫任何複雜的應用邏輯程式碼,完成上下架的同時就完成了精準的上線釋出。
相對於 TestFlight ,這種方式的優勢在於:
- 不僅可以用在iOS系統中,Android 和桌面端應用也能整合 FinClip SDK ,相當於灰度測試覆蓋的範圍更加廣;
- 自身的迭代升級,不會影響到宿主 App 執行的穩定性,也無需對 App 進行全迴歸測試;
- 小程式業務功能開發可以高度並行;
-
灰度釋出粒度更細緻(例如一個小程式是可以僅在測試白名單的範圍內試點)。
由於本次調研的範圍和時間有限,所以我認為較好用的輕量化灰度釋出方案就暫時羅列這兩類,當然方案有千千萬,選擇自己合適的就好。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70017183/viewspace-2915774/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- cookie與session的區別與聯絡CookieSession
- Session與Cookie的區別與聯絡SessionCookie
- JRE與JDK的區別與聯絡JDK
- 一文搞懂TCP與UDP的區別TCPUDP
- Kafka與ActiveMQ的區別與聯絡詳解KafkaMQ
- 詳解Kafka與ActiveMQ的區別與聯絡!KafkaMQ
- B/S與C/S的聯絡與區別
- jQuery與JavaScript與ajax三者的區別與聯絡jQueryJavaScript
- 感知器、logistic與svm 區別與聯絡
- ipv4與ipv6的聯絡與區別
- javaSE中的==和equals的聯絡與區別Java
- 簡述Spring容器與SpringMVC的容器的聯絡與區別SpringMVC
- HDFS 塊和 Input Splits 的區別與聯絡
- 程式和執行緒的區別與聯絡執行緒
- 陣列地址與指標之間的區別與聯絡陣列指標
- pytest與unit test區別
- 微服務部署之藍綠髮布、滾動釋出、灰度釋出區別與特點微服務
- KPI vs OKR:區別與聯絡的終極指南KPIOKR
- Vue中watch、computed與methods的聯絡和區別Vue
- 單機、分散式、叢集的區別與聯絡分散式
- Python中__new__和__init__的區別與聯絡Python
- 叢集、負載均衡、分散式的區別與聯絡負載分散式
- 淺析HTML、CSS、JavaScript之間的聯絡與區別!HTMLCSSJavaScript
- 先驗概率與後驗概率、貝葉斯區別與聯絡
- annotation之context:annotation-config與 context:component-scan的區別與聯絡Context
- 大資料分析與機器學習之間的區別與聯絡大資料機器學習
- ARM晶片、核心、架構、指令集的聯絡與區別晶片架構
- Unicode,UTF-8和UTF-16的區別與聯絡Unicode
- 資料倉儲、資料湖與湖倉一體的區別與聯絡
- 跟你深入剖析可迭代物件和迭代器的區別與聯絡物件
- `std::packaged_task`、`std::thread` 和 `std::async` 的區別與聯絡Packagethread
- 可觀測性與傳統監控的區別和聯絡
- 【Python入門必看】Python中Cookie和Session的區別與聯絡!PythonCookieSession
- 一篇讓你明白程式與執行緒之間的區別與聯絡執行緒
- 產品經理和專案經理區別與聯絡
- Linux中程式和執行緒的區別與聯絡,建議收藏!Linux執行緒
- 【科普】等級保護與分級保護的區別和聯絡!
- GoF設計模式中裝飾器、代理與介面卡的區別與聯絡 - MarioGo設計模式