實用測試技能分享:APP壓力穩定性測試之Monkey入門實戰
Monkey測試簡介
在android手機上做自動化測試,monkey比cts,Android UnitTest 好用多了,他其實是繼承與adb shell中的一段的shell指令。
monkey測試的相關的原理
monkey測試的原理就是利用socket通訊的方式來模擬使用者的按鍵輸入,觸控式螢幕輸入,手勢輸入等,看裝置多長時間會出異常。當Monkey程式在模擬器或裝置執行的時候,如果使用者出發了比如點選,觸控,手勢或一些系統級別的事件的時候,它就會產生隨機脈衝,所以可以用Monkey用隨機重複的方法去負荷測試你開發的軟體。
Monkey的一般使用步驟
1.先確認裝置(模擬器或者真機)是否連線成功。命令:adb devices,出現裝置號則表示連線成功。
2.確定待測應用的包名。參考如下
1)開啟CMD命令列
2)adb shell進入shell介面,透過檢視data/data下的程式包,根據關鍵字查詢包名
3.執行monkey測試命令
adb shell monkey -p your.package.name --pct-touch 30 --ignore-crashes --ignore-timeouts--throttle 250 -s 2 -v -v -v 5000000
Monkey的常見命令
1:常用選項
--help:列印幫助資訊
-v:指定列印資訊的詳細級別,一個 -v增加一個級別 , 預設級別為 0 。-v -v -v 為最詳細日誌。
2:事件選項
-s:指定產生隨機事件種子值,相同的種子值產生相同的事件序列。如: -s 200
--throttle:每個事件結束後的間隔時間——降低系統的壓力(如不指定,系統會盡快的傳送事件序列)。如:--throttle 100
--pct-touch:指定觸控事件的百分比,如:--pct-touch 5% , 相關的還有以下option:
--pct-motion <percent> (滑動事件)
--pct-trackball <percent> (軌跡球事件)
--pct-nav <percent> (導航事件 up/down/left/right)
--pct-majornav <percent> (主要導航事件 back key 、 menu key)
--pct-syskeys <percent> (系統按鍵事件 Home 、Back 、startCall 、 endCall 、 volumeControl)
--pct-appswitch <percent> (activity之間的切換)
--pct-anyevent <percent>(任意事件)
3:約束選項
-p:指定有效的package(如不指定,則對系統中所有package有效),一個-p 對應一個有效package, 如:-p com.ckt -p com.ckt.asura;
-c:activity必須至少包含一個指定的category,才能被啟動,否則啟動不了;
4:除錯選項
--dbg-no-events:初始化啟動的activity,但是不產生任何事件。
--hprof:指定該項後在事件序列傳送前後會立即生成分析報告 —— 一般建議指定該項。
--ignore-crashes:忽略崩潰
--ignore-timeouts:忽略超時
--ignore-security-exceptions:忽略安全異常
--kill-process-after-error:發生錯誤後直接殺掉程式
--monitor-native-crashes:跟蹤本地方法的崩潰問題
--wait-dbg:知道連線了偵錯程式才執行monkey測試。
Monkey實戰
一、monkey測試環境搭建:
執行前安裝adb(MONKEY測試使用的是ADB命令,因此只需要配置ADB環境即可。)
1.pc端下載adb命令包,解壓後放到C盤目錄下(也就是jdk,sdk,jdk安裝,sdk解壓即可,並配置環境變數,path加上platform-tools和tools的目錄路徑)
2.手機透過usb連線電腦,自動安裝usb驅動,連線成功
3.驗證adb命令能否執行
pc端進入cmd命令列---進入C:\tmg目錄下--執行adb shell,出現$符號證明adb命令執行成功,進入shell模式
二、手機設定
手機螢幕超時設定為從不關閉,防止手機進入鎖屏狀態。
以htc手機為例:進入設定-顯示--螢幕待機--設定為從不關閉。
三、執行monkey
執行方式有三種:a.pc機上 adb shell monkey +引數 b pc機輸入adb shell進入到手機的安卓裝置後再monkey+引數 C手機裝置上安裝一個模擬器手機執行monkey+引數(手機模擬器可以透過百度搜尋或360手機助手搜android terminal,安裝即可,可以在模擬器的命令列中輸入mokey +引數)
下面是第一種方法:
1.檢視包名:檢視電腦中某一位置的apk檔案的包名:PC開啟CMD-進入TMG目錄-執行裝置--檢視包名aapt dump badging *.apk(apk檔案的路徑,可以直接拖拽)。
或者直接檢視手機中存在的apk包,進入adb shell 命令後---手機的data/data資料夾--ls檢視所有包名 找到要測apk的包名
2.執行monkey,對此包進行300次無規律點選。
或者執行monkey,對此包進行300次無規律點選後將日誌匯出到電腦的某一位置
adb shell -p 包名 -v 點選數 >電腦某一位置
3、測試停止後,檢視匯出的monkey日誌,發現問題。
在log的最開始都會顯示Monkey執行的seed值、執行次數和測試的包名。
首先我們需要檢視Monkey測試中是否出現了ANR或者異常,無響應問題(ANR問題):在日誌中搜尋“ANR ”(此處有空格), 崩潰問題:在日誌中搜尋“Exception”,快速定位到關鍵事件資訊 。然後檢視Monkey裡面出錯前的一些事件動作,並手動執行該動作,找出重現步驟,給開發。
四、補充小知識:
1.如何安裝apk?
adb install xxx.apk -----為了獲取apk的安裝包所在地址,可以直接把apk拖到cmd的視窗獲取,返回success就說明安裝成功了!
2.如何將本地檔案上傳到手機端?
adb push <本機路徑> <手機路徑>
例,將本地的白名單上傳到手機端,adb push F:\whitelist.txt data/local/tmp
3.如何將日誌儲存到PC端?
adb shell monkey -v -v -v 1000 > 本機地址
例:adb shell monkey -v -v -v 1000 > d:\monkey.txt
4.日誌檢視補充
---->先把日誌輸出到本地
---->注意觀察switch後面的內容,一般錯誤都會顯示在這個後面
---->ANR問題:日誌中搜尋ANR關鍵字
---->奔潰問題:在日誌中搜尋Exception問題
歡迎加入 51軟體測試大家庭,在這裡你將獲得【最新行業資訊】,【免費測試工具安裝包】,【軟體測試技術乾貨】,【面試求職技巧】... 51與你共同學習,一起成長!期待你的加入: QQ 群: 755431660
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2564596/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 智慧支付穩定性測試實戰
- App穩定性測試APP
- Android穩定性測試-- Monkey原始碼分析Android原始碼
- app穩定性測試-iOS篇APPiOS
- Android Monkey 壓力測試 介紹Android
- Android 測試入門之---Monkey testAndroid
- Android穩定性測試-- Monkey二次開發Android
- 滲透測試對app安全測試實戰過程分享APP
- 滲透測試入門實戰
- 軟體穩定性測試的測試點
- 超實用壓力測試工具-ab工具
- APP壓力測試6--monkeyrunner實踐APP
- Android命令Monkey壓力測試,詳解Android
- 後端相關技能(六):壓力測試後端
- 讓測試事半功倍軟體壓力測試工具分享,壓力測試報告怎麼收費?測試報告
- 實用測試技能分享:jmeter+Jenkins效能測試自動化搭建JMeterJenkins
- oracle壓力測試之orastress!OracleAST
- 壓力測試工具之FIO
- 壓力測試工具之mysqlslapMySql
- 軟體壓力測試流程和測試工具分享,讓你寫壓力測試報告再也不愁測試報告
- (一)效能測試(壓力測試、負載測試)負載
- SoapUI實踐:自動化測試、壓力測試、持續整合UI
- 測試開發必備技能:安全測試漏洞靶場實戰
- 軟體測試中伺服器穩定性測試方法伺服器
- 伺服器穩定性測試方法伺服器
- 伺服器如何測試穩定性伺服器
- oracle壓力測試之orabm(二)Oracle
- oracle壓力測試之orabm(三)Oracle
- oracle壓力測試之orabm(一)Oracle
- Nginx壓力測試工具之WebBenchNginxWeb
- ORACLE壓力測試Oracle
- laravel壓力測試Laravel
- MACOSXApacheab壓力測試MacApache
- NGINX壓力測試Nginx
- mysqlslap壓力測試MySql
- 壓力測試工具
- 壓力測試平臺(nGrinder)入門到精通教程
- jmeter壓力測試實現負載均衡JMeter負載