• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Android自動測試之monkeyrunner工具

    發表于:2012-04-16來源:不詳作者:楊點擊數: 標簽:Android
    前言: 最近開始研究Android自動化測試方法,對其中的一些工具、方法和框架做了一些簡單的整理,其中包括android測試框架、CTS、Monkey、Monkeyrunner、benchmark、其它test tool等等。因接觸時間很短,很多地方有不足之處,希望能和大家多多交流。

      前言:

      最近開始研究Android自動化測試方法,對其中的一些工具、方法和框架做了一些簡單的整理,其中包括android測試框架、CTS、Monkey、Monkeyrunner、benchmark、其它test tool等等。因接觸時間很短,很多地方有不足之處,希望能和大家多多交流。

      一、什么是monkeyrunner

      monkeyrunner工具提供了一個API,使用此API寫出的程序可以在Android代碼之外控制Android設備和模擬器。通過monkeyrunner,您可以寫出一個Python程序去安裝一個Android應用程序或測試包,運行它,向它發送模擬擊鍵,截取它的用戶界面圖片,并將截圖存儲于工作站上。monkeyrunner工具的主要設計目的是用于測試功能/框架水平上的應用程序和設備,或用于運行單元測試套件,但您當然也可以將其用于其它目的。

      二、monkeyrunner工具同Monkey工具的差別

      Monkey:

      Monkey工具直接運行在設備或模擬器的adb shell中,生成用戶或系統的偽隨機事件流。

      monkeyrunner:

      monkeyrunner工具則是在工作站上通過API定義的特定命令和事件控制設備或模擬器。

      三、monkeyrunner的測試類型

      1、多設備控制:monkeyrunner API可以跨多個設備或模擬器實施測試套件。您可以在同一時間接上所有的設備或一次啟動全部模擬器(或統統一起),依據程序依次連接到每一個,然后運行一個或多個測試。您也可以用程序啟動一個配置好的模擬器,運行一個或多個測試,然后關閉模擬器。

      2、 功能測試: monkeyrunner可以為一個應用自動貫徹一次功能測試。您提供按鍵或觸摸事件的輸入數值,然后觀察輸出結果的截屏。

      3、 回歸測試:monkeyrunner可以運行某個應用,并將其結果截屏與既定已知正確的結果截屏相比較,以此測試應用的穩定性。

      4、 可擴展的自動化:由于monkeyrunner是一個API工具包,您可以基于Python模塊和程序開發一整套系統,以此來控制Android設備。除了使用monkeyrunner API之外,您還可以使用標準的Python os和subprocess模塊來調用Android Debug Bridge這樣的Android工具。

      四、運行monkeyrunner

      您可以直接使用一個代碼文件運行monkeyrunner,抑或在交互式對話中輸入monkeyrunner語句。不論使用哪種方式,您都需要調用SDK目錄的tools子目錄下的monkeyrunner命令。如果您提供一個文件名作為運行參數,則monkeyrunner將視文件內容為Python程序,并加以運行;否則,它將提供一個交互對話環境。

      monkeyrunner的命令語法為:

      monkeyrunner -plugin

      五、實例

      以sample中的ApiDemos為例,先將其生成ApiDemos.apk。

      前提:已有device連接

      1、 將ApiDemos.apk放在$Android_Root\tools下。

      2、 在$Android_Root\tools下新建一個monkeyrunnerprogram.py文件,里面內容為:

      1 # Imports the monkeyrunner modules used by this program

      2

      3 from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage

      4

      5 # Connects to the current device, returning a MonkeyDevice object

      6

      7 device = MonkeyRunner.waitForConnection()

      8

      9 # Installs the Android package. Notice that this method returns a boolean, so you can test

      10

      11 # to see if the installation worked.

      12

      13 device.installPackage('./ApiDemos.apk')

      14

      15

      16 # Runs the component

      17

      18 device.startActivity(component='com.example.android.apis/.ApiDemos')

      19

      20

      21 # Presses the Menu button

      22

      23 device.press('KEYCODE_MENU','DOWN_AND_UP')

      24

      25

      26 # Takes a screenshot

      27

      28 result = device.takeSnapshot()

      29

      30

      31 # Writes the screenshot to a file

      32

      33 result.writeToFile('./shot1.png','png')

      消除行號

      注意:SDK上的例子有些錯誤,不可直接復制,否則執行命令時會發生錯誤。具體可與我的上面這段代碼對照。

      3、 打開命令行轉到Android_Root\tools目錄下運行一下命令:

      monkeyrunner monkeyrunnerprogram.py

      110307 15:33:19.625:I [main] [com.android.monkeyrunner.MonkeyManager] Monkey Command: wake.

      110307 15:33:20.625:I [main] [com.android.monkeyrunner.MonkeyManager] Monkey Command: wake.

      110307 15:33:21.625:I [main] [com.android.monkeyrunner.MonkeyManager] Monkey Command: wake.

      110307 15:33:22.718:S [pool-1-thread-1] [com.android.monkeyrunner.adb.AdbMonkeyDevice] Error starting command: monkey --port 12345

      110307 15:33:22.718:S [pool-1-thread-1] [com.android.monkeyrunner.adb.AdbMonkeyDevice]com.android.ddmlib.ShellCommandUnresponsiveException

      110307 15:33:22.718:S [pool-1-thread-1] [com.android.monkeyrunner.adb.AdbMonkeyDevice] at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:408)

      110307 15:33:22.718:S [pool-1-thread-1] [com.android.monkeyrunner.adb.AdbMonkeyDevice] at com.android.ddmlib.Device.executeShellCommand(Device.java:276)

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>