隨著美團點評業務越來越多,研發團隊越來越龐大,對測試手機的需求顯著增長。這對公司來說是一筆不小的開支,但現有測試手機資源分配不均,利用率也非常有限,導致各個團隊開發、測試過程中都很難做到多機型覆蓋。怎麼樣合理、高效利用這些測試手機資源,是擺在我們面前的一道難題。
其中openstf是開源專案,其他的平台大多也都是基於openstf原理實現的。因此,我們對openstf專案進行了深入研究。
我們首先按照openstf官方的方案進行了搭建,並進行了小規模的應用,但漸漸的我們發現了它的一些問題:
根據業務場景的需要,並吸取了openstf結構優點,我們採用agent/server模型的模組化設計方案。下面分別介紹主要模組的功能:
通過模組化設計,專案結構比openstf更加清晰。下面是整個系統的設計圖:
agent模組我們直接復用了openstf的provider大部分功能,包括minicap、minitouch等。在此基礎上,我們也擴充套件了一部分openstf缺失的功能,比如:
在server模組中,我們引入了動態**的機制,並且重新開發了web部分,採用了vue 2.0 + iview來實現,資料庫採用了mysql。
相比openstf原生架構,總結下來有以下優勢:
除了這些基礎的功能之外,我們還開發了一些特色的功能,下面我們來詳細介紹。
為了合理、高效利用測試手機資源,我們與客戶端自動化進行了結合,主要有兩個方面:
當一台手機處於繁忙狀態時,使用者必須要等待手機空閒後才能使用,由於手機空閒時間不確定,就會給使用者帶來很大的不便。為了解決這個問題,我們開發了手機預約的功能,使用者可以預約處於繁忙狀態的手機,當手機空閒時,自動幫預約使用者占用15分鐘,並通過即時通訊工具通知預約人。
遠端除錯平台的核心是實時獲取螢幕影象,由於螢幕傳輸需要比較大的網路頻寬,在網路不佳的情況下就會出現卡頓現象。因此,我們針對不同的網路做了一些流暢度的優化,下面來介紹一下其中的細節。
螢幕獲取的原理是通過minicap來高速截圖,每秒最高可達60張,然後將這些截圖顯示在web上。因此,我們考慮從兩個方面來優化網路頻寬的占用,第乙個是調節截圖的質量,minicap本身支援調節畫質(openstf固定設定了80%的壓縮比),關鍵**如下:
var rate = number(match[6])
if (rate > 2 && rate < 100) else if (rate > 15) else
frameproducer.restart()
framerate = rate
}
# 首先修改幀率傳送部分:
function wsframenotifier(frame) )
} }# 再加入調整幀率的**:
case 'rate':
var rate = number(match[6])
if (rate > 2 && rate < 100)
break
壓縮比
尺寸100%
69.82kb
80%46.78kb
50%41.87kb
20%37.84kb
10%35.84kb
表中是使用minicap做的壓縮實驗,從資料中我們可以看到當質量降低到80%時大小降低比較明顯,而質量並沒有明顯的下降。繼續降低質量,大小降低有限。我們再來看另外一組資料:
幀率壓縮比
實際流量
60100%
4.02m/s
6080%
2.74m/s
6050%
2.41m/s
3080%
1.43m/s
3050%
1.22m/s
3020%
1.10m/s
1550%
0.63m/s
1520%
0.55m/s
1510%
0.52m/s
表中是各種幀率和壓縮比組合產生的實際流量資料。
從資料中我們可以看到最高幀率和壓縮比的組合下,流量達到了4m/s,而80%壓縮比時流量減小到了2.7m/s,降低非常明顯。考慮到實際網路情況,我們將60幀、80%壓縮作為了高畫質選項。
而質量從80%降低到50%時大小下降並不明顯,此時降低幀率就成了很好的選擇。當幀率降低到30幀時流量降低了一半,1.2m/s的流量能夠滿足大部分網路狀況使用,30幀也能保證操作的流暢度,於是30幀、50%壓縮比成為了中畫質的選項。
低畫質主要是為了保證在較差的網路環境能夠正常使用,500k/s的流量是紅線。我們將15幀、20%壓縮比作為低畫質選項,此時質量和幀率較低,但能夠保證基本的使用體驗。
這個功能我們是借助uiautomator實現的。基本原理是寫乙個uiautomator用例,用來獲取當前頁面的hierarchy,然後將用例打包成乙個jar放到agent端。當在web端觸發獲取控制項樹時,agent將jar包推送到手機上並執行,此時會在手機端生成乙個xml檔案。然後再使用cat命令獲取xml內容並在前端解析。用例核心**如下:
public class launch extends uiautomatortestcase }
當然,你也可以用adb命令來獲取hierarchy:
adb shell uiautomator dump /data/local/tmp/uidump.xml
為了更好的了解平台的運營情況,我們做了詳細的資料統計,主要從使用次數、使用時間、裝置數量、使用分布等方面進行統計。目前我們管理的手機近300臺,平均每個月有超過500名研發人員在使用我們的平台,每天的使用次數達到280次,每天總使用時長超過60小時。
目前,雲真機平台只支援android手機,對ios手機的支援正在進行中。我們已經初步完成了主要功能的開發,預計很快將與大家見面。
我們計畫繼續擴充套件產品功能,比如支援log日誌展示和效能資料採集等。目前雲真機平台已經在美團點評內部平穩執行超過兩年,我們會繼續不斷迭代版本、打磨產品,提供更好的使用體驗。
美團點評雲真機平台實踐
隨著美團點評業務越來越多,研發團隊越來越龐大,對測試手機的需求顯著增長。這對公司來說是一筆不小的開支,但現有測試手機資源分配不均,利用率也非常有限,導致各個團隊開發 測試過程中都很難做到多機型覆蓋。怎麼樣合理 高效利用這些測試手機資源,是擺在我們面前的一道難題。其中openstf是開源專案,其他的平...
美團點評雲真機平台實踐
隨著美團點評業務越來越多,研發團隊越來越龐大,對測試手機的需求顯著增長。這對公司來說是一筆不小的開支,但現有測試手機資源分配不均,利用率也非常有限,導致各個團隊開發 測試過程中都很難做到多機型覆蓋。怎麼樣合理 高效利用這些測試手機資源,是擺在我們面前的一道難題。其中openstf是開源專案,其他的平...
美團點評2017秋招筆試真題 演算法工程師
1.設某棵三叉樹中有36個節點,則該三叉樹的最小高度是 a.3 b.4 c.5 d.6 2.一顆高度為4 的平衡二叉樹,其最少節點數為 a.5 b.6 c.7 d.8 3.以下哪些是判別式模型 a.最大熵 b.決策樹 c.條件隨機場 d.樸素貝葉斯 4.以下哪些演算法可以用來降維 a.latent ...