Android壓力測試三 MonkeyRunner
Monkeyrunner工具提供了一個API,使用此API寫出的程式可以在Android程式碼之外控制Android裝置和模擬器。
一、Monkeyrunner簡介
1.MOnkeyrunner相對Monkey區別
1)Monkeyrunner工具在工作站上通過API定義的特定命令和事件控制裝置或模擬器(可控)
2)精確控制事件之間的事件
3)可以進行:點觸屏、拖拽、長按、鍵盤事件
4)可以智慧截圖對比和判斷
5)回溯出詳細具體的BUG路徑
2.Monkeyrunner優缺點
1) 能完全模擬人工所有操作
2) 有詳細的API文件參考
3) 可以寫出智慧影象對比指令碼
4) 支援java和Python兩種語言指令碼
5) 指令碼移植性差
3.Monkeyrunner指令碼編寫
1) 終端USB調成開發者模式
2)電腦安裝手機驅動
二、Monkeyrunner環境搭建
Monkeyrunner的環境搭建,需要安裝以下工具:jdk、android sdk、python編譯器。
1.jdk的安裝與配置
1)jdk下載地址
下載完成後,預設安裝即可。
2)jdk環境配置
jdk安裝成功後,計算機→屬性→高階系統設定→高階→環境變數,在系統變數中,新建JAVA_HOME變數,變數值填寫jdk的安裝目錄。
在系統變數中,編輯Path變數,在變數值最後輸入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意原來Path的變數值末尾有沒有;號,如果沒有,先輸入;號再輸入上面的程式碼)
在系統變數中,新建CLASSPATH變數,變數值填寫為:
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一點)
到此,系統變數配置完畢。
3)jdk環境檢查
檢驗jdk環境是否配置成功,則執行cmd,在cmd視窗中,輸入 java -version (java 和 -version 之間有空格)。若如圖所示,顯示版本資訊,則說明安裝和配置成功。
2.android sdk安裝與配置
android sdk就是指Android專屬的軟體開發工具包。android sdk中我們最常用的就是tools和platform-tools資料夾中的工具。
1)sdk下載地址
下載地址1:http://developer.android.com/sdk/index.html
下載地址2:http://rj.baidu.com/soft/detail/23485.html?ald
Sdk下載完成後,解壓縮到自己的目錄,不需要安裝。
2)sdk環境配置
sdk安裝成功後,計算機→屬性→高階系統設定→高階→環境變數,在系統變數中,新建ANDROID_HOME變數,變數值填寫sdk中tools和platform-tools的安裝目錄。
在系統變數中,編輯Path變數,在變數值最後輸入%ANDROID_HOME%;
(注意原來Path的變數值末尾有沒有;號,如果沒有,先輸入;號再輸入上面的程式碼)
3)sdk環境檢查
檢驗sdk環境是否配置成功,則執行cmd,在cmd視窗中,輸入adb。若如圖所示,則說明安裝和配置成功。
3.Python編輯器安裝與配置
python用於支援Monkeyrunner執行,使用python指令碼編寫用例會大大簡化Monkeyrunner用例的編寫,且會幫助擴充套件monkeyrunner的自動化功能。
1)Python下載地址
下載後,按照提示資訊,下一步安裝即可。
2)Python環境配置
Python安裝成功後,計算機→屬性→高階系統設定→高階→環境變數,在系統變數中,編輯Path變數,在變數值最後輸入Python的安裝路徑;
(注意原來Path的變數值末尾有沒有;號,如果沒有,先輸入;號再輸入上面的程式碼)
3)Python環境檢查
檢驗Python環境是否配置成功,則執行cmd,在cmd視窗中,輸入python。若如圖所示,顯示版本資訊,則說明安裝和配置成功。
4.Monkeyrunner環境檢查
若以上步驟均完成,且各環境變數也配置正確,至此,Monkeyrunner環境已經搭建完成。檢驗Monkeyrunner環境是否搭建成功,則同樣執行cmd,在cmd視窗中,輸入monkeyrunner。如下圖所示,則說明Monkeyrunner環境搭建成功。
下面就可以用Monkeyrunner連線模擬器來進行自動化的測試了。
三、Monkeyrunner使用方法
Moneyrunner在使用前,必須先開啟模擬器或連線上手機裝置。下面是Monkeyrunner的例項操作。
1.模擬器啟動
我們這裡選擇命令開啟模擬器。執行cmd,在cmd視窗,輸入命令:emulator -avd AVD_test,其中AVD_test是模擬器的名稱,填寫自己建立的模擬器名稱。
模擬器啟動成功後,我們仍在cmd環境中操作。現在進入Monkeyrunner的shell命令互動模式。
輸入命令:monkeyrunner
進入shell命令互動模式後,首要一件事就是匯入monkeyrunner所要使用的模組。直接在shell命令下輸入命令:
from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice
再回車,這步完成我們就可以利用monkeyrunner進行測試工作了。
2.模擬器連線
下面我們就要Monkeyrunner連線上模擬器,進行一系列操作了。輸入命令:
device=MonkeyRunner.waitForConnection()
其中,device=MonkeyRunner.waitForConnection(6,’emulator-5554′)
引數1:超時時間,單位秒,浮點數,預設是無限期地等待。
引數2:指定的裝置名稱device_id,預設為當前裝置(手機優先,其次為模擬器)
輸入命令後,頁面上沒有錯誤資訊返回,即成功連線裝置。
3.app安裝並啟動
1)app安裝
模擬器啟動成功後,我們安裝自己想要的apk,這裡我們選擇qq音樂安裝。
輸入命令:device.installPackage('F:\\QQyinle_439.apk'),其中,引數是APK的相對路徑。
安裝成功返回true,此時檢視模擬器我們可以在IDLE介面上看到安裝的APK的圖示了。
2)app啟動
app安裝成功後,現在啟動該app,命令為:
device.startActivity(component="package名/.activity")
首先,我們有必要說一下,如何獲取一個app的package名和activity。這裡,我們只描述一種獲取方式。
使用aapt,其中aapt是sdk自帶的一個工具,在sdk\builds-tools\目錄下:
以儲存在F盤的qq音樂為例,執行cmd,命令列中切換到aapt.exe目錄,
方法一:
執行命令:aapt dump badging F:\QQyinle_439.apk ,注意,apk路徑中一定不能有空格。
由上圖可知:package name:com.tencent.qqmusic
activity:.activity.AppStarterActivity
方法一由於日誌較多,尋找起來比較費勁,所以我們引出方法二。
方法二(推薦):
把日誌儲存在特定的檔案中,在檔案中通過搜尋關鍵字,得到包名及活動名,這裡我把結果輸出到F盤的log.txt中:
aapt dump badging F:\QQyinle_439.apk > F:\log.txt
到此,已經獲取了app的package名和activity。下面,我們真正的啟動app。在原有cmd執行視窗,輸入命令:
device.startActivity(component=" com.tencent.qqmusic/.activity.AppStarterActivity ")
命令執行後,模擬器上的app被啟動。這表示命令啟動app成功。這裡的關鍵是app的package name和activity對應獲取正確,否則啟動不了特定app。
此時可以向模擬器傳送如按鍵、滾動、截圖、儲存等操作了。
四、Monkeyrunner執行python指令碼
同樣,Monkeyrunner可以直接呼叫指定python指令碼,將命令寫到python檔案裡,命名例如***.py,然後我們再從命令列直接通過monkeyrunner執行它即可。比如,我們還是用上面的例子,語法如下:monkeyrunner ***.py。接下來monkeyrunner會自動呼叫***.py,並執行其中的語句,相當方便。
我們這裡將上述例子,所有命令放在python檔案裡,並命名test.py,然後儲存到本地F盤,即路徑為:F:\test.py。
#coding:utf-8 from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice device=MonkeyRunner.waitForConnection() device.installPackage('F:\\QQ_374.apk') MonkeyRunner.sleep(3.0) runComponent = "com.tencent.qqmusic/.activity.AppStarterActivity" device.startActivity(component=runComponent)
在cmd中執行monkeyrunner F:\test.py,這裡的python指令碼路徑為相對路徑。結果報錯:SyntaxError:mismatched input 'test' expecting NEWLINE,如下:
這是因為python指令碼應在dos模式下執行,不要進入monkeyrunner的shell命令互動模式。正確的方式如下,輸入命令monkeyrunner F:\test.py:
執行成功後,則可以在模擬器上看到啟動的qq音樂app。
轉自: http://www.cnblogs.com/lynn-li/p/5885001.html