手把手帶你,用Python寫一個Monkey自動化測試腳本?。?!
一、為什么需要一個測試腳本?
之前講解了 Android Monkey 命令的使用方式,今天趁著還熱乎就手把手用 Monkey 寫一個壓力測試的腳本。還不了解什么是 Monkey 的,可以看看之前的文章,《關(guān)于 Monkey ,你所需要知道的,都在這里!??!》。
Monkey說到底其實就是一段命令,只能在有限的范圍內(nèi)做一些隨機事件的壓力測試??梢院苊黠@看到它的一些缺點:
- 前期準(zhǔn)備工作太多,需要把設(shè)備準(zhǔn)備好、安裝好待測Apk。
- 無法做到無干預(yù)的循環(huán)。類似沒人看著去測試一夜的情況。
- 對一些在測試情況下,各項狀態(tài)的監(jiān)控并不好。
那么,這些問題,其實都可以使用一個腳本來解決問題。
Monkey 命令其實就是在命令行中執(zhí)行的命令,所以腳本語言基本上都可以完成這個任務(wù),這里選擇主流的 Python 來完成。
二、如何設(shè)計壓測腳本
既然是一個完整的腳本,那么當(dāng)然需要滿足一些最基本的需求。
包括:
- 可以自動安裝待測試 apk。
- 可以循環(huán)執(zhí)行腳本,并且每次都退出 App 重新執(zhí)行。
- 在執(zhí)行完成之后,可以輸出測試報告。
- 變動的參數(shù),可以讓測試人員自行配置。
一個簡單的測試腳本,包括這些基本上就足夠了。
三、動手寫腳本
編寫完成之后,Python 的項目結(jié)構(gòu)大概是這樣子的。
項目的結(jié)構(gòu)大概如下:
- apk 目錄:用于存放待測試的 Apk。
- bugreport_out 目錄:用于存放測試完成輸出的報告。
- .config:壓力測試的配置信息文件。
- chkbugreport.jar:輸出測試報告的工具。
- runmonkey.py:真正需要執(zhí)行的 Python 腳本。
- start.bat:為測試準(zhǔn)備一個點擊就可以執(zhí)行的 bat 腳本。
了解了項目的結(jié)構(gòu)之后,就可以開始編寫 Python 腳本了。
1、編寫配置文件和讀取配置文件
首先看看 .config 配置文件。
在配置文件里,主要配置待測試的設(shè)備 ID、循環(huán)執(zhí)行次數(shù),和每次循環(huán)的時候點擊的次數(shù)。
這樣設(shè)計,基本上可以通過 execcount 和 monkeyclickcount 兩個參數(shù),配置所需要執(zhí)行多久的一個壓測方案。
接下來就需要一個方法去讀配置文件。
2、安裝待測試apk
一般測試都是會測試同一個apk產(chǎn)品,所以這里寫死apk的文件名。直接通過os.popen()這個 Python 的方法執(zhí)行 adb 腳本。
3、殺掉待測app
為了讓每次循環(huán)都是新的一個測試任務(wù),保持測試環(huán)境的趕緊,需要一個方法在每次循環(huán)之前,殺掉之前正在運行的待測 App。
4、生成測試報告
生成測試報告主要依賴 chkbugreport.jar 這個工具,它會根據(jù) bugreport 獲得的文件內(nèi)容,生成測試報告。
bugrepor t的用法:
- adb shell bugreport > .\bugreport.txt
而 chkbugreport.jar 是一個 java 編寫的工具,直接通過java -jar 執(zhí)行即可
完整的代碼如下:
5、開始執(zhí)行Monkey腳本
做完準(zhǔn)備工作,就需要一個方法來執(zhí)行我們配置好的 Monkey 腳本。
各項參數(shù)的配置,不明白的看看昨天的文章吧。
6、開始調(diào)用準(zhǔn)備好的方法
準(zhǔn)備工作已經(jīng)完成,接下來將這些準(zhǔn)備好的方法,組合起來,用一個 for 循環(huán)完成腳本的執(zhí)行。
四、為測試人員準(zhǔn)備一個bat
做完這些,基本上就算是把主要功能完成了。執(zhí)行下面的命令,就可以跑起來了。
- python runmonkey.py
但是終歸這個腳本是要給測試用的,***還是提供一個點擊可用的bat腳本。
新建一個 start.bat 文件,把上面的命令保存進(jìn)去就行。
下面看看執(zhí)行起來的樣子。
這里配置了循環(huán)三次,所以最終從 Log 中可以看到,確實執(zhí)行三次之后,生成測試報告,并且退出測試。
五、生成的測試報告
chkbugreport.jar 可以通過生成的 bugreport 的內(nèi)容,生成我們需要的測試報告。
從上面的截圖可以看到,其實它會是一個網(wǎng)頁,輸出的內(nèi)容非常的齊全。
六、多說兩句
其實這個 Monkey 的壓力測試腳本,已經(jīng)滿足測試的基本要求。但是實際上,生成的測試報告,不太好查看。通常封裝成成熟的產(chǎn)品的App,都會集成第三方Bug監(jiān)控的服務(wù),例如:Bugly、友盟什么的。所以可以不依賴 bugreport 生成的測試報告,直接在打測試包的時候,生成一個測試渠道的 apk ,用它來測試,這樣在第三方服務(wù)提供的網(wǎng)站上,可以清晰看到測試的報告。
七、完整的Demo
完整的 Demo 請關(guān)注 承香墨影 的公眾號,回復(fù)關(guān)鍵詞:“monkey腳本”獲得。
【本文為51CTO專欄作者“張旸”的原創(chuàng)稿件,轉(zhuǎn)載請通過微信公眾號聯(lián)系作者獲取授權(quán)】