關於Android自動化測試Monkey和MonkeyRunner不能正常運行的說明

前言:

哈嘍,感謝一直關注和支持我的人,好久沒更新博客了,今天逛了一下發現多了很多關注。所以寫篇博客壓(填)壓(下)驚(坑)!


前段時間看了一本騰訊出的自動化測試Android的書籍,至於爲什麼會看書,因爲最近窮。古人云:“書中自有黃金屋”。看完後還是窮,不知道是不是看的方式不對,並沒有發現黃金。[/苦笑]
既然看了書,今天就來說說和書上無關的東西吧!
以前很少關注測試這一塊,最多也就做做單元測試,自動化測試都是給測試組去完成。
什麼是自動化測試,網上很多解釋,總結起來就一句話,模擬人的操作,對應用完成測試。提到自動化測試,有很多成熟而且很好用的測試框架,今天我這裏只說兩個Android自帶的自動化測試框架(因爲這段時間研究這兩個發現很多資料上面有坑)。



1.Monkey
這個框架很簡單。不僅僅是實現起來簡單,測得功能也很簡單,基本就只能模仿手指亂點,主要測試應用的抗壓性俗稱壓力測試。
它是基於shell運行在設備上的
執行方式:
-->命令行到你的..\platform-tools目錄下並且在shell下輸入如下:
monkey -p [包名] -v [模擬點擊次數]
回車


此時你可以看你的模擬器或者真機,會出現一頓亂點的現象(前提是你的包名是對的);
這時候就說明你已經完成了自動化測試了,此處可以暫時裝下逼!
Monkey就是這麼簡單,操作簡單,測得功能也簡單,但是能幫你測出很多問題。


2.MonkeyRunner
看名字就知道,與上面Monkey是兩個兄弟。簡直不要太聰明,暗爽一下,膜拜自己3秒!好了,其實並不是,這兩個差別很大。不信你看!
MonkeyRunner是運行在是在工作站上通過API定義的特定命令和事件控制設備或模擬器。怎麼理解,就是它是運行在你的電腦上面的,可以在你的電腦上面通過命令來控制你的手機或者模擬器完成各種操作。這也就說明,你的電腦必須有Java環境。這僅僅還不夠,因爲它可以用Python腳本來做批處理,所以你還要安裝Python。
你是不是覺得作爲一名正宗的24k純Android程序猿,還要我去學Python?不用擔心,那些都是很基本的,而且我這種技術那麼爛的都能看懂一二,你們就可以放心大膽的去使用了。就算不會,我們有程序員三大寶劍嘛,搜索然後ctrl+c、ctrl+v,改一下里面的的路徑啥的,完美收工。
但是,有坑有坑有坑有坑,爲什麼說四遍,因爲我被坑了。
首先網上很多資料都是默認把你的Monkeyrunner可以正常運行來處理的:
定位到你的..\tools目錄,直接輸入monkeyrunner 然後你就可以按照命令來控制你的模擬器或者手機了,也或者是你編寫了(網上搜了)個腳本monkeyrunner [你的腳本] 來執行一些操作。正常情況是這樣的,但是我這就出現了不正常的情況,WTF,我的tools下沒有Monkeyrunner這個東西。

當我輸入Monkeyrunner直接提示:


無fuck說,我就請教三劍客,基本是沒有什麼有用的信息。國內的網站(百度)答案基本都是抄的。
最後,想到既然是android自帶的,不應該我這裏沒有,難道我的是盜版sdk?開源的也盜版?我笑出了聲,旁邊大哥以爲我神經病!我就在我的sdk下用了全局搜索

搜到了這幾個.py結尾的你們肯定沒有,是不是?因爲這是我寫的python文件。不過那幾個你們肯定有,找到.bat。右鍵查看詳情,你會發現它並沒有在..\tools下而是在..\tools\bin下面。找到了,開瓶82年雪碧慶祝一下,於是我又到bin下面使用monkeyrunner
error:Unable ro access jarfile ..\framework\archquery.jar
SWT folder '..\framework' does not exist
Please set ANDROID_SWT to point to the folder containing swt.jar for your platrorm



 呵呵呵呵,82年的雪碧直接扔垃圾桶了,浪費了一瓶82年的雪碧。
 這裏沒用圖片是方便大家複製粘貼這個錯誤信息查詢,我是敲出來的,因爲命令行裏面的我不知道怎麼複製。
 如果你查詢了,會有很多答案,但是我沒看到一個有用的。至少這時候不是提示“不是內部或外部命令”了說明我們找到了,詳細看這個錯誤信息,其實就可以發現問題,基本就是某個路徑錯誤,找不到路徑下的文件。
 然後我就用Editplus打開了這個monkeyrunner.bat文件:
 
 打開過的同學會發現跟你們的不一樣,你們上面還有很多rem開頭的行,其實我的也有。但是猜得到,那些肯定是註釋,所以就沒截圖了。
 直接看這些代碼,仔細讀會發現語法不懂,但是邏輯基本是你理解的那樣,沒錯,大概意思就是:
 判斷有沒有這個文件,沒有就賦值。到最後沒有就直接打印錯誤,你會發現最後面那幾句,就跟上面那錯誤信息一樣,只是替換了佔位符。

 於是我試探性的改了一下:

if exist %frameworkdir%\%jarfile% goto JarFileOk
    set frameworkdir=..\framework
改成了:
if exist %frameworkdir%\%jarfile% goto JarFileOk
    set frameworkdir=..\lib

保存,運行Monkeyrunner,提示是找不到..\framework下的jar,而不再是上面那種提示了。
你會發現確實底下還有一行包含了:..\framework 這個,既然前面替換成了lib可以,所以我就想都沒想替換成..\lib,結果報錯。
然後我就在lib的同級創建了一個叫framework的文件夾,並且把monkeyrunner.bat所有修改還原,記住所有修改,這是添加後的文件圖:

這是再次運行Monkeyrunner,提示的錯誤是在你創建的這個framework中沒發現一個文件monkeyrunner_x_x_x.jar。但是在lib中有,這是我直接把lib裏面的素有文件都複製到了剛剛創建的Framework中,運行Monkeyrunner:

成功了,這次真的成功了,於是首先我是把垃圾桶那瓶82年的雪碧又撿起來了。可能有些同學會提示什麼adb.exe沒找到的錯誤,息怒,繼續往下面看。
當然我還做了一步,是把Platform-tools中的adb.exe複製到了framework文件夾;


坑填了,你可以去使用monkeyrunner測試你自己的應用了,腳本可以去搜,很多的。


最近有位出版社的編輯私信我,要我寫書,但是還是擔心自己能力不夠,看過很多書,很多都是打着高級進階的幌子講解一些皮毛。本人也確實想寫一本高級進階的乾貨書籍。還在策劃中,如果寫了,希望大家支持。







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