移動應用怎麼做灰度?

我們期望覆蓋足夠多的機型和用戶樣本數,儘早發現崩潰等嚴重的問題。避免在市場發布後,用戶出現大面積嚴重問題,緊急發布補丁版的情況。

各位自己的項目上有什麼好的經驗借鑒么?


Android 平台的灰度發布,和 PC 客戶端的灰度發布方法是一致的,簡而言之是通過通知(自建的和系統的)進行按比例發布 beta 版,等到版本穩定再針對渠道做大規模的穩定版發布(涉及到付費投放、市場資源投入,誰也不想市場人員指著你的鼻子叫喚)。

建議請教一下企鵝公司做過 PC 客戶端軟體的工程師(我第一次了解客戶端如何做灰度就是請 QQ 音樂一位工程師轉 PM 的老師講了一課,我嘗試召喚他來解答這個問題)。To know the road ahead, ask those coming back.

iOS 平台的灰度發布,不建議在越獄渠道上做。做大渠道(其實就是 91)肯定會影響收入指標(主要針對電商 app),做小渠道完全沒結果,而且還有被大渠道抓包的風險。那麼解決方案就剩下有分發許可權的 299 刀高級開發者帳號了,只要培養足夠的用戶量,這個樣本容量還是足夠大的。

當然,要自搞個新開發者帳號,要考慮如何回收這個帳號發出去的版本都是麻煩事,如果只是為了測試某個功能,也可以就拿 91 渠道干一票。(表面上 PM 好像實現了目的,但工程師必然叫苦連天,個人覺得是個虧本買賣,不值當。)

最後,一切的前提都是:

1. 做好版本管理(一個有條理、敬畏秩序的、能寫代碼的發布經理);

2. 打好數據樁(重點注意按版本觀測所有數據,數據要貫通不要片段);

3. 灰度版本有回收能力(不然老闆時不時因為微博用戶報告的某個灰度版本的 bug 來讓你擦屁股就不用干正事了)。

這部分我 100% 同意一樓張瑞老師的意見。

好的方法論(灰度發布)貌似能解決的一切問題,但是把這個推行起來的那個人,說起來都是淚。


Optimizely, AppAdhoc.


Android平台做灰度再合適不過了。

找單一渠道投放特別版本出去是一個思路。另一個是做升級平台的改造,允許針對部分用戶推送升級通知甚至版本強制升級。

無論哪種方法都需要做好版本管理工作,分配特別的版本號以示區別。

當然,既然是做灰度,數據監控(常規數據、新特性數據、主要業務數據)還是要做到位,該打的數據樁要打。

還有,灰度版最好有收回的能力,一般就是強制升級下一個正式版。


MIUI的控制上,存在體驗版、開發版、正式版三個版本。

包括Chrome也有canary、dev、stable三個版本。


Android上比較容易灰度發布的。

一、發布版本號較低的灰度測試版本,如beta版本號為3.1.0.1,正式發布時為3.1.1.0。

發送的形式主要有:

1、在單獨的下載點/下載渠道發布灰度測試版本,比如在網頁上開一個測試版下載的口子。

2、通過APP內置的更新通知進行一定比例的發布,推送更新的機制在服務端需要處理好,比如APP啟動時獲取機器特徵上傳到伺服器,然後對應下發版本更新通知,或者直接按百分比下發。這種實現較為複雜但可參考意義最大,一些PC軟體也採用這種方法,比如我知道360、tencent。

二、正式版本發布時再進行高版本推送,之前灰度發布的測試版通過對比版本號會提醒更新到最新版本。

iOS上只能好好測試了,或者發布越獄版本(但越獄版本有時候本身也是一種問題)


自己做產品時也有類似的需求,下邊是我的方案:)

基本的邏輯是兩個版本的代碼都打到app包里,然後在app端植入測試框架,用來控制顯示哪個版本。

測試框架負責與伺服器端api通信,由伺服器端控制app上A/B版本的分布,可以實現指定的一組用戶看到A版本,其它用戶看到B版本。

服務端會有相應的報表來顯示A/B版本的數量和效果對比。

最後可以由服務端的後台來控制,全部用戶在線切換到A或者B版本~

所以這個也可以用來做灰度發布 :)

另外由於打進去兩個版本的代碼,app的包體積會大一點(這和功能變化多少有關)

---------------------------------------------我是分割線--------------------------------------------------

下面是廣告,歐耶!

手機客戶端A/B Testing工具

前倆月抽時間已經把這個東東做出來了,目前支持Android/iOS平台,歡迎體驗,歡迎找我聊~


對於Android應用,可以使用Google的分階段發布。

Google開發者後台可以設置灰度發布的百分比,5%,10%,20%,50%,100%。


首先建議看一本書《精益創業》,這本書的最核心思想,軟體開發,不要一開始就把產品在頭腦風暴階段,想的特別完整,特別完美,因為一旦產品推出後,反響不好,那麼推倒重新再做的難度很大。市場是檢驗產品的唯一熱土,不如做個版本,完成度80%左右,然後扔出來,大家說,這樣那樣,參考足夠多的意見,再修改,修改的時間也較少,而且下一個版本,會更符合需求,比起產品經理的設計和各種前期調查,更有科學性。

第二呢,我覺得樓主得確定下自己的目標用戶群,和用戶數量級,如果你是微信那類產品,可能需要覆蓋的非常廣,但是如果是印象筆記那一類產品,就覆蓋主流前30款機型即可,沒必要,目標用戶群明確啊,而且用戶數也不會上億,僅此而已,把經理放到操作習慣和實用性的推敲上。

第三,軟體都是一代一代更新出來的,都需要升級,很正常的事,所以,出現問題也不要擔心,中國那幾個大型互聯網公司,每年都好幾次事故,只不過反應很快而已,所以,只要測試到位,力所能及的規避,就好,產品可以真機測試,很嚴謹,沒問題。

最後要說,就是灰度測試,是給發燒友來用的,搜集的數據,其實意義也不大,除非是小眾的產品,能去那個渠道下載東西的人,往往都不是普通用戶。到底他們反饋的結果有沒有用,樓主自己斟酌。

而測試來說,機型不同,哪怕同一機型,用的人不同,手機的毛病也不一樣,用戶樣本只是一方面罷了。。。。


樓上各位回答我都很贊同。但是,你的問題我感覺是機型適配問題,有條件也可選擇真機測試的服務。搜索即可找到對應的服務商(就我了解,有testin、百度、移動MM、neusoft等都提供終端適配的服務)


新開一個渠道號,根據對量的需求和各渠道歷史數據選某個已有渠道放,不改版本號。

這樣一來在選定渠道的新增用戶就是灰度的版本,也不會被泄露到其他渠道(一般渠道抓包是通過版本號來判斷的)。


在3G時代移運失去的太多了


http://TestFlightApp.com 可以實現iOS的灰度測試,但是參與測試用戶需要註冊,比較麻煩,而且會大大降低普通用戶的樣本量,只能說這是一個選擇之一了。


推薦閱讀:

UML 在業界的使用情況如何?
為什麼很多專業都吐槽要條條道路通CS?
有沒有Vector公司 autoSAR的教材?
外行人說的哪些(哪句)看似普通的話,對於程序員來說是巨大的冒犯?

TAG:移動應用 | 軟體工程 | 應用程序Application | 軟體測試 | Android |