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

來源:互聯網
上載者:User

標籤:component   軟體測試   tool   詳細步驟   返回   翻譯   class   執行個體代碼   package   

最近由於公司在組織一個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

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.