Android-Monkey 壓力測(cè)試
Adnroid-UI Automator Viewer 的使用
Adnroid-Monkey Script 壓力測(cè)試(一)
Adnroid-Monkey Script 壓力測(cè)試(二)
Android-MonkeyRunner 壓力測(cè)試(一)
Android-MonkeyRunner 壓力測(cè)試(二)
Android-MonkeyRunner API 參考
Android-Monkey 源代碼參考
1. MonkeyRunner 介紹
MonkeyRunner 是 Android SDK 中提供的一個(gè)用于自動(dòng)化壓力測(cè)試的工具包,可以同時(shí)在多個(gè)設(shè)備上進(jìn)行測(cè)試。
它的測(cè)試程序是使用 Python 語(yǔ)言寫(xiě)的,并使用 monkeyrunner 命令運(yùn)行 Python 測(cè)試程序(monkeyrunner 命令在 Andorid 的 SDK tools\bin 目錄下)。
在 MonkeyRunner 測(cè)試程序中,你可以使用它的 API 安裝 Android 應(yīng)用、
測(cè)試應(yīng)用、向應(yīng)用發(fā)送按鍵、截屏、保存屏幕截圖等。
它是通過(guò)屏幕上 View 的坐標(biāo)來(lái)發(fā)送點(diǎn)擊、長(zhǎng)按等事件的。
可以使用 Android ADK 的 tools\bin 目錄下 uiautomatorviewer 工具獲取 View 在屏幕上的坐標(biāo)。
UI Automator Viewer 參考: http://www.itdecent.cn/p/b2890c631ec5
MonkeyRunner 包含許多的 API,它的 API 主要包含三個(gè)部分:
- MonkeyRunner 測(cè)試程序入口類(lèi),包含多個(gè)靜態(tài)方法,如:等待設(shè)備連接、彈出 Dialog。
- MonkeyDevice 用來(lái)控制 Android 設(shè)備或模擬器。
- MonkeyImage 用來(lái)存儲(chǔ)設(shè)備或模擬器屏幕截圖。
2. MonkeyRunner API
2.1. MonkeyRunner API
1. 連接設(shè)備或模擬器
MonkeyDevice waitForConnection(float timeout, string deviceId)
參數(shù):
- timeout: 等待連接的秒數(shù)。默認(rèn)值為無(wú)限期等待。
- deviceId: 設(shè)備或模擬器的序列號(hào)。通常使用 adb devices 命令獲取。
返回值:
- 設(shè)備或模擬器的 MonkeyDevice 實(shí)例。使用此對(duì)象可控制設(shè)備或模擬器并與之通信。
2. 程序暫停
void sleep(float seconds)
參數(shù):
- seconds: 當(dāng)前程序暫停指定的秒數(shù),單位:秒
3. 顯示提示對(duì)話(huà)框
void alert(string message, string title, string okTitle)
參數(shù):
- message: 對(duì)話(huà)框中顯示的消息。
- title: 對(duì)話(huà)框的標(biāo)題。默認(rèn)值為“Alert”。
- okTitle: 對(duì)話(huà)框按鈕中顯示的文本。默認(rèn)值為“OK”。
2.2. MonkeyDevice API
1. 安裝 App
void installPackage(string path)
參數(shù):
- path: 要安裝的 .apk 文件的完全限定路徑和文件名。
2. 啟動(dòng) Activity
void startActivity(string uri, string action, string data, string mimetype,
iterable categories dictionary extras,
component component, iterable flags)
參數(shù):
- uri: Intent 的 URI,和 Intent.setData() 方法對(duì)應(yīng)。
- action: Intent 的操作,和 Intent.setAction() 方法對(duì)應(yīng)。
- data: Intent 的數(shù)據(jù) URI,和 Intent.setData() 方法對(duì)應(yīng)。
- mimetype: Intent 的 MIME 類(lèi)型,和 Intent.setType() 方法對(duì)應(yīng)。
- categories: 一種可迭代數(shù)據(jù)結(jié)構(gòu),包含定義 Intent 的類(lèi)別的字符串,和 Intent.addCategory() 方法對(duì)應(yīng)。
- extras: Intent 的額外數(shù)據(jù)字典。和 Intent.putExtra() 方法對(duì)應(yīng)。
每個(gè)字典項(xiàng)的鍵都應(yīng)該是一個(gè)字符串。字典項(xiàng)的值可以是任意簡(jiǎn)單或結(jié)構(gòu)化數(shù)據(jù)類(lèi)型。 - component: Intent 的組件(請(qǐng)參閱 ComponentName)。使用此參數(shù)可將 Intent 指向特定 Android 軟件包中的特定類(lèi)。
- flags: 一種可迭代數(shù)據(jù)結(jié)構(gòu),包含可控制 Intent 處理方式的標(biāo)記,和 Intent.setFlags() 方法對(duì)應(yīng)。
3. 發(fā)送點(diǎn)擊事件
void touch(integer x, integer y, string type)
參數(shù):
- x 點(diǎn)擊事件的 X 坐標(biāo)。
- y 點(diǎn)擊事件的 Y 坐標(biāo)。
- type 要發(fā)送的點(diǎn)擊事件的類(lèi)型。允許的值包括 DOWN、UP 和 DOWN_AND_UP。
4. 發(fā)送按鍵事件
void press(string name, integer type)
參數(shù):
- name 要發(fā)送的鍵碼的名稱(chēng)。參考 android.view.KeyEvent,是鍵碼名稱(chēng),不是對(duì)應(yīng)的整數(shù)值。
- type 要發(fā)送的按鍵事件的類(lèi)型。允許的值包括 DOWN、UP 和 DOWN_AND_UP。
5. 輸入內(nèi)容
void type(string message)
參數(shù):
- message 要輸入的字符串。
6. 屏幕截屏
MonkeyImage takeSnapshot()
返回值:
- 一個(gè)包含當(dāng)前屏幕截圖的 MonkeyImage 對(duì)象。
2.3. MonkeyImage API
1. 保存屏幕截圖
void writeToFile(string filename, string format)
參數(shù):
- filename 文件保存路徑,例如:D:/test.png
- format 文件的輸出格式。如果沒(méi)有提供格式,則該方法將嘗試根據(jù)文件擴(kuò)展名猜出格式。如果未提供擴(kuò)展名且未指定格式,則使用默認(rèn)格式“png”
2. 圖片比較
boolean sameAs(MonkeyImage otherImage, float percent)
參數(shù):
- otherImage 要與此對(duì)象進(jìn)行比較的另一個(gè) MonkeyImage 對(duì)象。
- percent 介于 0.0(含)到 1.0(含)的浮點(diǎn)數(shù),表示要使方法返回 true,
必須相同的像素所占百分比。默認(rèn)值為 1.0,表示所有像素均必須匹配。
返回值:
- 如果圖片匹配,則返回布爾值 true,否則返回布爾值 false。
Android-MonkeyRunner 壓力測(cè)試(二)
更多 MonkeyRunner API 參考:https://developer.android.google.cn/studio/test/monkeyrunner/MonkeyDevice?hl=zh_cn