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

追憶丶年華發表於2018-01-25

最近由於公司在組織一個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的方法和屬性大家可以參考官方的文件,上面非常詳細了,呵呵。

版權宣告:本文出自 qingchunjun 的51Testing軟體測試部落格:http://www.51testing.com/?22381

相關文章