Android自動化測試之Monkeyrunner從零開始

最近由於公司在組織一個Free CoDE的項目,也就是由大家自己選擇研究方向來做一些自己感興趣的研究。由於之前我學過一點點關於android的東西,並且目前android開發方興未艾如火如荼,但自動化測試還基本上屬於新興領域,接觸的人並不多,所以我給我們團隊提出研究android自動化測試方面的項目,果然得到大家一致的贊同,大家的興致都很高,呵呵。於是二話不說,我們開始看看現在android平臺上現有的一些自動化測試工具。經過網上的一番搜索和學習,我瞭解目前android SDK裏自帶的現成的測試工具有monkey 和 monkeyrunner兩個。大家別看這倆兄弟名字相像,但其實是完完全全不同的兩個工具,應用在不同的測試領域。總的來說,monkey主要應用在壓力和可靠性測試上,運行該命令可以隨機地向目標程序發送各種模擬鍵盤事件流,並且可以自己定義發送的次數,以此觀察被測應用程序的穩定性和可靠性,應用起來也比較簡單,記住那幾個命令就行了。而monkeyrunner呢,相比之下會強大一些,它主要可應用於功能測試,迴歸測試,並且可以自定義測試擴展,靈活性較強,並且測試人員可以完全控制。

  好了,廢話不多說,我們直接進入主題吧。之所以想把這個過程寫下來,是由於經過我這段時間在網上的搜索和學習,發現關於monkeyrunner的教程極少,幾乎都是把android官方材料自己翻譯了一下擺上去的,對於第一次接觸的同學來說,可能還不太詳細。我在這裏就想以完全初學者的角度出來,真正從0開始,記錄我的學習過程。本文僅針對真正的菜鳥,大蝦們請飄過哈,嘿嘿。

  要使用Monkeyrunner,我們首先得幹神馬呢?當然得準備使用環境。這個不外乎就是我們得事先安裝好android的SDK,配置好開發環境(如Eclipse),安裝好Python(因爲Monkeyrunner其實是由Jython寫的,直接調用android API來整的)。這些步驟網上都有非常詳細的教程,教大家手把手地搭環境,我這裏就不多廢話了。

  環境搭好後,接下來就開始我們的使用之旅了。網上的monkeyrunner很多都直接從實例代碼入手,寫得很粗略,也沒有把詳細步驟說明下來,搞得我確實廢了兩三天才摸到頭緒。所以我這裏會寫得很詳細,儘量幫助大家能夠輕易地看懂。詳細步驟如下(在模擬器上運行,由於不知道什麼原因圖片不能正常顯示,所以我還是直接寫命令吧):

  1. 用Elipse打開andorid的模擬器或者在CMD中用andorid命令打開模擬器,如下:

  D:\Software\Android SDK2.3\android-sdk-windows\tools>emulator -avd AVD2.3.3

  Comments: 定位到android SDK的路徑下的tools目錄,運行上面這個命令。“AVD2.3.3”是我的模擬器的名字,這個命令是每個人自己命名的,用的時候需改成實際的名字。

  2. 這個時候,如果一切正常的話,模擬器應該可以啓動起來了。(運行monkeyrunner之前必須先運行相應的模擬器,不然monkeyrunner無法連接設備。這點很多教程上都沒有說,我也試了好多次才明白過來)。接着,我們打開另一個CMD窗口(前一個不要關),還是定位到tools目錄,輸入命令"monkeyrunner",回車,將進入shell命令交互模式。

  好了,接下來就可以導入monkeyrunner所要使用的模塊了。當然是我們的"From...import..."

  直接在shell命令中輸入: from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice  回車

  OK,這步完成之後,我們就可以開始和模擬器“勾兌”了,哈哈,命令如下:

  device = MonkeyRunner.waitForConnection()

  沒有報錯的話,就代表和模擬器勾兌成功,我們可以接着“騷擾”它了。接下來,我們可以在裏面裝點東西了。輸入如下命令,並傳入你的apk所在相對路徑即可。我這安裝的是著名的ApiDemos。成功了會返回true。如果沒有返回true,一般都是語法錯誤或者你傳入的相對路徑有問題,仔細檢查下就沒問題了。

  device.installPackage("../samples/android-10/ApiDemos/bin/Apidemos.apk")

  接下來,我們就可以啓動其中的任意activity了,只要傳入package和activity名稱即可。命令如下:

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

  此時模擬器會自動打開ApiDemos這個應用程序的主頁。

  接下來我們還可以給模擬器發送更多的操作,如模擬任何按鍵時間和滾動等,並且可以截圖。命令格式和上述命令類似,我就不再累述了。

  當然,我們也可以不這樣麻煩得一行行地輸入命令,可以將從“from...import...”開始的所有後面的語句都寫到一個python文件裏面,例如 monkeyrunnerTest.py,然後我們再從命令行直接通過monkeyrunner運行它即可。比如,我們還是用上面的例子,語法如下:

  D:\Software\Android2.3.3\android-sdk-windows\tools>monkeyrunner monkeyrunnerTest.py

  接下來monkeyrunner會自動調用monkeyrunnerTest.py,並執行其中的語句,相當方便。

  今天暫時先寫到這裏,今天主要的關鍵是明白瞭如何使得monkeyrunner和模擬器進行正確的連接和相關的操作,具體的monkeyrunner的方法和屬性大家可以參考官方的文檔,上面非常詳細了,呵呵。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章