移動端性能測試概述


  隨着移動設備的普及和使用范圍越來越廣,APP的性能測試變的越來越重要。比起之前的性能測試,APP性能測試有着自己的特色和KPI,難度也隨之增加。 

  APP的自動化測試工具發展跟不上設備的發展速度,雖然有不少工具提供了設備模擬器來運行程序,但是和真機測試有較大差異,基本只能作為功能性測試使用。好消息就是,有些廠商提供了在線的真機自動化測試方案。

和傳統測試的差異 

1. 移動站點:和傳統的只是一個普通的手機站不同(WAP站),隨着HTML5的興起和智能設備開放的傳感器接口,移動站點很多時候很像一個APP,但依然使用的是HTTP或者HTTPS協議,從協議來說,很多測試和之前的WEB測試差異並不大。 

2. 本地化APP:APP的測試最為復雜,雖然開發環境如DDMS XCODE都自帶有一定性能測試測試功能,但主要是單APP運行時的性能測試,是在並發、壓力等方面薄弱,且因為移動測試遠不如傳統測試發展的時間長,因此很多專項工具很匱乏,需要自動開發或者借助傳統性能測試工具實現。 

3. 混合型:APP加移動站的形式實現,很多移動端並不是單獨的APP或者移動站點,而是混合使用,比如LINKEDIN的APP,本地化APP用來做UI,大量的內容是以移動站的形式放到雲端, APP向網站請求網頁數據,然后在APP端展現給客戶。測試這類APP的時候,更為復雜,因為需要同時測試移動站和APP的。

移動測試分類: 

系統分類 

黑莓:小眾類,非特殊原因,國內一般不需要測試 

IOS:重要的分類 

Android:重要分類 

WINDOES PHONE:此OS依然屬於小眾,市場占用率低。

測試項分類: 

我們暫不討論和傳統性能測試重疊的部分 

電量消耗測試:當下智能設備的電池依然是瓶頸,一般手機只能支撐1天左右的使用,加之現在各種電源消耗監控軟件,一個耗電量高的APP非常容易被用戶投訴或者流失用戶。即便是QQ,曾經也因電量問題,而遭到用戶的大量抱怨,因此電量消耗測試必不可少。較為簡單的電量測試方法,用很干凈的手機,將第三方APP全部卸載,后台不要運行其他程序,從充足的100%電量開始測試,監測電量消耗。 

網絡測試:一般大家更多在關注APP的健壯性、服務器的負載能力、各手機系統兼容性、電池等,同時也要重視手機網絡下的數據傳輸,這個很影響用戶體驗。網絡的不穩定容易導致一些問題,如: 

- 程序未知異常:如程序無響應,異常退出、程序未處理的網絡異常、前后不一致。 

交互異常:如圖片顯示不完整、信息顯示不全、、傳輸超時、信息顯示錯亂等.

數據庫異常:客戶端和服務器傳輸信息時,如果不注意保證兩邊存儲的信息一致性,就很容易導致數據不一致,導致異常。 

- 性能測試難度大:數據傳輸異常時,需要花費時間進行異常數據處理,因此丟包、抖動、有限的帶寬,對性能影響很大。性能測試就需要在各種網絡環境下進行測試。 

- 功能問題:網絡傳輸的異常可能會導致客戶端和服務器的不一致問題,如UI和數據,這些會導致功能問題。

隨着4G的發展,移動設備大多通過蜂窩網絡(手機網絡)進行聯網,雖然WIFI已經非常普遍,但是並不是隨時都擁有WIFI信號。 

手機網絡基本分為:WAN 無線WAN WIFI 2G GPRS 3G 4G 運營商分為:電信 聯通 移動, 網絡特點: 

移動網絡特點:有高延遲、抖動、丟包、包錯誤、包重排序等特點。 

信號不穩定:信號覆蓋存在死角問題,有些區域信號覆蓋不到或者很差,比如地鐵、電梯、公司或家里的特定地點,這就導致連接會隨時中斷。 

傳輸時數據丟失:通過手機網絡傳輸時,容易遇到網絡阻塞等問題從而導致數據丟失,即使使用TCP/IP,數據丟失依然影響用戶的使用體驗。如果處理不好數據丟失問題,很容易造成一系列用戶體驗問題,比如無響應、功能失常等問題。 

帶寬窄:4G以下一般都存在網絡速度慢的問題,4G的信號覆蓋也存在不穩定問題,經常被切換到3G, WIFI一般被多人連接和共享,因此並不是WIFI速度就會很快。 

連接不可靠(蜂窩網絡在打電話的時候大多會斷網,而電話隨時又都可能進來,加之很多人在行進的時候使用手機,因此信號存在不穩定,從而導致連接的不穩定), 

速度不穩定、高延遲(2G和3G網絡非常慢,但是使用者很多,4G雖然快,但是4G信號的覆蓋存在問題),因此性能測試時,對網絡的測試非常重要。雙11天貓的順利運行,其負責人就說,他們保證了網絡很差的情況下,依然保持了瀏覽的順滑。 

3. 移動的網絡問題存在,如果移動端不使用異步設計,不謹慎考慮網絡問題,很容易導致性能和使用體驗的滑鐵盧。如果用戶感覺到沒有及時得到響應,很可能不是繼續等待信息,而是重新請求,很容易導致服務器指數倍數的增加負載,造成惡性循環。

網絡仿真測試很難克服的困難(這些困難也是性能測試的挑戰): 

- 真實網絡出現問題時,因為當時網絡環境很復雜或一些信息沒有記錄完整,導致問題很難復現 

- 難以完整搭建出類似真實網絡的測試環境。 

- 無法完整覆蓋真實網絡中的各項網絡設置。 

- 測試人員無法真實在各地進行真實網絡測試。

測試項 測試內容

網絡性能測試 模擬真實網絡的環境,如隨時波動的帶寬(網速)、網絡類型(WIFI/3G/GPRS/4G/EDGE,還有中國特色的跨網),注意用戶在各種網絡下的使用體驗

網絡阻塞測試 APP應該測試各種業務場景下的數據包丟失,特別是重要的場景

多網絡測試 使用手機時,很可能不斷的在各種網絡環境切換,如在使用APP時,在3G/2G/4G/WIFI網絡之間進行切換

真實環境測試 應該盡量在真實環境中進行覆蓋測試

使用工具:各公司一般使用工具不同,簡單的如linux的“tc”命令,微軟的模擬器(Network Emulator for Windows Toolkit),具體使用方法請自行查詢資料, 復雜的有網絡模擬器,如infosys的Windtunnel 以及FACEBOOK的網絡流量控制工具ATC “https://github.com/facebook/augmented-traffic-control“,以后有時間的時候 進行具體介紹。

移動端性能測試准備: 

測試移動端性能之前,我們要先將要測試的內容進行抽象,抽象出兩大類 

1. 設備相關測試:雖然IT行業很重視跨平台、跨瀏覽器,但有些功能是需要強設備相關的,比如指紋、支付等。設備品牌不同、型號不同、OS版本不同、瀏覽器不同,其結果就可能不同。這對於性能測試是個很大挑戰。 

2. API測試(設備無關,抽象成API測試):APP使用API相互之間、和服務器之間進行交互,性能測試時,對這些API提取出來,並根據測試場景,分析其使用方法和壓力情況,設計出合理的性能測試方法。API的性能測試和傳統的API性能測試較為雷同。

測試設計 

依據是否關注在移動端在真機的性能表現分為:監測APP在真機性能和不監測APP在真機性能。 

1. 不監測APP在真機性能:一般來說是需要監測APP在真機性能,但並不是全部的,上面我們有說過,有些是網頁形式的,這時主要是測試移動WEB網頁的性能, 而不是APP真機性能。 

移動站點:測試移動站點的時候需要使用瀏覽器,但是瀏覽器和電腦的瀏覽器不同,需要使用移動瀏覽器來測試,中國市場的移動瀏覽器主要為:UC QQ 百度 360 谷歌瀏覽器, 海外市場的占有率請自行查資料。 

測試移動站時,需要模擬移動瀏覽器,服務器是依靠HTTP請求頭的”User-Agent”字段值來區分瀏覽器類型, 不同的瀏覽器其User-Agent是不同的, 有的測試工具可以自定義此字段值, 可以通過自定義此字段值來模擬各個瀏覽器. 

移動APP: APP的各項功能都是一個個函數組成的, 將APP的功能抽象到API中, 通過腳本調用API來實現性能測試. 

2. 監測真機性能: 測試並發和負載的真機性能時,不可能使用大量的真機進行測試, 我們可以使用少量真機並配合自動化腳本. 用自動化測試腳本調用API或HTTP請求,形成大規模測試, 再使用少量真機訪問服務, 記錄KPI數據,並觀測其反應. 各IDE和OS都提供了基本的一些性能檢測功能, 能夠滿足一般的性能需求。

轉載於性能測試之道公眾號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM