手把手帶你,用 Python 寫一個 Monkey 自動化測試腳本!!!

2021-02-24 承香墨影



正文共: 2071字 11圖

預計閱讀時間: 6分鐘

一、為什麼需要一個測試腳本?

之前講解了 Android Monkey 命令的使用方式,今天趁著還熱乎就手把手用 Monkey 寫一個壓力測試的腳本。還不了解什麼是 Monkey 的,可以看看之前的文章,《關於 Monkey ,你所需要知道的,都在這裡!!!》。

Monkey說到底其實就是一段命令,只能在有限的範圍內做一些隨機事件的壓力測試。可以很明顯看到它的一些缺點:

前期準備工作太多,需要把設備準備好、安裝好待測Apk。

無法做到無幹預的循環。類似沒人看著去測試一夜的情況。

對一些在測試情況下,各項狀態的監控並不好。

那麼,這些問題,其實都可以使用一個腳本來解決問題。

Monkey 命令其實就是在命令行中執行的命令,所以腳本語言基本上都可以完成這個任務,這裡選擇主流的 Python 來完成。

二、如何設計壓測腳本

既然是一個完整的腳本,那麼當然需要滿足一些最基本的需求。

包括:

可以自動安裝待測試 apk。

可以循環執行腳本,並且每次都退出 App 重新執行。

在執行完成之後,可以輸出測試報告。

變動的參數,可以讓測試人員自行配置。

一個簡單的測試腳本,包括這些基本上就足夠了。

三、動手寫腳本

編寫完成之後,Python 的項目結構大概是這樣子的。

項目的結構大概如下:

apk 目錄:用於存放待測試的 Apk。

bugreport_out 目錄:用於存放測試完成輸出的報告。

.config:壓力測試的配置信息文件。

chkbugreport.jar:輸出測試報告的工具。

runmonkey.py:真正需要執行的 Python 腳本。

start.bat:為測試準備一個點擊就可以執行的 bat 腳本。

了解了項目的結構之後,就可以開始編寫 Python 腳本了。

1、編寫配置文件和讀取配置文件

首先看看 .config 配置文件。

在配置文件裡,主要配置待測試的設備 ID、循環執行次數,和每次循環的時候點擊的次數。

這樣設計,基本上可以通過 execcount 和 monkeyclickcount 兩個參數,配置所需要執行多久的一個壓測方案。

接下來就需要一個方法去讀配置文件。

2、安裝待測試apk

一般測試都是會測試同一個apk產品,所以這裡寫死apk的文件名。直接通過os.popen()這個 Python 的方法執行 adb 腳本。

3、殺掉待測app

為了讓每次循環都是新的一個測試任務,保持測試環境的趕緊,需要一個方法在每次循環之前,殺掉之前正在運行的待測 App。

4、生成測試報告

生成測試報告主要依賴 chkbugreport.jar 這個工具,它會根據 bugreport 獲得的文件內容,生成測試報告。

bugrepor t的用法:

adb shell bugreport > .\bugreport.txt

而 chkbugreport.jar 是一個 java 編寫的工具,直接通過java -jar 執行即可

完整的代碼如下:

5、開始執行Monkey腳本

做完準備工作,就需要一個方法來執行我們配置好的 Monkey 腳本。

各項參數的配置,不明白的看看昨天的文章吧。

6、開始調用準備好的方法

準備工作已經完成,接下來將這些準備好的方法,組合起來,用一個 for 循環完成腳本的執行。

四、為測試人員準備一個bat

做完這些,基本上就算是把主要功能完成了。執行下面的命令,就可以跑起來了。

python runmonkey.py

但是終歸這個腳本是要給測試用的,最好還是提供一個點擊可用的bat腳本。

新建一個 start.bat 文件,把上面的命令保存進去就行。

下面看看執行起來的樣子。

這裡配置了循環三次,所以最終從 Log 中可以看到,確實執行三次之後,生成測試報告,並且退出測試。

五、生成的測試報告

chkbugreport.jar 可以通過生成的 bugreport 的內容,生成我們需要的測試報告。

從上面的截圖可以看到,其實它會是一個網頁,輸出的內容非常的齊全。

六、多說兩句

其實這個 Monkey 的壓力測試腳本,已經滿足測試的基本要求。但是實際上,生成的測試報告,不太好查看。通常封裝成成熟的產品的App,都會集成第三方Bug監控的服務,例如:Bugly、友盟什麼的。所以可以不依賴 bugreport 生成的測試報告,直接在打測試包的時候,生成一個測試渠道的 apk ,用它來測試,這樣在第三方服務提供的網站上,可以清晰看到測試的報告。

七、完整的Demo

完整的 Demo 請關注 承香墨影 的公眾號,回復關鍵詞:「monkey腳本」獲得。

今天在承香墨影公眾號的後臺,回復『成長』。我會送你一些我整理的學習資料,包含:Android反編譯、算法、設計模式、Web項目源碼。

推薦閱讀:



聽說喜歡留言的人,運氣都不會太差~

點擊『閱讀原文』查看更多精彩內容

相關焦點

  • 用於全棧自動化測試的最佳Python工具!
    Splinter是一個使用Python測試web應用程式的開源工具。它允許您自動化瀏覽器操作,例如訪問url並與它們的項進行交互。它使得編寫python Selenium測試更容易,因為它有一個高級API,可以讓您更容易地為瀏覽器應用程式開發自動化腳本。  如果您想使用Python進行測試自動化,那麼使用Robot框架是不會出錯的。
  • 實戰 | UI 調度自動化測試平臺(基於 Python)
    測試開發之 UI 自動化測試平臺最佳實踐,進階學習文末加群!
  • Android APP自動化測試框架實戰
    ,所以我們在寫腳本的時候就會相對容易的碰到更多的問題,如果有一個成熟的框架供給我們使用的話,可以幫助我們避免一些問題,在腳本編寫過程中經常遇到的問題:1.代碼混亂,難閱讀;2.重複編碼,效率低;3.需求變化,難維護。
  • 手機 App 電量分析:Monkey 性能測試工具的基本操作
    大致操作流程:通過名為「monkey」的Shell腳本去啟動Monkey.jar程序(shell腳本在Android文件系統中 的存放路徑是:/system/bin/monkey),在你指定的APP應用上模擬用戶點擊,滑動,輸入等操作以極快的速度來對設備程序進行壓力測試,檢測程序是否會發生異常,然後通過日誌進行排錯。主要目的:測試app 是否會是否會Crash。
  • 微軟最強 Python 自動化工具開源了!不用寫一行代碼!
    前言 最近,微軟開源了一款非常強大的 Python 自動化依賴庫:playwright-python 它支持主流的瀏覽器,包含:Chrome、Firefox、Safari、Microsoft Edge 等,同時支持以無頭模式、有頭模式運行 playwright-python 提供了同步、異步的
  • Python 題庫自動化面試題
    23、測試中遇到 readonly 屬性的控制項,需要如何處理?簡述一下思路 24、需求:給定一個只包含正整數且非空的數組,返回該數組中重複次數最多的前N個數字(返回結果按重複次數從多到少降序), 請用熟悉的語言實現該需求。10分鐘內寫出來
  • Python|自動化測試與if __name__==「__main__」
    問題描述最近有小夥伴在學習python自動化測試的時候遇到了一個問題,下面我直接奉上代碼。解決方案若要讓此程序執行很簡單只需在最後一行代碼unittest.main()前加一行代碼if__name__==」__main__」:方可執行。
  • uiautomator2+python自動化測試1-環境準備
    前言uiautomator是Google提供的用來做安卓自動化測試的一個Java庫。功能很強,可以對第三方App進行測試,獲取屏幕上任意一個APP的任意一個控制項屬性,並對其進行任意操作,但有兩個缺點:測試腳本只能使用Java語言測試腳本必須每次被上傳到設備上運行。
  • 如何用python寫遊戲腳本?
    很多人學習python,不知道從何學起。很多人學習python,掌握了基本語法過後,不知道在哪裡尋找案例上手。很多已經做案例的人,卻不知道如何去學習更加高深的知識。那麼針對這三類人,我給大家提供一個好的學習平臺,免費領取視頻教程,電子書籍,以及課程的原始碼!
  • Python自動化測試踩坑記錄(企業中如何實施自動化測試)
    作為軟體測試這個行業,在當下,你學好自動化,你去哪面試都不怕。說是這麼說,但是你想提前下班,自動化測試解放勞動力、提高效率,讓程序腳本在不需要看守的情況下「起飛」如果你的代碼、腳本掉到了坑裡,你覺得你還能提前下班嗎?有可能,你甚至不如別人做功能測試的。別人一個功能都測試完好久了,你的自動化腳本報了一堆錯,還不知道找這個錯誤的原因。
  • 接口自動化測試與Tesla自動化測試平臺
    「執行」提供全面的http、rpc協議(from thrift)的支持;提供基於python的前置準備腳本,以及後置校驗腳本的能力。【特有能力】「測試用例多分支」測試用例可以具備分支的屬性,等同於代碼的分支屬性,可以進行checkout與merge。
  • monkey測試.
    介紹下這種類型測試的monkey測試。什麼是monkey測試Monkey直譯為『猴子』,猴子和測試人員本質區別就是猴子不知道業務邏輯,猴子可以理解為完全不懂業務知識也沒有測試相關經驗的的人員,在對於同樣一個項目而言,monkey測試就是對項目各種無目的事件操作。
  • APP UI自動化測試,思路全總結在這裡了
    一般我們會選擇自己熟悉的程式語言來編寫自動化腳本,但對於編程基礎基本為0的童鞋(或者專注於做自動化測試的童鞋),推薦學習使用Python。相對於其他語言,Python做自動化測試有以下優點:選擇開發語言之後,我們需要選擇UI測試框架。目前較為主流或者使用較多的APP UI自動化測試框架有Appium、Airtest等。
  • ZenTaoATF 1.0 發布,禪道自動化測試框架
    ZenTaoATF只有一個腳本文件,可以支持各種腳本語言編寫的自動化測試腳本,語法簡單,使用靈活,後續會和禪道項目管理軟體進行綁定和集成。 它的基本工作原理如下: 首先,你需要寫一個測試腳本來實現你正常的測試邏輯。現在支持php, python, ruby, lua, tcl, bash。
  • 自動化測試學習路線
    第一,不寫代碼當然可以做自動化測試,但是個人建議還是學習一門語言,至於學習什麼語言的話,很簡單,不用糾結,第一看你是否有編程基礎,沒有選py,有的話選java py都可第二需要看你們的開發用的什麼語言,和開發用同一門語言能在學習自動化測試的同時,降低你和開發之間溝通的門檻,提升你在公司的話語權。第三,學習哪個方向?
  • 自動化測試面試題(附答案)
    對自動化的理解?答:(junit、unittest、testng、 pytest ,優先python語言,用過pytest或unittest框架的;只會selenium能力較弱)2、使用什麼測試框架做的上一個項目的自動化測試?說下怎麼做的?對自動化的理解?
  • APP UI自動化測試思路總結
    接下來,一起總結一下APP UI自動化測試的思路吧。一,開發語言選擇通常用於自動化測試的程式語言有:Python、Java、Javascript、Ruby、C#、PHP等。一般我們會選擇自己熟悉的程式語言來編寫自動化腳本,但對於編程基礎基本為0的童鞋(或者專注於做自動化測試的童鞋),推薦學習使用Python。
  • 測試 | 如何用 Python 測試 Android 應用
    /p/8486863.html介紹uiautomator2 是一個可以使用Python對Android設備進行UI自動化的庫。其底層基於Google uiautomator,Google提供的uiautomator庫可以獲取屏幕上任意一個APP的任意一個控制項屬性,並對其進行任意操作,但有兩個缺點:1、測試腳本只能使用Java語言。2、測試腳本必須每次被上傳到設備上運行。 我們希望測試能夠用一個更腳本化的語言,例如Python編寫,同時可以每次所見即所得地修改測試、運行測試。
  • Python自動化用這些知識點就夠了!
    python基礎能做這些的前提是會使用Python,最起碼要熟悉基本語法,可以編寫小腳本。對於python語法的要求,你可以對照python基礎教程的部分查看需要學那些,找個免費視頻教程跟著學,然後多敲代碼練習。如果習慣看書的話,可以買本python入門書備查。
  • iOS自動化第一講(原創連載金陽光視頻學習筆記)
    如果大家對本套課程有什麼建議或者疑問,歡迎留言討論。1. 熟悉js腳本(必須)Mac自帶(Xcode上集成)的自動化測試工具Instruments,只能通過js腳本來執行自動化測試,而不兼容其他python,shell腳本,所以必須要熟悉js腳本。不過js和java用法比較接近,如果會java的話,這個就不用刻意去學了。2.