android 回歸測試,android測試:monkey使用方法

android測試:monkey使用方法

Android Sdk給我們提供了Monkey和Monkeyrunner這兩個自動化測試工具。

一、什么是Monkey

Monkey是一個命令行工具,可以運行在模擬器里或實際設備中。

它向系統發送偽隨機的用戶事件流,實現對正在開發的應用程序進行壓力測試。

Monkey包括許多選項,它們大致分為四大類:

· 基本配置選項,如設置嘗試的事件數量。

· 運行約束選項,如設置只對單獨的一個包進行測試。

· 事件類型和頻率。

· 調試選項。

二、Monkey的基本用法

基本語法如下:

$ adb shell monkey [options]

如果不指定options,Monkey將以無反饋模式啟動,并把事件任意發送到安裝在目標環境中的全部包。

下面是一個更為典型的命令行示例,它啟動指定的應用程序,并向其發送500個偽隨機事件:

$ adb shell monkey -p your.package.name -v 500

一些常用的參數信息:

-v

命令行的每一個-v將增加反饋信息的級別。

Level 0(缺省值)除啟動提示、測試完成和最終結果之外,提供較少信息。

Level 1提供較為詳細的測試信息,如逐個發送到Activity的事件。

Level 2提供更加詳細的設置信息,如測試中被選中的或未被選中的Activity。

事件

-s

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

--throttle

在事件之間插入固定延遲。

通過這個選項可以減緩Monkey的執行速度。

如果不指定該選項,Monkey將不會被延遲,事件將盡可能快地被產成。

--pct-touch

調整觸摸事件的百分比(觸摸事件是一個down-up事件,它發生在屏幕上的某單一位置)。

--pct-motion

調整動作事件的百分比(動作事件由屏幕上某處的一個down事件、一系列的偽隨機事件和一個up事件組成)。

--pct-trackball

調整軌跡事件的百分比(軌跡事件由一個或幾個隨機的移動組成,有時還伴隨有點擊)。

--pct-nav

調整“基本”導航事件的百分比(導航事件由來自方向輸入設備的up/down/left/right組成)。

--pct-majornav

調整“主要”導航事件的百分比(這些導航事件通常引發圖形界面中的動作,如:5-way鍵盤的中間按鍵、回退按鍵、菜單按鍵)

--pct-syskeys

調整“系統”按鍵事件的百分比(這些按鍵通常被保留,由系統使用,如Home、Back、Start Call、End Call及音量控制鍵)。

--pct-appswitch

調整啟動Activity的百分比。在隨機間隔里,Monkey將執行一個startActivity()調用,作為最大程度覆蓋包中全部Activity的一種方法。

--pct-anyevent

調整其它類型事件的百分比。它包羅了所有其它類型的事件,如:按鍵、其它不常用的設備按鈕、等等。

約束限制

-p

如果用此參數指定了一個或幾個包,Monkey將只允許系統啟動這些包里的Activity。

如果你的應用程序還需要訪問其它包里的Activity(如 選擇取一個聯系人),那些包也需要在此同時指定。

如果不指定任何包,Monkey將允許系統啟動全部包里的Activity。要指定多個包,需要使用多個 -p選項,每個-p選項只能用于一個包。

-c

如果用此參數指定了一個或幾個類別,Monkey將只允許系統啟動被這些類別中的某個類別列出的Activity。

如果不指定任何類別,Monkey將選擇下列類別中列出的Activity: Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。

要指定多個類別,需要使用多個-c選項,每個-c選 項只能用于一個類別。

調試

--dbg-no-events

設置此選項,Monkey將執行初始啟動,進入到一個測試Activity,然后不會再進一步生成事件。

為了得到最佳結果,把它與-v、一個或幾個包約 束、以及一個保持Monkey運行30秒或更長時間的非零值聯合起來,

從而提供一個環境,可以監視應用程序所調用的包之間的轉換。

--hprof

設置此選項,將在Monkey事件序列之前和之后立即生成profiling報告。這將會在data/misc中生成大文件(~5Mb),所以要小心使用它。

--ignore-crashes

通常,當應用程序崩潰或發生任何失控異常時,Monkey將停止運行。

如果設置此選項,Monkey將繼續向系統發送事件,直到計數完成。

--ignore-timeouts

通常,當應用程序發生任何超時錯誤(如“Application Not Responding”對話框)時,Monkey將停止運行。

如果設置此選項,Monkey將繼續向系統發送事件,直到計數完成。

--ignore-security-exceptions

通常,當應用程序發生許可錯誤(如啟動一個需要某些許可的Activity)時,Monkey將停止運行。如果設置了此選項,Monkey將繼續向系統發送事件,直到計數完成。

--kill-process-after-error

通常,當Monkey由于一個錯誤而停止時,出錯的應用程序將繼續處于運行狀態。

當設置了此選項時,將會通知系統停止發生錯誤的進程。

注意,正常的(成功的)結束,并沒有停止啟動的進程,設備只是在結束事件之后,簡單地保持在最后的狀態。

--monitor-native-crashes

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

--wait-dbg

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

命令行的每一個-v將增加反饋信息的級別。

Level 0(缺省值)除啟動提示、測試完成和最終結果之外,提供較少信息。

Level 1提供較為詳細的測試信息,如逐個發送到Activity的事件。

Level 2提供更加詳細的設置信息,如測試中被選中的或未被選中的Activity。

三、Monkey實例測試

Windows下(注:2—4步是為了查看我們可以測試哪些應用程序包,可省略):

1、 通過eclipse啟動一個Android的emulator

2、 在命令行中輸入:adb devices查看設備連接情況

C:Documents and SettingsAdministrator>adb devices

List of devices attached

emulator-5554 device

3、 在有設備連接的前提下,在命令行中輸入:adb shell 進入shell界面

C:Documents and SettingsAdministrator>adb shell

4、 查看data/data文件夾下的應用程序包。注:我們能測試的應用程序包都在這個目錄下面

5.在其中找到我們需要測試的包名com.marshalchen.MonkeyTest1

6、 以com.marshalchen.MonkeyTest1 作為對象進行MonkeyTest

monkey -p com.marshalchen.MonkeyTest1 -v 500

其中-p表示對象包 –v 表示事件數量

運行過程中,Emulator中的應用程序在不斷地切換畫面。

按照選定的不同級別的反饋信息,在Monkey中還可以看到其執行過程報告和生成的事件。

如:Sending Pointer ACTION_DOWN x=35.0 y=259.0

:Sending Pointer ACTION_UP x=195.0 y=259.0

:Sending Pointer ACTION_DOWN x=295.0 y=223.0

:Dropped: keys=0 pointers=0 trackballs=0 flips=0

等等信息。

四、Monkey停止的條件

Monkey Test執行過程中在下列三種情況下會自動停止:

1、如果限定了Monkey運行在一個或幾個特定的包上,那么它會監測試圖轉到其它包的操作,并對其進行阻止。

2、如果應用程序崩潰或接收到任何失控異常,Monkey將停止并報錯。

3、如果應用程序產生了應用程序不響應(application not responding)的錯誤,Monkey將會停止并報錯。

通過多次并且不同設定下的Monkey測試才算它是一個穩定性足夠的程序。

MonkeyRunner 使用

Monkey的使用簡潔有效,但是總是給人感覺功能不夠強大。所以,接下來向大家介紹非常給力的工具MonkeyRunner。

一、什么是MonkeyRunner

monkeyrunner工具提供了一個API,使用此API寫出的程序可以在Android代碼之外控制Android設備和模擬器。

通過 monkeyrunner,您可以寫出一個Python程序去安裝一個Android應用程序或測試包,

運行它,向它發送模擬擊鍵,截取它的用戶界面圖片,并將截圖存儲于工作站上。

monkeyrunner工具的主要設計目的是用于測試功能/框架水平上的應用程序和設備,或用于運行單元測試套件,但您當然也可以將其用于其它目的。

monkeyrunner工具與monkey工具并無關聯。

monkey工具直接運行在設備或模擬器的adb shell中,生成用戶或系統的偽隨機事件流。

而monkeyrunner工具則是在工作站上通過API定義的特定命令和事件控制設備或模擬器。

monkeyrunner工具為Android測試提供了以下特性:

1.多設備控制:monkeyrunner

API可以跨多個設備或模擬器實施測試套件。

您可以在同一時間接上所有的設備或一次啟動全部模擬器(或統統一起),依據程序依次連接到每一個,然后運行一個或多個測試。

您也可以用程序啟動一個配置好的模擬器,運行一個或多個測試,然后關閉模擬器。

2.功能測試:

monkeyrunner可以為一個應用自動貫徹一次功能測試。

您提供按鍵或觸摸事件的輸入數值,然后觀察輸出結果的截屏。

3.回歸測試:

monkeyrunner可以運行某個應用,并將其結果截屏與既定已知正確的結果截屏相比較,以此測試應用的穩定性。

4.可擴展的自動化:

由于monkeyrunner是一個API工具包,您可以基于Python模塊和程序開發一整套系統,以此來控制Android設備。

除了使用monkeyrunner API之外,您還可以使用標準的Python os和subpress模塊來調用如adb這樣的Android工具。

您還可以向monkeyrunner API中添加您自己的類。

monkeyrunner工具使用Jython(使用Java編程語言的一種Python實現)。

Jython允許monkeyrunnerAPI與Android框架輕松的進行交互。使用Jython,您可以使用Python語法來獲取API中的常量、類以及方法。

二、一個簡單的MonkeyRunner實例

您可以直接使用一個代碼文件運行monkeyrunner,抑或在交互式對話中輸入monkeyrunner語句。

不論使用哪種方式,您都需要調用SDK 目錄的tools子目錄下的monkeyrunner命令。

如果您提供一個文件名作為運行參數,則monkeyrunner將視文件內容為Python程 序,并加以運行;否則,它將提供一個交互對話環境。

monkeyrunner的命令語法為:

monkeyrunner -plugin

monkeyrunnerbasic.py:

導入此程序所需的monkeyrunner模塊

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice

# 連接當前設備,返回一個MonkeyDevice對象

device = MonkeyRunner.waitForConnection()

# 安裝Android包,注意,此方法返回的返回值為boolean,由此您可以判斷安裝過程是否正常

device.installPackage('myproject/bin/MyApplication.apk')

# 運行此應用中的一個活動

device.startActivity(component='com.marshalchen.Monkeyrunner.MainActivity')

# 按下菜單按鍵

device.press('KEYCODE_MENU','DOWN_AND_UP')

# 截取屏幕截圖

result = device.takeSnapShot

# 將截圖保存至文件

result.writeToFile('myproject/shot1.png','png')

然后轉到$SDKTOOLS下執行 monkeyrunner monkeyrunnerbasic.py 就可執行測試了

三、常用功能的Monkeyrunner python腳本介紹:

1.輸入等基本操作測試

import sys

from com.android.monkeyrunner import MonkeyRunner as mr

from com.android.monkeyrunner import MonkeyDevice as md

from com.android.monkeyrunner import MonkeyImage as mi

connect device 連接設備

#第一個參數為等待連接設備時間

#第二個參數為具體連接的設備

device = mr.waitForConnection(1.0,'emulator-5554') if not device:

print >> sys.stderr,"fail"

sys.exit(1)

#定義要啟動的Activity

componentName='kg.monkey/.MonkeyActivity'

#啟動特定的Activity

device.startActivity(component=componentName)

mr.sleep(3.0)

#do someting 進行我們的操作

#輸入 a s d

device.type('asd')

#輸入回車

device.press('KEYCODE_ENTER')

#return keyboard 點擊返回用于取消等下看到截圖的下方的白條

#device.press('KEYCODE_BACK')

#takeSnapshot截圖

mr.sleep(3.0)

result = device.takeSnapshot()

#save to file 保存到文件

result.writeToFile('takeSnapshot\result1.png','png');

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/530233.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/530233.shtml
英文地址,請注明出處:http://en.pswp.cn/news/530233.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c語言編程季節輸出春夏秋冬,c語言編程題:?用枚類型定義春、夏、秋、冬四個季節...

滿意答案bcabcdefg2013.07.28采納率&#xff1a;49% 等級&#xff1a;12已幫助&#xff1a;5373人#includeenum season{spring 1,summer,autumn,winter,};season GetSeasonByMonth(char month){if(month < 3 && month>1)return spring;else if(month < 6 …

android fragment addtobackstack,Android Fragment Back Stack的問題

我對android片段Backstack的工作方式遇到了一個很大的問題&#xff0c;對于提供的任何幫助將不勝感激。假設您有3個片段[1] [2] [3]我希望用戶能夠導航[1] > [2] > [3]但在返回的途中(按返回按鈕)[3] > [1]。就像我想象的那樣&#xff0c;這可以通過addToBackStack(..…

華為升級harmonyos的機型名單,華為鴻蒙 OS 2.0 系統適配名單已出,四月推送,天璣機型暫時無緣...

原標題&#xff1a;華為鴻蒙 OS 2.0 系統適配名單已出&#xff0c;四月推送&#xff0c;天璣機型暫時無緣華為官方在 2020 年發布了旗下自研系統“HarmonyOS 2.0”版本&#xff0c;發布會現場展示了 HarmonyOS 2.0 開發者 Beta 版本&#xff0c;并開啟開發者 Beta 的公測。此外…

android如何實現QQ信息通知,android NotificationListenerService監聽通知欄(qq 微信 短信)...

【實例簡介】android NotificationListenerService 監聽通知欄&#xff0c;android NotificationListenerService 監聽通知欄 android NotificationListenerService 監聽通知欄【實例截圖】【核心代碼】NLsevice└── NLsevice├── AndroidManifest.xml├── bin│ ├──…

rsync android app,如何rsync到android

問題描述如何連接到我的Android設備以rsync音樂(或其他東西)&#xff1f;最佳解決思路實際上在MTP /usb上使用rsync這比每個人都說的容易&#xff0c;首先注意到當GVFS安裝MTP掛載時&#xff0c;它將在下面可用。您可以通過在圖形file-browser(thunar /nautilus /etc)中打開手機…

android 混合開發 圖片,混合開發的大趨勢之一React Native之Image

文章是寶寶自己寫的&#xff0c;你可以轉走&#xff0c;標明哪來的就行王亟亟的大牛之路國慶這些天要么旅游要么WOW&#xff0c;感覺整個人都廢了。。直接從黃種人曬成了非洲大酋長。。然而還是無橙&#xff0c;這禮拜要做7天&#xff0c;昨天把單元測試的東西整完后今天下午抽…

html5實現無縫滾動的效果,基于JavaScript實現無縫滾動效果

本文實例為大家分享了JavaScript實現無縫滾動效果展示的具體代碼&#xff0c;供大家參考&#xff0c;具體內容如下首先應該區分樣式中的絕對定位和相對定位&#xff0c;一般來說&#xff0c;移動的單位為絕對定位&#xff0c;在這個實例中&#xff0c;移動的Ul就是絕對定位 &am…

w3c html5 客戶端緩存數據格式,Html5應用程序緩存(Cache manifest)

一、作用離線瀏覽 - 根據文件規則把資源緩存在本地&#xff0c;脫機依然能夠訪問資源&#xff0c;聯網會直接使用緩存在本地的文件。優化加載速度&#xff0c;節約服務器資源。二、適用場景正如 manifest 英譯的名字&#xff1a;離線應用程序緩存&#xff0c;這項功能是設計給會…

html5內聯框去滾動條,如何優雅的實現內聯滾動條(前端底部固定方法 )

我是一個網易云粉&#xff0c;有沒有發現網易云音樂兩邊的滾動條是互不相干的&#xff0c;而且頭部和底部都是固定的&#xff0c;這是如何實現的呢&#xff1f;先看個圖吧。網易云音樂的頁面其實要實現這樣一個內聯滾動條不難。我們可以先從實現一個內聯滾動條開始實現。實現方…

微型計算機中 輔助存儲器通常包括,第7章 微型計算機存儲器習題參考答案

第七章習題及答案7.1 一個微機系統中通常有哪幾級存儲器&#xff1f;它們各起什么作用&#xff1f;性能上有什么特點&#xff1f;答&#xff1a;一個微機系統中通常有3級存儲器結構&#xff1a;高速緩沖存儲器、內存儲器和輔助存儲器。高速緩沖存儲器簡稱快存&#xff0c;是一種…

html中未填寫完提示未填寫,亞馬遜官方試題(開店及運營篇)

六.玩轉新賬號單選1、可以在亞馬遜網站投放廣告嗎&#xff1f;A:部分可以投放&#xff0c;部分則由亞馬遜控制B:全部不可以C:全部都可以D:只可在網站頁面有責投放 A2、恢復移動板塊初始界面后臺什么位置設置A:無法恢復B:需手動逐一恢復 C:右上角Setting里設置D:左下角設置 D3、…

idea html 錯誤提示,Idea 代碼編輯錯誤不飄紅提示

洛谷P2055 &lbrack;ZJOI2009&rsqb;假期的宿舍 &lbrack;二分圖最大匹配&rsqb;題目描述 學校放假了 有些同學回家了,而有些同學則有以前的好朋友來探訪,那么住宿就是一個問題.比如 A 和 B 都是學校的學生,A 要回家,而 C 來看B,C 與 A 不認識. ...noip模擬賽…

2019計算機科學與技術調劑信息,福建師范大學計算機科學與技術2019考研調劑信息...

學校&#xff1a;福建師范大學專業&#xff1a;工學->計算機科學與技術年級&#xff1a;2019招生人數&#xff1a;2招生狀態&#xff1a;正在招生中聯系方式&#xff1a;15606066289本課題組招生計算機科學與技術調劑生1-2人&#xff0c;研究生階段主要從事統計決策、模糊決…

分時系統的用戶具有獨占性,因此一個用戶可以獨占計算機系統的資源.,課件2016計算機操作系統試題庫(判斷).doc...

課件2016計算機操作系統試題庫(判斷)判斷題(共73個題目)200151. 操作系統屬于最重要的、最不可缺少的應用軟件。此題答案為&#xff1a;0200152. 操作系統完成的主要功能是與硬件相關的。此題答案為&#xff1a;0200153. 操作系統的所有程序都在系統態執行。此題答案為&#xf…

筆記本計算機在桌面顯示,筆記本電腦開機后不顯示桌面該怎么處理

筆記本電腦使用久了總是會出現這樣或那樣的問題&#xff0c;其中最常見的問題就是筆記本電腦開機后不顯示桌面&#xff0c;為了幫用戶解決這個問題&#xff0c;下面就由小編跟大家分享具體的處理方法吧&#xff0c;希望對大家有所幫助~筆記本電腦開機后不顯示桌面的兩個處理方法…

科學計算機 分數計算公式,Z分數(標準分數,Z-Score)公式與在線計算器_三貝計算網_23bei.com...

輸入原始數據(X)、平均數(M)、標準差(S)、Z分數值(Z)等4個變量中任意3個已知變量&#xff0c;點擊計算按鈕&#xff0c;可快速求出求出未知變量。Z 分數也叫標準分數(standard score)&#xff0c;能夠真實的反應一個分數距離平均數的相對標準距離。如果我們把每一個分數都轉換成…

說唱計算機網紅,首檔喊麥節目太奇葩,蹭了說唱熱度,還請了被封殺網紅當導師...

原標題&#xff1a;首檔喊麥節目太奇葩&#xff0c;蹭了說唱熱度&#xff0c;還請了被封殺網紅當導師首檔喊麥節目太奇葩&#xff0c;蹭了說唱熱度&#xff0c;還請了被封殺網紅當導師大家都知道&#xff0c;如今的綜藝節目越來越多各種題材應有盡有&#xff0c;尤其是音樂類的…

平頂山學院計算機分數線,2016年平頂山學院藝術類專業錄取分數線

平頂山學院2016年新疆藝術本科統考專業錄取分數線專業名稱層次計劃性質計劃數最高分錄取分平均分環境設計本科統招2208204206環境設計本科定向2219216217.5平頂山學院2016年河南一志愿藝術本科A段統考專業錄取分數線專業名稱科類計劃數最高分錄取分平均分播音與主持藝術文科147…

計算機cnc編程入門,數控車床編程入門自學方法與步驟,內容詳細,值得一看!...

數控車床編程入門自學的內容與步驟&#xff1a;一般來講&#xff0c;分析零件圖樣工藝處理&#xff1a;加工工藝分析&#xff0c;編程人員首先要根據零件圖紙入技術要求&#xff0c;對零件的材料、形狀、尺寸、精度和熱處理要求等&#xff0c;進行加工工藝分析&#xff0c;合理…

香港計算機課程,香港計算機科學專業學什么?開設了哪些課程

香港中文大學并行及分布式系統高級專題 Advanced Topics in Parallel/ Distributed Systems軟件系統專題 Advanced Topics in Software Systems數據庫系統高級專 Advanced Topics in Database Systems理論計算機科學專題 Topics in Theoretical Computer Science人工智能高級專…