apk測試工具調研

最近 boss讓作關於apk測試工具的調查,最後整理出以下,如今網絡上的資料並非不少,本身一步步通過查找測試到完成領導的預約任務到提交報告。 html

由於是份報告因此有些地方並非很具體,能夠參考給出網址。 python

若是有什麼不足還請告知及時補充。 android

 

apk測試工具調查 shell

簡介 瀏覽器

android SDK裏自帶的測試工具monkey 和 monkeyrunner 網絡

1. mokey session

Monkey工具直接運行在設備或模擬器的adb shell中,生成用戶或系統的僞隨機事件流,主要應用在壓力和可靠性測試上,運行該命令能夠隨機地向目標程序發送各類模擬鍵盤事件流,而且能夠本身定義發送的次數,以此觀察被測應用程序的穩定性和可靠性 app

2. monkeyrunner electron

monkeyrunner工具則是在工做站上經過API定義的特定命令和事件控制設備或模擬器,主要可應用於功能測試,迴歸測試,而且能夠自定義測試擴展,靈活性較強,而且測試人員能夠徹底控制。 ide

目前的缺陷

•不支持中文字符的輸入(只能輸入ASC碼中存在的字符)

•基於UI操做,一旦遇到複雜的應用,測試代碼的複雜度指數增加;測試設備性能不一樣,須要根據設備的快慢對操做加時延;腳本的運行速度慢

•沒法將測試結果抓取出來,只能採用截圖比較。沒法準確統計測試數據。

•drag方法只能實現簡單的滑動屏幕的操做,不能進行復雜的拖拽。微博客戶端的下拉刷新操做沒法模擬出來。

下面主要說明monkeyrunner的使用

monkeyrunner的使用

考網站

http://www.51testing.com/html/59/n-242759.html

http://blog.csdn.net/zm2714/article/details/7980634

http://www.cnblogs.com/youxilua/archive/2011/11/12/2246576.html

運行monkeyrunner以前必須先運行相應的模擬器,否則monkeyrunner沒法鏈接設備。

虛擬機

1.        打開cmd  執行emulator -avd 4.0(4.0爲設備名稱)命令,啓動虛擬機。

2.        執行 monkeyrunner命令。

3.        進入shell命令交互模式後,首要一件事就是導入monkeyrunner所要使用的模塊。直接在shell命令下輸入:from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice 回車。

 截止到這步完成,咱們就能夠利用monkeyrunner進行測試工做了。這裏有兩種方案,一是直接在shell命令下輸入如下命令,另外一種是將如下命令寫到python文件裏(要懂點python腳本)。

命令說明

 這裏摘錄部分關鍵命令 詳情請參考上述網站或下面的官方網站

  http://developer.android.com/reference/android/view/KeyEvent.html

device=MonkeyRunner.waitForConnection() #鏈接手機設備

#安裝apk包到手機設備。

device.installPackage("C:/WINDOWS/ElectronicMenu/bin/ElectronicMenu.apk") 

#啓動其中的任意activity了,只要傳入package和activity名稱便可

device.startActivity(component="com.sarnath.electronicmenu/com.sarnath.electronicmenu.MainActivity") #打開這個應用程序的某個Activity。

device.reboot() #手機設備重啓

按下HOME鍵 device.press('KEYCODE_HOME',MonkeyDevice.DOWN_AND_UP)

按下BACK鍵 device.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP)

按下下導航鍵

device.press('KEYCODE_DPAD_DOWN',MonkeyDevice.DOWN_AND_UP) 

  按下上導航鍵

  device.press('KEYCODE_DPAD_UP',MonkeyDevice.DOWN_AND_UP) 

按下OK鍵

device.press('KEYCODE_DPAD_CENTER',MonkeyDevice.DOWN_AND_UP)

  在指定位置發送觸摸事件(x,y的單位爲像素)

  device.touch(x,y,TouchPressType-觸摸事件類型)

python腳本

  就是把系列指令寫在x.py 文件裏,運行cmd 執行如: monkeyrunner D:\test.py

 指令,D:\ 是存放 x.py文件的路徑。test.py放在d 盤的根目錄下。

 Text.py文件

   from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice

device=MonkeyRunner.waitForConnection()

device.startActivity(component="com.beer.dialogdemo/com.beer.dialogdemo.MainActivity")

device.touch(132,271,MonkeyDevice.DOWN_AND_UP)

過程執行了開啓項目到點擊按鈕事件的整個過程。

手機設備

 連接設備後直接執行shell命令

Monkeyrunner

 後邊的步驟同上。

shell操做的截圖以下

Hierarchy Viewer 工具使用簡介

此device.touch(x,y,TouchPressType-觸摸事件類型)的觸摸事件的座標獲取工具

此方法使用時要開啓hierarchyviewer工具獲取對應的座標,開啓方法 另起cmd 定義到sdk的tools目錄 執行shell命令hierarchyviewer.bat。

詳情請參照:http://tech.it168.com/a2011/0802/1226/000001226690.shtml

使用截圖

總體效果圖以下

                         

總結

1.monkeyrunner提供的操做有限,適合處理反覆點擊等小範圍的操做,用來測試一個點是比較好的。能夠作軟件跑分、瀏覽器跑分等 穩定性測試,或是用來安裝JUnit寫好的測試app。

2.monkeyrunner不適合處理連續的操做。一旦進入到應用層,由於drag方法的不穩定,跳轉就須要用點擊按鈕來代替,這樣沒法模擬用戶真實的操做。 用工具來定位座標、查找各個按鈕的id,消耗時間。一旦UI改變,腳本可能就沒法使用

3.monkeyrunner或者其餘基於UI的腳本測試,對所測試系統的穩定性要求比較高。若是系統或者軟件很是容易奔潰,就會終端測試腳本,沒法自動化。

4.基於UI的自動化測試,測試結果經過截圖判斷,沒法脫離人工干預。

5.綜上,基於UI的自動化測試事倍功半,是一條不歸路。建議根據Android自己的特色,合理劃分軟件層次。測試部門用JUnit來測試API,完成邏輯測試;用人工來完成場景測試。

我的意見

綜合上述觀點,monkeyrunner 符合此次調研的要求,但就目前的版原本說並不適用於平時的測試工做。

附:兩款雲端測試工具

Testin雲測試

優勢:測試點更精細跟準確。

http://www.testin.cn/portal.action;jsessionid=FCC8344620201F91DF42D092AD7142F2?op=Portal.index

測試分爲 兼容測試、性能測試、功能測試三大部分。

這是以 點菜寶爲例上傳測試後的結果概要截圖

百度雲衆測

優勢:提供APP評測、用戶體驗反饋、問卷調查等

http://developer.baidu.com/yunzhongce

就雲測試來講,兩款雲端測試工具 我更傾向於前者,也就是Testin雲測試,測試更具象化。

然後者 更親向於 用戶體驗與反饋。

                                                                                            ---劉利濤

                                                                                        2013-4-26日

相關文章
相關標籤/搜索