1. 程式人生 > >安卓App測試簡析

安卓App測試簡析

安卓系統知識簡介
1.1安卓系統架構:

1、應用程式層

2、應用程式框架層

3、系統執行庫庫層

4、系統核心層

1.2安卓許可權系統:

Android作業系統其實是一個多使用者的linux作業系統,每個android應用使用不同的使用者,執行在自己的安全沙盤裡。系統為所有的檔案設定許可權,這樣一來只有同一個使用者的應用可以訪問它們。每個應用都有自己單獨的虛擬機器,這樣應用的程式碼在執行時是隔離的,即一個應用的程式碼不能隨意訪問或者意外修改其他應用的內部資料。

1.3安卓除錯橋簡介:

ADB,即Android Debug Bridge,他是Android提供的一個通用的除錯工具,藉助這個工具,我們可以很好的除錯開發的程式,adb.exe在安裝的Android的sdk開發包platform-tools目錄下。

它是一個客戶端/伺服器架構的命令列工具,主要由以下3個部分組成:

1、adb客戶端:一個用於使用者開發程式的電腦上執行的客戶端

2、adb服務端:負責客戶端與使用者裝置的守護程序的通訊

3、adb daemon(守護程序):一個以後臺程序的形式運行於模擬器或者物理手機裝置上的守護程式

1.4 系統監控ADB命令

1.4.1檢視應用啟動耗時

adb-s 裝置id* shell am start -W -n 應用名.app/ .MainActivity

1.4.2獲得電池電量和電池溫度

adb shell dumpsys battery

1.4.3獲得最耗資源的應用

adb -s 裝置id

shell top -m 6 -n l -s cpu

1.4.4 獲得記憶體使用情況

adb -s 裝置id adb shell dumpsys meminfo 應用程式包名

1.4.5獲取指定程式cpu使用情況

adb -s 裝置id shell dumpsys cpuinfo 應用程式包名

1.4.6獲取指定程式PID

adb shell "ps | grep packageName"

安卓APP測試流程圖:

安卓app測試簡析圖片.png

App測試點

3.1 UI測試

1、按鈕、對話方塊、列表和視窗等靜態介面測試

2、內容(列表頁、提示框)等動態介面測試

3.2相容性測試

1、不同手機品牌

2、不同的作業系統以及作業系統的不同版本

3、不同手機螢幕解析度和不同螢幕尺寸(一般測試主流解析度)

4、網路環境的相容性 (WiFi、行動網路、弱網環境、無網路環境)

5、與本地軟體的相容性

3.3安裝解除安裝測試

1、應用程式的正常安裝,圖示顯示正常,安裝後正常執行(不同作業系統下安裝)

2、不同版本之間的覆蓋安裝

3、覆蓋安裝後,使用者資料的保留

4、應用程式的正常解除安裝,解除安裝後用戶資料是否刪除

5、安裝/解除安裝過程中異常情況(斷電,空間不足等)

6、 安裝/解除安裝過程是否支援取消操作

3.4版本升級測試

1、當客戶端有新版本時,有更新提示。

2、 當版本為非強制升級版時,使用者可以取消更新,老版本能正常使用。使用者在下次啟動app時,仍能出現更新提示。

3、當版本為強制升級版時,當給出強制更新後用戶沒有做更新時,退出客戶端。下次啟動app時,仍出現強制升級提示。

4、當客戶端有新版本時,在本地不刪除客戶端的情況下,直接更新檢查是否能正常更新。

3.5 互動測試

1、應用的前後臺切換

2、殺程序

3、鎖屏

4、長時間待機

5、中斷

3.6 客戶端資料庫測試

1、客戶端後臺資料的增、刪、改、查等資料更新測試

2、資料為空的情況測試

3、檢查客戶端資料存在時,app資料是否能自動從客戶端資料中取出,檢查客戶端資料存在時,app資料是否能自動從客戶端資料中取

4、當業務對資料進行了修改、刪除後,客戶端和服務端是否會有相應的更新。

3.7 介面測試

1、業務邏輯功能測試

2、邊界值測試

3、引數組合測試

4、異常情況測試

3.8效能測試

1、單位時間耗電量

2、單位時間網路流量

3、移動端相關資源利用率

4、業務響應時間

5、幀率(主要針對遊戲應用)

工具Emmagee簡介:

4.1簡介

Emmagee是網易杭州研究院qa團隊開發的一款用於監控安卓客戶端效能的小工具,可以監控指定被測應用在使用過程中器的啟動時間、CPU、記憶體、流量和電量變化情況,使用者可自定義配置監控的頻率以及效能的實時顯示,並最終生成一份效能統計csv檔案,支援Android2.2及以上版本。

4.2主要功能

1、檢測當前時間被測應用的CPU使用率以及總體CPU使用量。

2、檢測當前時間被測應用佔用的記憶體量、百分比,剩餘記憶體量。

3、檢測應用從啟動開始到當前時間消耗的流量數。

4、測試資料寫入到CSV檔案中,儲存在手機/storage/sdcard0目錄下,同時支援以郵件形式傳送檔案。

5、可以選擇開啟浮窗功能,浮窗中實時顯示被測應用佔用效能資料資訊。

6、在浮窗中可以快速啟動或者關閉手機的wifi網路。

4.3實現原理

4.3.1、監控CPU的實現原理

Android系統是基於Linux核心的,所以系統檔案的結構和Linux下一樣,系統總體CPU使用資訊放在/proc/stat檔案下,/proc/cpuinfo檔案存放CPU的其它資訊,包括CPU名稱,直接讀取即可。Emmagee是將選中應用的PID傳入,讀取/proc/PID/stat檔案資訊及可獲取該PID對應程式的CPU資訊。

4.3.2、監控記憶體的實現原理

記憶體和cpu的處理方式類似。先獲取到當被測應用的PID,然後按照PID從 /proc/meminfo檔案中獲取當前被測應用佔用的記憶體資訊。

4.3.3、監控流量消耗的實現原理

系統中有存放整體流量和針對當程式的流量統計,/proc/net/dev和/proc/uid_stat/UID下存放tcp_rcv和tcp_send檔案,分別存放下行流量和上行流量,操作前後相減就得出結果 。

4.3.4、監控電量的實現原理

電量、電壓和溫度情況是通過監聽系統的電池管理事件的廣播來獲取的。

4.3.5、監控啟動時間的實現原理

我們點選介面的開始測試時,程式會啟動EmmageeService,之後所有的資料統計以及更新都是EmmageeService 進行處理的。 EmmageeService會在onStartCommand()裡面啟動一個執行緒“handler.postDelayed(task, 1000)”,進行資料的更新同時會嘗試通過ActivityManger從logcat中獲取到軟體的啟動時間。

紅色框框內的東西就是通過呼叫一個管理Android幀緩衝區的系統服務SurfaceFlinger來獲取用於計算fps的幀資料,具體可參考: Android fps的計算方式。

來源:宜信技術學院 作者:張曉燕