monkey使用

来源:http://www.cnblogs.com/wanghaihong200/archive/2017/11/15/7838933.html
-Advertisement-
Play Games

一、Monkey測試原理:Monkey是Android中的一個命令行工具,可以運行在模擬器里或實際設備中。它向系統發送偽隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實現對正在開發的應用程式進行壓力測試。Monkey測試是一種為了測試軟體的穩定性、健壯性的快速有效的方法。 二、測試準備 1 ...


一、Monkey測試原理:Monkey是Android中的一個命令行工具,可以運行在模擬器里或實際設備中。它向系統發送偽隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實現對正在開發的應用程式進行壓力測試。Monkey測試是一種為了測試軟體的穩定性、健壯性的快速有效的方法。

二、測試準備

1、首先需要將手機連接到PC,測試連接是否正常,可在cmd里輸入adb devices來進行驗證;

2、因測試多針對一個特定的APP包,所以需要知道需要測試包的包名;可以直接問開發,也可以通過 adb shell pm list packages  列出所有包名來進行查找

(不確定包是否已安裝,可以用adb shell pm list packages [options] <INTENT> 來進行確認,它的含義是列舉出所有包含<INTENT>的package。    e.g. adb shell pm list packages com.taobao.taobao)

3、對特定APP包進行測試的命令為adb shell monkey -p <pakage.name>

三、Monkey參數

常規類參數

1、 -help

作用:列出簡單的用法

例:adb shell monkey -help   也可不寫help

2、-v

作用:命令行上的每一個-v都將增加反饋信息的詳細級別。
Level0(預設),除了啟動、測試完成和最終結果外只提供較少的信息。
Level1,提供了較為詳細的測試信息,如逐個發送到Activity的事件信息。
Level2,提供了更多的設置信息,如測試中選中或未選中的Activity信息。

比較常用的是-v -v -v,即最多詳細信息,一般會保存到指定文件中供開發人員查找bug原因時使用。

例:adb shell monkey -v 10

事件類參數

1、-s <seed>

作用:偽隨機數生成器的seed值。如果用相同的seed值再次運行monkey,將生成相同的事件序列。

例:adb shell monkey -s 1483082208904 -v 10

2、--throttle <milliseconds>

作用:在事件之間插入固定的時間(毫秒)延遲,你可以使用這個設置來減緩Monkey的運行速度,如果你不指定這個參數,則事件之間將沒有延遲,事件將以最快的速度生成。

註:常用參數,一般設置為300毫秒,原因是實際用戶操作的最快300毫秒左右一個動作事件,所以此處一般設置為300毫秒。

例:adb shell monkey --throttle 300 -v 10

3、--pct-touch <percent>

作用:調整觸摸事件的百分比。(觸摸事件是指在屏幕中的一個down-up事件,即在屏幕某處按下並抬起的操作)

註:常用參數,此參數設置要適應當前被測應用程式的操作,比如一個應用80%的操作都是觸摸,那就可以將此參數的百分比設置成相應較高的百分比。

例:adb shell monkey --pct-touch 100 -v 10

4、--pct-motion <percent>

作用:調整motion事件百分比。(motion事件是由屏幕上某處一個down事件、一系列偽隨機的移動事件和一個up事件組成)
註:常用參數,需註意的是移動事件是直線滑動
例:adb shell monkey --pct-motion 100 -v 10

5、--pct-trackball <percent>
作用:調整滾動球事件百分比。(滾動球事件由一個或多個隨機的移動事件組成,有時會伴隨著點擊事件)
註:不常使用參數,現在手機幾乎沒有滾動球,但滾動球事件中包含曲線滑動事件,在被測程式需要曲線滑動時可以選用此參數。
例:adb shell monkey --pct-trackball 100 -v 10

6、--pct-nav <percent>
作用:調整基本的導航事件百分比。(導航事件由方向輸入設備的上下左右按鍵所觸發的事件組成)
註:不常用操作。
例:adb shell monkey --pct-nav 100 -v 10

7、--pct-majornav <percent>
作用:調整主要導航事件的百分比。(這些導航事件通常會導致UI界面中的動作事件,如5-way鍵盤的中間鍵,回退按鍵、菜單按鍵)
註:不常用操作。
例:adb shell monkey --pct-majornav 100 -v 10

8、--pct-syskeys <percent>
作用:調整系統事件百分比。(這些按鍵通常由系統保留使用,如Home、Back、Start Call、End Call、音量調節)
註:不常用。
例:adb shell monkey --pct-syskeys 100 -v 10

9、--pct-appswitch <percent>
作用:調整Activity啟動的百分比。(在隨機的時間間隔中,Monkey將執行一個startActivity()調用,作為最大程度覆蓋被測包中全部Activity的一種方法)
註:不常用。
例:adb shell monkey --pct-appswitch 100 -v 5

10、--pct-anyevent
作用:調整其他事件的百分比。(這包含所有其他事件,如按鍵、其他在設備上不常用的按鈕等)
註:不常用。
例:adb shell monkey --pct-anyevent 100 -v 5

約束類參數

1、-p <allowed-package-name>
作用:如果你指定一個或多個包,Monkey將只允許訪問這些包中的Activity。如果你的應用程式需要訪問這些包(如選擇聯繫人)以外的Activity,你需要指定這些包。如果你不指定任何包,Monkey將允許系統啟動所有包的Activity。指定多個包,使用多個-p,一個-p後面接一個包名。
註:常用參數。(在前面測試準備中已有提及)
例:adb shell monkey -p com.Android.browser -v 10

2、-c <main-category>
作用:如果你指定一個或多個類別,Monkey將只允許系統啟動這些指定類別中列出的Activity。如果你不指定任何類別,Monkey將選擇謝列類別中列出的Activity,Intent.CATEGORY_LAUNCHER和Intent.CATEGORY_MONKEY。指定多個類別使用多個-c,每個-c指定一個類別。
註:不常用。

3、--dbg-no-events
作用:設置此選項,Monkey將執行初始啟動,進入一個測試Activity,並不會在進一步生成事件。為了得到最佳結果,結合參數-v,一個或多個包的約束,以及一個保持Monkey運行30秒或更長時間的非零值,從而提供了一個可以監視應用程式所調用的包之間轉換的環境。
註:不常用。

4、--hprof
作用:設置此選項,將在Monkey生成事件序列前後生成profilling報告。在data/misc路徑下生成大文件(~5Mb),所以要小心使用。
註:不常用。

5、--ignore-crashes
作用:通常,應用發生崩潰或異常時Monkey會停止運行。如果設置此項,Monkey將繼續發送事件給系統,直到事件計數完成。
註:常用。

6、--ignore-timeouts
作用:通常,應用程式發生任何超時錯誤(如“Application Not responding”對話框)Monkey將停止運行,設置此項,Monkey將繼續發送事件給系統,直到事件計數完成。
註:常用。

7、--ignore-security-exception 
作用:通常,當程式發生許可錯誤(例如啟動一些需要許可的Activity)導致的異常時,Monkey將停止運行。設置此項,Monkey將繼續發送事件給系統,直到事件計數完成。
註:常用。

8、--kill-process-after-error
作用:通常,當Monkey由於一個錯誤而停止時,出錯的應用程式將繼續處於運行狀態。設置此項,將會通知系統停止發生錯誤的進程。註意,正常(成功)的結束,並沒有停止啟動的進程,設備只是在結束事件之後簡單的保持在最後的狀態。

9、--monitor-native-crashes

作用:監視並報告Andorid系統中本地代碼的崩潰事件。如果設置--kill-process-after-error,系統將停止運行。

10、--wait-dbg

作用:停止執行中的Monkey,直到有調試器和它相連接。

 

Monkey 實例

用monkey 命令 對上海公交 app進行 性能測試
adb shell monkey –p com.shjt.map –-throttle 100 –-pct-touch 50 –-pct-motion 50 –v –v 1000 >c:\monkey.txt

 

 

Monkey 查看包名

手機中安裝APK包名查看器  

源碼下的AndroidManifest.xml文件查看  
aapt命令查看  


 

 

Monkey  日誌分析

正常情況,  如果Monkey測試順利執行完成, 在log的最後, 會列印出當前執行事件的次數和所花費的時間; // Monkey finished 代表執行完成\

 

異常情況

Monkey 測試出現錯誤後,一般的分析步驟
看Monkey的日誌 (註意第一個swith以及異常信息等)
1. 程式無響應的問題: 在日誌中搜索 “ANR”
2. 崩潰問題:在日誌中搜索 “Exception”   (如果出現空指針, NullPointerException)  肯定是有bug

Monkey 執行中斷, 在log最後也能看到當前執行次數

 

必須重視Crash

 

雖然Monkey測試有部分缺陷,我們無法準確地得知重現步驟, Monkey測試所出現的NullPointException,  都是可以在用戶使用時出現的, 何時出現只是時間問題

理論上來說,  Monkey所有的Crash 都需要在發佈前修複掉


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、二級制操作優於Math 如: 2、慎用|| 大量運用if(x null){ x={} } 優於x=x||{} 3、switch 性能優於if...else if... ...
  • 這篇文章主要介紹了jQuery學習筆記之Ajax用法,結合實例形式較為詳細的分析總結了jQuery中ajax的相關使用技巧,包括ajax請求、載入、處理、傳遞等,需要的朋友可以參考下 本文實例講述了jQuery學習筆記之Ajax用法。分享給大家供大家參考,具體如下: 原文鏈接:https://yq. ...
  • 貪吃蛇的經典玩法有兩種: 第一種是筆者小時候在掌上游戲機最先體驗到的(不小心暴露了年齡),具體玩法是蛇吃完一定數量的食物後就通關,通關後速度會加快;第二種是諾基亞在1997年在其自家手機上安裝的游戲,它的玩法是吃到沒食物為止。筆者要實現的就是第二種玩法。 MVC設計模式 基於貪吃蛇的經典,筆者在實現 ...
  • 使用chrome瀏覽器選擇記住密碼的賬號,輸入框會自動加上黃色的背景,有些設計輸入框是透明背景的,需要去除掉這個黃色的背景; 方法1:陰影覆蓋 由於是設置顏色覆蓋,所以只對非透明的純色背景有效; 方法2:修改chrome瀏覽器渲染黃色背景的時間 完美解決 ...
  • activity生命周期知識點整理 Activity: 是一個應用組件,用戶可與其提供的屏幕進行交互。視窗通常會充滿屏幕,但也可以小於屏幕並浮動在其他視窗之上。 一個activity的什麼周期: 啟動運行狀態( onCreat() onStart() onResume() ) 暫停狀態( onPau ...
  • 1.發簡訊 頭文件 頭部代理 發送信息 代理方法實現 2.撥打電話 3.發送郵件 4.發送QQ消息 ...
  • 今天博客的內容就系統的討論一下Masonry對FSP的影響,以及如何更好的使用Masonry。如果你對iOS開發足夠熟悉的話,那麼對Masonry框架應該不陌生。簡單的說,Masonry的誕生讓AutoLayout的使用更為優雅,讓控制項的佈局更為方便。使用辯證的觀點來看一個事物的話,凡事都有兩面性, ...
  • 我們經常使用github上的開源項目,使用步驟也很簡單 比如: 這裡就學習一下如何將自己的類庫做出這種可以供他人使用的開源項目。 一、Android studio項目準備 這時候我們想寫了一個自定義控制項,想要傳到github上讓別人使用。 1、先在該項目下創建一個Module 2、選擇Android ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...