Robotium 系列(2) - 簡單介紹Monkey和MonkeyRunner

除了Robotium,Android還有其餘的自動化測試方法,好比Monkey和MonkeyRunner. 這裏就作一個簡單的介紹和使用方法。html

本文提綱:java

1. Android SDK以及SDK中的工具linux

    - SDK Managerandroid

    - AVDshell

    - ADBapi

    - monitor服務器

2. MonkeyRunneroracle

3. Monkeyapp

 

Android SDK工具

    其實就是Android專屬的軟件開發工具包。

    在這裏能夠下載到,http://developer.android.com/sdk/index.html

    下載完SDK以後,須要將 SDK/tools和SDK/platform-tools加到環境變量裏,以方便調用。固然這些工具須要java的支持, 這是java的下載地址http://www.oracle.com/technetwork/java/javase/downloads/index.html

    SDK目錄的主要文件夾,

    - tools, 提供了一系列測試、調試和開發用的工具

    - platform-tools, 提供了平臺相關的開發、調試的工具

    - platform, 裏面的每個文件夾對應每個android版本的api,他包含一個android.jar文件爲開發的應用提供支持

    SDK Manager是SDK包的管理工具,咱們能夠經過他來下載所須要的工具和Android api版本。調用命令 android

    在這提一下android平臺版本和SDK api的對應關係,打開sdk manager後在列表裏能夠看到。

    AVD    (Android Virtual Device)即Android模擬器, 它是一個能夠運行在你電腦上的虛擬設備。 Android模擬器可讓你不需使用物理設備便可預覽、開發和測試Android應用程序。簡單的說就把AVD看作一個手機模擬器。

    avd manager就是avd 的管理器,命令調用android avd

    ADB, Android Debug Bridge. 它是一個 客戶端-服務器端 程序,其中客戶端是你用來操做的電腦, 服務器端是android設備。包括三個組成部分:

    一個在你用於開發程序的電腦上運行的客戶端。你能夠在CMD中使用adb命令啓動客戶端。 其餘Android工具好比說ADT插件和DDMS一樣能夠產生adb客戶端.
    在你用於開發的機器上做爲後臺進程運行的服務器。該服務器負責管理客戶端與運行於模擬器或設備上的adb守護程序(daemon)之間的通訊。
    一個之後臺進程的形式運行於模擬器或設備上的守護程序(daemon)。

    這個是使用頻率最高的工具了,下面是咱們常常用到的:

    - adb devices

    - adb shell

    - adb install/uninstall apkfile

    - adb push/pull

    - adb logcat 將日誌數據輸出到屏幕上.

    - adb shell dumpsys [options]

               meminfo 顯示內存信息

               cpuinfo 顯示CPU信息

               account 顯示accounts信息

               activity 顯示全部的activities的信息

               window 顯示鍵盤,窗口和它們的關係

               wifi 顯示wifi信息

實際上adb shell就是一個類linux命令shell,有許多linux命令能夠在這裏方便使用 cd chmod, ls, mkdir, rm, mv, top, df, touch等

 

Monitor: Device Monitor是一個用來給Android 程序進行調試和分析的工具

包括:

DDMS: DDMS 的全稱是Dalvik Debug Monitor Service,它爲咱們提供例如:爲測試設備截屏,針對特定的進程查看正在運行的線程以及堆信息、Logcat、廣播狀態信息、模擬電話呼叫、接收SMS、虛擬地理座標等等。DDMS將搭建起IDE與測試終端(Emulator 或者connected device)的連接,它們應用各自獨立的端口監聽調試器的信息,DDMS能夠實時監測到測試終端的鏈接狀況。當有新的測試終端鏈接後,DDMS將捕捉到 終端的ID,並經過adb創建調試器,從而實現發送指令到測試終端的目的

Tracer for OpenGL ES

Hierarchy Viewer

Traceview

啓動 sdk tools/ : monitor

 

 

logcat是Android中一個命令行工具,能夠用於獲得程序的log信息   

Android日誌信息都有一個標籤和它的優先級. 

日誌的標籤是系統部件原始信息的一個簡要的標誌。(好比:「View」就 是查看系統的標籤).

優先級有下列集中,是按照從低到高順利排列的:

V — Verbose (lowest priority)

D — Debug

I — Info

W — Warning

E — Error

F — Fatal

S — Silent (highest priority, on which nothing is ever printed)

 

 
Monkeyrunner是SDK自帶的自動化測試工具須要經過Android-SDK運行,支持用Python編寫腳本,按照測試腳本去執行預先定義好的操做事件。
Monkeyruner腳本能夠支持安裝卸載應用、進入任一 模塊、點座標事件、按鍵事件、編輯文本、循環測試、截圖對比等操做,使用起來比較靈活,簡單易 學。
至於圖片比對,通常用Imagemagic實現。
 
能夠應用與功能測試,迴歸測試
他的缺點是隻能對有限的控件進行操控,而其餘只能靠座標位置進行操做,若是手機的分辨率、尺寸或者UI發生變化之後,以前的腳本就不能使用了。
經常使用的monkey API:
    MonkeyRunner
    MonkeyDevice
    MonkeyImage
 
一段典型的MonkeyRunner代碼:
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
device = MonkeyRunner.waitForConnection()
device.installPackage('D:\AndroidAutomation\pyscript\MyAPPTest.apk')
device.startActivity(component='com.example.myapp/.MainActivity')
MonkeyRunner.sleep(5)
device.touch(20,105,".DOWN_AND_UP");
MonkeyRunner.sleep(3)
device.type('Hello');
MonkeyRunner.sleep(5)
device.touch(380,105,".DOWN_AND_UP");
MonkeyRunner.sleep(3)
device.press('KEYCODE_MENU', MonkeyDevice.DOWN_AND_UP)
result = device.takeSnapshot()
result.writeToFile('shot1.png','png')
MonkeyRunner.sleep(2)
device.removePackage('com.example.myapp')
 
monkeyrunner還有錄製模塊可使用,
from com.android.monkeyrunner import MonkeyRunner
from com.android.monkeyrunner.recorder import MonkeyRecorder
device = MonkeyRunner.waitForConnection()
MonkeyRecorder.start(device)
 
會有一個monkeyrunner錄製窗口,很簡單的錄製過程,只不過有點慢。
下面是monkeyrunner經常使用的一些api:
touch
press
drag
type
installPackage
startActivity
waitForConnection
takeSnapshot
writeToFile
 
關於Monkey
Monkey 測試是 Android 自動化測試的一種手段,Monkey 測試模擬用戶的按鍵輸入,觸
摸屏輸入,手勢輸入等,看設備多長時間會出異常。 
當 Monkey 程序在模擬器或設備運行的時候,若是用戶出發了好比點擊,觸摸,手勢或
一些系統級別的事件的時候,它就會產生隨機脈衝,因此能夠用Monkey 用隨機重複的方法
去負荷測試你開發的軟件。 
 
實例:
adb shell monkey -v -p com.hoperun.activity - -throttle 500 - -pct-anyevent 100    500 
這條命令的解釋是: 
-v 顯示默認程度的信息; 
-p com.hoperun.activity 是指定測試的程序(包路徑)。 
- -throttle 500   設定延時爲 0.5秒 
- -pct-anyevent 100 設定啓動 activity 的百分比爲 100%。  
 
monkey裏須要注意的一個參數是: -s,
這是僞隨機數生成器的  seed  值。若是用相同的  seed  值再次運行  Monkey  ,它將生成相同
的事件序列。 
相關文章
相關標籤/搜索