2015年9月8日 星期二

Android 自動化壓測工具-Monkey Test (實機篇)

哈囉,大家好!!!

今天我們就接著上一節繼續談談 Monkey Test 這個隨機壓測工具。

記得以前還沒有智慧型手機時,就已經有自動化壓測工具,用來測試手機的實體按鍵。這是利用一個小型機器手臂一直持續按壓手機上的實體按鍵,測試是否會因為持續性按壓手機鍵盤,進而造成系統當機或等等的錯誤產生。

手機產業慢慢地發展到智慧型手機時,自動化測試工具當然也會與時並進,而 Monkey Test 就是專為 Android 的手機系統孕育而生的「隨機壓測工具」。

而今天這一節就是介紹 Monkey Test 如何來測試 Android 手機或平板電腦,首先一樣看看這一節的圖解大鋼:

Step 1: 下載 ADB 程式 & USB 驅動程式
下載執行 Monkey Test 測試工具 adb.zip 或由下面官網連結下載:
http://adbshell.com/downloads

下載 ADB 的 USB 通用驅動程式 AdbDriverInstaller.exe 或由下面的官網連結下載:
http://adbshell.com/downloads



如果 USB 通用驅動程式無法驅動,請直接到各大手機品牌官網下載,或由下面的連結連到各品牌官網下載 USB 驅動程式:
http://developer.android.com/tools/extras/oem-usb.html

Step 2: 安裝 ADB 程式
安裝 ADB 測試環境:
請到 adb.zip 下載目錄,按右鍵「解壓縮全部(T)...」


更改 adb.zip 解壓縮目的地資料夾為「C:\adb」之後按「解壓縮」


開啟 Cmd 命令提示字元,在 C:\> 底下輸入「dir adb」驗證有無 adb.exe 執行程式

安裝 USB 通用驅動程式:
請到 AdbDriverInstaller.exe 下載目錄,按兩下開啟安裝工具


在 Adb Driver Installer 1.0 主程式視窗按下「Install」安裝驅動程式
(請確認安裝前已將 USB 傳輸線與電腦和手機兩邊都連接上)

如果手機或平板電腦 USB 驅動程式成功安裝時,畫面顯示如下圖,可按「Exit」離開
(如果 ADB 的 USB 通用驅動程式無法驅動時,請到各手機廠牌官網下載專屬 USB 驅動程式)

Step 3: ADB 環境設定
開啟 Cmd 命令提示字元,在 C:\adb> 底下輸入「adb devices」查詢裝置名稱或代碼,驗證測試裝置已經 Ready
(如下圖,手機已經用USB傳輸線連好,且驅動程式也安裝正確,所以才會列出裝置名稱代碼是 0A3BF9160800F00F)

Step 4: 執行 Monkey Test 測試
開始執行 Monkey Test 500個隨機壓測,指令如下:
adb -s 0A3BF9160800F00F shell monkey -v 500




執行 Monkey Test 測試時,手機的聯動畫面影片如下:

Step 5: 測試參數與結果分析
執行指令「adb -s 0A3BF9160800F00F shell monkey -v 500」參數分析如下:
「adb」透過 adb.exe 呼叫 Monkey Test 測試參數
「-s devices name」例如「-s 0A3BF9160800F00F」就是 -s 加上裝置名稱或代號
「shell monkey」呼叫 Monkey Test 測試程式
「-v events number」例如「-v 500」就是壓測 500 個隨機測試

下圖測試結果分析如下:
「Events injected: 500」這表示此次測試,成功注入500個測試活動
「elapsed time=10507ms」這表示測試時間
「// Monkey finished」這表示 500個隨機壓測,都有成功完成

Step 6: 補充說明
如果測試失敗時,會顯示的訊息說明如下:
「Events injected: 126」這表示在第126個隨機壓測失敗
「** System appears to have crashed at event 126 of 500 using seed 1439717291142」
這表示原本要注入500個隨機壓測,但是在注入第126個測試時失敗

相信經過這兩節的說明後,各位對於如何使用 Monkey Test 做隨機壓測,應該不會再感到陌生。

隨著科技日新月異,自動化測試的技術也會隨之進步,不管是從事系統業、還是軟體業,都有各個領域專屬的測試工具。每當我們沉浸在3C的便利性時,背後所使用到的技術,都不是簡單的三言兩語就可以說明清楚的,更何況模擬使用者的自動化測試,更是一門深不可測的領域。

有專業的資深IT經理人曾經跟我說過,在台灣「QA」就是測試這門領域,常常是不被重視的。反觀歐美的軟體測試工程師(QA)他們的專業素養,並不一定會輸給研發人員(RD),更何況是研發測試人員(Test Developer),有很多都是資深的RD和QA同時擁有雙方面領域的專業技術專家來當任。

這也再再說明了,台灣的科技業只求有,不求好的商業型態。不注重品質的產品,最後也只能走向被淘汰的一途,自然會被市場上更好的產品所取代的。

希望台灣的IT產業不要最終走向「泡沫」的這條不歸路。

~ See you ~

參考出處:
http://adbshell.com/downloads
http://developer.android.com/tools/extras/oem-usb.html