免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Android平臺測試介紹及monkey使用
Android平臺測試介紹(一)
前言:該文檔針對新入職員工及首次接觸Android測試平臺測試著,對Android系統(tǒng)、測試工具進行簡單介紹。
作者:嚴君
Android系統(tǒng)介紹
Android一詞本意是指“機器人”,當然現(xiàn)在大家都知道它是Google推出的開源手機操作系統(tǒng)。Android基于Linux平臺,有操作系統(tǒng)、中間件、用戶界面和應用軟件組成,號稱是首個為移動終端打造的真正開放和完整的移動軟件。
Android系統(tǒng)具有5個特點:
開放性。Google與開放手機聯(lián)盟合作開發(fā)了Android,Google通過與運營商、設備制造商、開發(fā)商和其他有關各方結(jié)成深層次的合作伙伴關系,希望通過建立標準化、開放式的移動電話軟件平臺,在移動產(chǎn)業(yè)內(nèi)形成一個開放式的生態(tài)系統(tǒng)。
應用程序無限性。Android上的應用程序可以通過標準API訪問核心移動設備功能。通過互聯(lián)網(wǎng),應用程式可以聲明它們的功能可供其他應用程序使用。
應用程序是在平等條件下創(chuàng)建的。移動設備上的應用程序可以被替代或擴展,即使是撥號程序或主屏幕這樣的核心組件。
應用程序可以輕松的嵌入網(wǎng)絡。應用程序可以輕松的嵌入HTML、JavaScript和樣式表,還可以通過WebView顯示網(wǎng)絡內(nèi)容。
應用程序可以并行運行。Android是一種完整的多任務環(huán)境,應用程序可以在其中并行運行。在后臺運行時,應用程序可以生成通知以引起注意。
通過上述內(nèi)容的介紹,我們對Android的特點有了初步的了解。下面將討論Android的系統(tǒng)架構(gòu),先讓我們看看Android的體系結(jié)構(gòu),如圖1—1所示。
從圖1—1中可以看出Android分為4層,從高到低分別是應用層、應用框架層、系統(tǒng)運行層和Linux內(nèi)核層。下面將對這4層進行簡單的分析和介紹。
應用層
應用層是指用Java語言編寫的運行在虛擬機的程序,如圖1—1中最上層部分所示。其實,Google最開始就在Android系統(tǒng)中捆綁了一些核心應用,比如E-mail客戶端、SMS短消息程序、日歷、地圖、瀏覽器、聯(lián)系人管理程序等。
應用框架層
這一層是編寫Google發(fā)布的核心應用是所使用的API框架,開發(fā)人員同樣可以使用這些框架來開發(fā)自己的應用,在使用時必須遵守其框架的規(guī)則。
從圖1—1中可以看出,Android提供了如下一些組件。
View(可擴展的視圖):可以用來構(gòu)建應用程序,它包括List、Grid、Text Box、Button,以及可以嵌入的Web瀏覽器。
ContentProviders(內(nèi)容提供器):它可以讓一個應用訪問另一個應用的數(shù)據(jù)或共享它們自己的數(shù)據(jù)庫。
ResourceManager(資源管理器):提供非代碼資源的訪問,如本地字符串、圖形和布局文件。
NotificationManager(通知管理器):應用可以在狀態(tài)欄中顯示自定義的提示信息。
ActivityManager(活動管理器):用來管理應用程序生命周期并提示常用的導航退回功能。
WindowManager(窗口管理器):管理所有的窗口程序。
PackageManager(包管理器):Android系統(tǒng)內(nèi)的程序管制。
系統(tǒng)運行庫(C/C++庫以及Android運行庫)層
當使用Android應用框架時,Android系統(tǒng)會通過一些C/C++庫來支持我們使用的各個組件,使其更好的為我們服務。
Bionic系統(tǒng)C庫:C語言標注庫,系統(tǒng)最底層的庫,C庫通過Linux來調(diào)用。
MediaFramework(多媒體庫):Android系統(tǒng)多媒體庫,基于PacketVideo OpenCORE,該庫支持多種常見格式的音頻、視頻的回放和錄制,以及圖片。
SGL:2D圖形引擎庫。
SSL:位于TCP/IP協(xié)議與各種應用層協(xié)議之間,為數(shù)據(jù)通信提供支持。
OpenGL:3D效果的支持。
SQLite:關系數(shù)據(jù)庫。
Webkit:Web瀏覽器引擎。
FreeType:位圖和矢量圖。
每個Java程序都運行在Dalvik虛擬機上。每一個Android程序都有自己的進程,Dalvik虛擬機只執(zhí)行.dex的可執(zhí)行文件。當Java程序通過編譯,最后還需要通過SDK中的dx工具轉(zhuǎn)化成.dex格式才能正常在虛擬機上運行。
Linux內(nèi)核層
Android的核心系統(tǒng)服務于Linux2.6內(nèi)核,如安全性、內(nèi)存管理、進程管理、網(wǎng)絡協(xié)議棧和驅(qū)動模型等都依賴與該內(nèi)核。Linux內(nèi)核同時也作為硬件和軟件之間的軸向?qū)印?div style="height:15px;">
Android更多的是需要一些與移動設備相關的驅(qū)動程序,主要的驅(qū)動如下所示。
DisplayDriver(顯示驅(qū)動):基于Linux的Frame Buffer(幀緩沖)驅(qū)動。
KeyBoardDriver(鍵盤驅(qū)動):作為輸入設備的鍵盤驅(qū)動。
FlashMemory Driver(Flash內(nèi)存驅(qū)動):基于MTD的Flash驅(qū)動程序。
CameraDriver(照相機驅(qū)動):常用的基于Linux的v412(Videofor Linux)驅(qū)動。
AudioDriver(音頻驅(qū)動):常用的基于ALSA(AdvancedLinux Sound Architecture)的高級Linux聲音體系驅(qū)動。
BluetoothDriver(藍牙驅(qū)動):基于IEEE802.15.1標準的無線傳輸技術(shù)。
BinderIPC驅(qū)動:Android的一個特殊驅(qū)動,具有單獨的設備節(jié)點,提供進程間通信的功能。
PowerManagement(電源管理):電池電量等。
對Android的系統(tǒng)架構(gòu)進行剖析后,我們知道Android分為應用層、應用框架層、系統(tǒng)運行庫層和Linux內(nèi)核。在開發(fā)應用時都是通過框架來與Android底層進行交互,接觸最多的就是應用框架層了。
Android提供給應用開發(fā)者的本身就是一個框架,所有應用開發(fā)都必須遵守這個框架的原則。開發(fā)應用時就是在這個框架上進行擴展,下面介紹Android的這個框架提供了哪些功能。
android.app:提供高層的程序模型和基本運行環(huán)境。
android.content:包含對各種設備上的數(shù)據(jù)進行訪問和發(fā)布。
android.databses:通過內(nèi)容提供者瀏覽和操作數(shù)據(jù)庫。
android.graphics:底層的圖形庫,包含畫布、顏色過濾、點、矩形、,可以將它們直接繪制到屏幕上。
android.location:定位和相關服務的類。
android.media:提供一些類管理多種音頻、視頻的媒體接口。
android.net:提供幫助網(wǎng)絡訪問的類,超過常用的java.net.*接口。
android.os:提供了系統(tǒng)服務、消息傳輸和IPC機制。
android.opengl:提供OpenGL工具。
android.provider:提供訪問Android內(nèi)容提供者的類。
android.telephony:提供與撥打電話相關的API操作。
android.view:提供基礎的用戶界面接口框架。
android.util:涉及工具性的方法,例如時間日期的操作。
android.webkit:默認瀏覽器操作接口。
android.widget:包含各種UI元素在應用程序的布局中。
Android系統(tǒng)基于Linux,做Android測試,掌握一定的 Linux知識是必要的。下面我們就對Linux進行簡單的介紹。從最簡單的文件系統(tǒng)開始介紹(該部分是Linux的基礎,更深遠的只是在該文檔中不做介紹,有興趣的朋友可以自己查閱)。
Linux文件系統(tǒng)結(jié)構(gòu)
用戶空間和內(nèi)核中與文件系統(tǒng)相關的主要組件之間的關系,如圖1—2所示。
圖1—2
用戶空間包含一些應用程序和GUNC庫。它們?yōu)槲募到y(tǒng)調(diào)用提供用戶接口。VFS是底層文件系統(tǒng)的主要接口。這個組件導出一組接口,然后將它們抽象到各個文件系統(tǒng),各個文件系統(tǒng)的行為可能差異很大。有兩個針對文件系統(tǒng)對象的緩存(inode和dentry)。它們緩存最近使用過的文件系統(tǒng)對象。每個個體文件系統(tǒng)實現(xiàn)導出一組通用接口,供VFS使用。緩沖區(qū)緩存會緩存文件系統(tǒng)和和相關塊設備之間的請求。例如,對底層設備驅(qū)動程序的讀寫請求會通過緩沖區(qū)緩存來傳遞。這就允許在其中緩存請求,減少訪問物理設備的次數(shù),加快訪問速度。
Linux文件系統(tǒng)采用階層式樹狀目錄結(jié)構(gòu),最上層是“/”,然后在下邊創(chuàng)建其他的目錄,如表1—1所示。
/
Linux系統(tǒng)根目錄
/bin
Binary的縮寫,基礎系統(tǒng)所需要的命令位于此目錄,也是最小系統(tǒng)所需要的命令。功能和/usr/bin類似,這個目錄中的文件都是可執(zhí)行文件,是普通用戶可以使用的命令。
/boot
包含vmlinuz,initrd.img等啟動文件,在一般情況下,GRUB和LILO系統(tǒng)引導管理器也位于這個目錄。
/dev
設備接口文件目錄。
/etc
系統(tǒng)配置文件目錄。
/home
一般的用戶主目錄。
/lib
庫文件存放目錄。
/mnt
各項配置的文件加載點。
/opt
表示可選擇的意思,一些軟件也會安裝在這里,也就是自定義軟件包,供大的且固定的應用存儲文件用
/proc
系統(tǒng)運行時進程信息及內(nèi)核信息存放在這里。/proc目錄偽裝的文件系統(tǒng)proc的掛載目錄,proc并不是真正的文件系統(tǒng)。
/root
管理員的主目錄
/sbin
大多數(shù)涉及系統(tǒng)管理的命令的存放地,也就是超級權(quán)限用戶root的可執(zhí)行命令存放地,普通用戶無權(quán)限執(zhí)行這個目錄下的命令。
/tmp
存在臨時文件的目錄。
/usr
這事系統(tǒng)存放程序的目錄。
/var
該目錄下存放的文件時經(jīng)常變動的。如/var下有/var/log,是用來存放系統(tǒng)日志的目錄。/var/www目錄是定義Apache服務器站點的存放目錄。
表1—1
此外,下面補充一下一些比較重要的字目錄的用途。
/etc/init.d
這個目錄用來存放系統(tǒng)或服務器以System V模式啟動的腳本,這在以System V模式啟動或初始化的系統(tǒng)中常見。比如Fedora/RedHat。
/etc/initx.d
如果服務器是通過xinetd模式運行的,它的腳本要放在這個目錄下。有些系統(tǒng)沒有這個目錄,比如Slackware,有些老的版本也沒有。
/etc/rc.d
這事Slackware發(fā)行版本的一個目錄,是BSD方式啟動腳本的存放地。比如定義網(wǎng)卡,服務器開啟腳本等。
/etc/X11
這事X-Windows相關的配置文件存放地。
/usr/bin
這個目錄是可執(zhí)行程序的目錄,普通用戶就有權(quán)限執(zhí)行。
/usr/sbin
這個目錄也是可執(zhí)行程序的目錄,但大多數(shù)情況下存放涉及系統(tǒng)管理的命令。
/usr/local
這個目錄通常用來存放用戶自編譯安裝軟件。
/usr/lib
庫文件存儲目錄
/usr/share
系統(tǒng)共用的東西存放地,如/usr/share/fonts是字體目錄,是用戶都共用的。
/usr/src
這事內(nèi)核源碼存放的目錄。
/var/adm
比如軟件包安裝信息、日志、管理信息等。某些操作系統(tǒng)中沒有這個目錄。
/var/log
系統(tǒng)日志存放,分析日志要看這個目錄的東西。
/var/spool
打印機、郵件、代理服務器等假脫機目錄。
介紹完Linux文件系統(tǒng)后,讓我們來看看Android的文件系統(tǒng)是什么樣的。如圖1—3所示。
圖1—3
圖1—3列出了Android的文件目錄,下面簡單闡述一些目錄的功能。
cache : 是緩存臨時文件夾,據(jù)說是除了T-mobile的OTA更新外,別無用處。
sdcard:是SD卡中的FAT32文件系統(tǒng)掛載的目錄。
etc  :指向 /system/etc ,眾所周知的配置文件存放目錄。
proc :/proc 文件系統(tǒng)下的多種文件提供的系統(tǒng)信息不是針對某個特定進程的,而是能夠在整個系統(tǒng)范圍的上下文中使用。
sys :用于掛載 sysfs文件系統(tǒng)。 在設備模型中,sysfs文件系統(tǒng)用來表示設備的結(jié)構(gòu).將設備的層次結(jié)構(gòu)形象的反應到用戶空間中.用戶空間可以修改sysfs中的文件屬性來修改設備的屬性值。
sbin: 只放了一個用于調(diào)試的adbd程序。
data :存放用戶安裝的軟件以及各種數(shù)據(jù)。
root :什么都沒有。
dev :不用多說了,設備節(jié)點文件的存放地。
system : /system目錄是在Android文件系統(tǒng)占有及其重要的位置,基本上所有的工具和應用程序都在這個目錄下。在Android手機中存放在nandflash的mtd3中,是一個yaffs2文件系統(tǒng),在啟動時被掛載在root的/system目錄下。以下是目錄結(jié)構(gòu),如圖1—4所示:
圖1—4
bin:該目錄下放了很多系統(tǒng)管理工具,這些工具不是到toolbox的鏈接,每個都是可執(zhí)行程序。如果你看到這些命令你會發(fā)現(xiàn)他們根本不常用,他們都是為系統(tǒng)管理員準備的,是一些系統(tǒng)管理和配置工具。這個文件夾的作用相當于標準Linux文件系統(tǒng)中的/sbin。
framework:JAVA平臺的一些核心文件,屬于JAVA平臺系統(tǒng)框架文件。里面的文件都是.jar和.odex文件。
fonts:字體庫文件的存放目錄。
etc :這里存放了系統(tǒng)中幾乎所有的配置文件,根目錄下的/etc就鏈接于此。
build.prop :是一個屬性文件,在Android系統(tǒng)中.prop文件很重要,記錄了系統(tǒng)的設置和改變,類似于/etc中的文件。
media:里面主要是存放了系統(tǒng)的鈴聲的,分為 notifications(通知)、ui(界面)、alarms(警告)和ringtones(鈴聲),里面都是.ogg音頻文件。
bin:存放用戶常用的工具程序的,其中大部分是到toolbox的鏈接
usr:用戶的配置文件,如鍵盤布局、共享、時區(qū)文件等等。您可以cat 來看看。
app:顧名思義,存放的是Android系統(tǒng)自帶的JAVA應用程序。
lost+found:yaffs文件系統(tǒng)固有的,類似回收站的文件夾,只有是yaffs文件系統(tǒng)都會有。
lib:存放幾乎所有的共享庫(.so)文件。
init.rc:一個初始化腳本,用于將/system/modules和/system/xbin掛載為cramfs,避免系統(tǒng)被無意破壞。
在其他Android版本中,/system目錄下可能還存在如sd、modules等目錄,再次不做解釋。在根目錄下還有一些非目錄的文件,例如,init.trout.rc,init.rc,init.goldfish.rc 是初始化文件.。init是系統(tǒng)啟動到文件系統(tǒng)的時候第一個運行的程序。
測試
Android系統(tǒng)測試平臺搭建
AndroidSDK貫穿于Android測試的整個測試過程。該工具可以從Android官網(wǎng)上下載(地址http://developer.android.com/sdk/index.html)。
下載完成后,解壓該zip包,解壓后生成的目錄如圖1—5所示:
圖1—5
使用該工具之前,先將環(huán)境變量配置好,配置方法如下所示。
“鼠標右鍵”我的電腦,點擊“屬性”,打開系統(tǒng)屬性對話框后,選擇“高級”標簽頁,點擊“環(huán)境變量”,系統(tǒng)變量的“Path”中添加參數(shù),該參數(shù)=android SDK所在目錄。如sdk在D:\,這里就可以寫成D:\android sdk\tools。
配置好環(huán)境變量后,第一次啟動SDk,可以雙擊“SDK Manager.exe”。首次啟動SDK Manager需要下載SDK platform,可能需要下載一段時間。
創(chuàng)建Android模擬器很簡單,在這里不做說明。
在AndroidSDk目錄下有一個tools目錄,該目錄下存放了許多工具,如圖1—6所示。
圖1—6
其中有幾個必要常用的工具adb.exe、sqlite.exe、ddms.bat。
abd.exe
該工具的功能強大,如向存取文件、安裝或刪除應用等。如果在下載SDK且解壓后發(fā)現(xiàn)tools目錄中沒有adb.exe,難么將\ platform-tools目錄下的adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll三個文件復制到tolls目錄下,然后重啟adb即可。
該工具在DOS下使用,點擊“開始”后點擊“運行”,輸入“cmd”進入DOS,在命令行中輸入“abd”顯示所有abd命令,如圖1—7所示。
圖1—7
其中比較常有的有,adb push、adb pull、adb install、adb uninstall、adb remount、adb shell等。(命令較多在這里不做解釋,如有興趣可自行查看)
例:
將PCC:下的aaa文件放入手機sd卡中,用命令adb push C:\aaa /mntsdcard。
將手機/data目錄下的aaa文件取出到PC D:,用命令adb pull /data/aaa D:\。
安裝一個aaa應用,用命令adb install C:\aaa.apk。
進入shell,輸入adb shell。
如果在shell中,發(fā)現(xiàn)root用戶無法刪除某個文件,可以退出shell,再輸入adb remount,重新進入shell后即可刪除。
Sqlite.exe
Sqlite是android的關系數(shù)據(jù)庫,可以在shell使用,也可以將數(shù)據(jù)庫文件取出后使用sqlite.exe打開。
在shell中使用,只需要找到該數(shù)據(jù)庫文件的路勁后輸入sqlite 數(shù)據(jù)庫路徑。在sqlite.exe中使用,可以將該文件從手機去取出,取出方法上文已說明,用命令adb pull ,然后打開sqlite.exe將文件拖入,回車即可。
Sqlie數(shù)據(jù)庫設置可在數(shù)據(jù)庫中輸入.help查看。該工具的語法和基本采用sql語法,在此不做說明。
ddms
這個工具主要用途是可以獲取手機運行日志,雙擊ddms,打開該工具
,如圖1—8所示。
圖1—8
手機運行的日志在“l(fā)og”區(qū)域,在“name”加載了該手機各運行模塊和已啟動的服務。
該工具還可以模擬電話、短信事件。選擇Emulator Control標簽頁,在Telephony Actions區(qū)域中Incoming number輸入框中輸入號碼,Voice和Sms按鈕,如選擇Voice,然后點擊Call,模擬器將收到模擬的電話事件,如輸入選擇Sms,可在其后的文本框中輸入短信內(nèi)容,然后點擊call,模擬器將模擬手機短息事件。
其他工具的使用方法在這里不做說明,讀者可自行查閱。
busybox工具
該工具是Linux常用命令集,集成Linux常用操作命令,很方便的一個工具。Android自身也有一個命令集工具toolbox,不過該工具比較簡陋,不建議使用。
Busybox工具可在網(wǎng)上獲得,可直接使用成品,或下載該工具的源碼,自行編譯后使用,建議初學者使用成平 。
下載該文件后,將該文件push進手機中,不要將該工具push進sd卡,那樣將無法使用該工具,應為用戶和組權(quán)限非用戶權(quán)限且不可修改。
busybox放進手機/data目錄以后需要修改用戶權(quán)限,組權(quán)限無需修改,如圖1—9所示。
圖1—9
我們可以看到,push進手機后該文件的權(quán)限是“-rw-rw-rw-”,第一個“-”說
明該文件的類型,此處是執(zhí)行文件;后面依次三個字符一組,對應的權(quán)限為當
前用戶、用戶組、其他用戶,我們只需要給當權(quán)用戶賦予執(zhí)行權(quán)限即可。用命
令chmod 766 busybox后即可使用busybox,busybox的用法舉例,如果需要顯
示當前目錄下的文件,使用命令busybox ls –al;如果需要??串斍熬W(wǎng)卡信息可
以用busybox ifconfig等。當然在使用之前需要修改環(huán)境變量,可以用以下方法
修改,如export PATH=$PATH:/data(busybox在/data目錄)。
當然你也可以先建立busybox的鏈接,不同的鏈接名完成不同的功能。
#ln -sbusybox ls
#ln -sbusybox rm
#ln -sbusybox mkdir
然后分別運行這三個鏈接
#./ls
#./rm
#./mkdir
就可以分別完成了ls rm 和mkdir命令的功能.雖然他們都指向同一個busybox
但是只要鏈接名不同,完成的功能就不同。
當然也可以將busybox作為腳本寫入/system/xbin當中(具體方法這里不做討論),此過程需要重新掛載手機文件系統(tǒng),初學者慎用。方法如下:
將busybox傳入手機的SD卡,可以使用下面的命令或自己想其他辦法。打開terminal(Linux,Mac)或cmd(Windows)輸入命令:
adb push ~/Desktop/busybox /mnt/sdcard
輸入以下命令,為了在/system目錄寫入文件
adb shell
su
mount -o remount,rwx -t yaffs2 /dev/block/mtdblock3 /system
使用 ls 檢查一下 /system 里是否有 xbin 目錄,沒有的話輸入 mkdir xbin 創(chuàng)建,因為本示例是要把busybox安裝到 /system/xbin 。
復制 busybox 文件到 /system/xbin,并為其分配“可執(zhí)行”的權(quán)限
cp /mnt/sdcard/busybox /system/xbin
chmod 766 busybox
這時就可以使用 busybox 的命令了,例如以前沒有清屏的clear命令,現(xiàn)在只需輸入 busybox clear 就可以實現(xiàn)清屏功能,使用完整版的 ls 只需輸入 busybox ls 。但是每次前面都加上個busybox太麻煩了,所以我們還要繼續(xù)完成安裝。在 /system/xbin 下輸入busybox --install如果想安裝到別的目錄,則把點替換成別的路徑。
tcpdump
tcpdump是一個命令行方式的嗅探工具。它誕生的時候較早,是許多圖形化嗅探工具的雛形。主要作用是截獲制定接口或所有接口的數(shù)據(jù)包,且能按照一定規(guī)則過濾截獲的數(shù)據(jù)包,以此滿足使用者分析其內(nèi)容的目的。
在一些Linux發(fā)行版本中,tcpdump通常作為標準的軟件包被默認安裝,當然Android也不例外。執(zhí)行“tcpdump”命令可以確定是否已安裝了tcpdump。如果未安裝,可以去http://www.tcpdump.org下載最新的tcpdump源碼包。在編譯之前,應先確定pcap庫(libpcap)已經(jīng)安裝完畢。這個庫是編譯tcpdump時所必需的。如果該庫已經(jīng)安裝,就可以執(zhí)行下面的命令來編譯安裝tcpdump:
cptcpdump-x.x.x.tar.gz /usr/local/src/
cd/usr/loacal/src/
tar xzvftcpdump tcpdump-x.x.x.tar.gz
./configure
make
makeinstall
編譯完成后會生成tcpdump的執(zhí)行文件。
tcpdump的用法其實很簡單,不需要太多的關注,直接輸入tcpdump命令可產(chǎn)看詳細用法。
上圖列出了tcpdump詳細的用法,我們常用的方法是使用:
tcpdump –i interface –ssnaplen –w file
i參數(shù)的作用是指定需要抓哪個網(wǎng)卡的數(shù)據(jù),關于網(wǎng)卡,我們可以用ifconfig查出當前的網(wǎng)卡。在命令行輸入“ifconfig”即可。
-s參數(shù)指定是否需要分割數(shù)據(jù)包,一般用0
-w捕獲的數(shù)據(jù)包的存儲路徑。
關于數(shù)據(jù)包的查看方法我們可以直接用strings命令來查看數(shù)據(jù)包,如在/sdcard目錄下有一個數(shù)據(jù)包aa.cap,我們要查看他可以用strings /sdcard/aa.cap進行查看,也可以用strings /sdcard/aa.cap > /data/aa.txt命令,將數(shù)據(jù)包已字符串形式輸入aa.txt文檔后再使用命令cat –bn/data/aa.txt查看,當然還可以將數(shù)據(jù)包取出,放入PC機查看。
至此該文檔已結(jié)束,希望對閱讀者有一定的幫助。
Android自動化測試框架Robotium學習筆記
剛好前段時間也研究了一下Android的自動化測試框架。感覺用起來還是比較方便的。
幾點體會也一起和大家交流下,有一些內(nèi)容還在慢慢學習中:
1.Java5(2004-10)開始推出了Instrumentation,這是一個可以在main之前Java虛擬機加載類時改變Java類字 節(jié)碼或類classpath等內(nèi)容的工具,同時JDK1.6還提供了運行過程中的動態(tài)改變,如在方法執(zhí)行前后加入度量時間的代碼,使Java代碼可度量就 是一個很典型的應用。不過這需要涉及到Java字節(jié)碼有較深入的理解進行字節(jié)碼直接編輯改寫,或者需要借助開源字節(jié)碼項目如bcel,ASM或 javassist等,以簡化對字節(jié)碼的操作。
2.Instrumentation與Btrace。Btrace是基于Instrumentation和ASM的,只要理解了Instrumentation的原理和ASM對字節(jié)碼的操作原理,了解Btrace就不困難了。
3.Android的 測試框架robotium框架,使用的類也是Instrumentation,其原理應該也類似。為某工程新建了一個測試工程,在安裝原有工程項目時,也將測試的工程項目安裝到AVD(模擬器)上面,同時通過測試的工程項目來與運行時的項目交互,觸發(fā)其組件的動作等。這種方法的缺點是要求兩個項目同時安裝到AVD上面。Google將會考慮采取Remote Control的方式實現(xiàn)自動化測試框架,類似于selenium的Remote Control,即在AVD上運行一個監(jiān)控程序,而測試項目只需要連接這個監(jiān)控程序,并發(fā)送相應的指令即可與程序進行交互,進行測試。希望早日實現(xiàn)這種方式~,目前的自動化測試使用前種方法也可。Robotium其底層仍是采用Android的Instrumentation!
4.Android的Instrumentation對某個監(jiān)控程序進行交互時,其大致采用如下步驟:
1)啟動時將項目配置文件AndroidManifest.xml文件中的instrumentation標簽中的內(nèi)容進行初始化,其中標明了所使用的測試運行類,目標項目的包名等
2)執(zhí)行測試時(可用adb命令觸發(fā)),將啟動目標應用的Activity,同時將待測試ActivityThread作為一個引用進行初始化,如果找不到目標應用則會報錯
3)在測試時測試項目的任何對目標項目進行的操作,都會用異步的方式,將消息體放在目標程序的MessageQueue里面,這樣目標程序在看到自己的MessageQueue里有內(nèi)容時,就會執(zhí)行之。
整個初始化過程還有待研究,關鍵應該是在于AndroidManifest.xml文件中內(nèi)容的標識
Android自動化測試工具-Monkey
前言:
最近開始研究Android自動化測試方法,整理了一些工具、方法和框架,其中包括android測試框架,CTS、Monkey、Monkeyrunner、benchmark,以及其它test tool等等。
一、  什么是Monkey
Monkey是Android中的一個命令行工具,可以運行在模擬器里或?qū)嶋H設備中。它向系統(tǒng)發(fā)送偽隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實現(xiàn)對正在開發(fā)的應用程序進行壓力測試。
Monkey測試是一種為了測試軟件的穩(wěn)定性、健壯性的快速有效的方法。
二、 Monkey的特征
1、 測試的對象僅為應用程序包,有一定的局限性。
2、 Monky測試使用的事件流數(shù)據(jù)流是隨機的,不能進行自定義。
3、 可對MonkeyTest的對象,事件數(shù)量,類型,頻率等進行設置。
三、Monkey的基本用法
基本語法如下:
$ adb shell monkey[options]
options選項(adb -d shell monkey):
view plainprint?
usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
[--ignore-crashes] [--ignore-timeouts]
[--ignore-security-exceptions]
[--monitor-native-crashes] [--ignore-native-crashes]
[--kill-process-after-error] [--hprof]
[--pct-touch PERCENT] [--pct-motion PERCENT]
[--pct-trackball PERCENT] [--pct-syskeys PERCENT]
[--pct-nav PERCENT] [--pct-majornav PERCENT]
[--pct-appswitch PERCENT] [--pct-flip PERCENT]
[--pct-anyevent PERCENT]
[--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
[--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
[--wait-dbg] [--dbg-no-events]
[--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
[--port port]
[-s SEED] [-v [-v] ...]
[--throttle MILLISEC] [--randomize-throttle]
COUNT
如果不指定options,Monkey將以無反饋模式啟動,并把事件任意發(fā)送到安裝在目標環(huán)境中的全部包。下面是一個更為典型的命令行示例,它啟動指定的應用程序,并向其發(fā)送9999個偽隨機事件:
$ adbshell monkey -p your.package.name -v 9999
四、Monkey測試的一個實例
通過這個實例,我們能理解Monkey測試的步驟以及如何知道哪些應用程序能夠用Monkey進行測試。
Windows下(注:2—4步是為了查看我們可以測試哪些應用程序包,可省略):
1、 通過eclipse啟動一個Android的emulator
2、 在命令行中輸入:adb devices查看設備連接情況
C:\Documents andSettings\Administrator>adb devices
List of devicesattached
emulator-5554device
emulator-5556device
015ED9A50C00A01Adevice
3、 在有設備連接的前提下,在命令行中輸入:adb shell 進入shell界面
C:\Documents andSettings\Administrator>adb shell
4、 查看data/data文件夾下的應用程序包。注:我們能測試的應用程序包都在這個目錄下面
C:\Documents andSettings\Administrator>adb shell
# ls data/data
ls data/data
com.google.android.btrouter
com.android.providers.telephony
com.android.mms
com.android.providers.downloads
com.android.deskclock
com.android.email
com.android.browser
com.android.calculator2
....
5、 以com.android.calculator2作為對象進行MonkeyTest
#monkey-p com.android.calculator2 -v 9999
其中:
-p表示對象包
–v 表示事件數(shù)量
運行過程中,Emulator中的應用程序在不斷地切換畫面。
按照選定的不同級別的反饋信息,在Monkey中還可以看到其執(zhí)行過程報告和生成的事件。
注:具體參數(shù)的設定可參考:
http://developer.android.com/guide/developing/tools/monkey.html
五、關于Monkey測試的停止條件
Monkey Test執(zhí)行過程中在下列三種情況下會自動停止:
1、如果限定了Monkey運行在一個或幾個特定的包上,那么它會監(jiān)測試圖轉(zhuǎn)到其它包的操作,并對其進行阻止。
2、如果應用程序崩潰或接收到任何失控異常,Monkey將停止并報錯。
3、如果應用程序產(chǎn)生了應用程序不響應(application notresponding)的錯誤,Monkey將會停止并報錯。
通過多次并且不同設定下的Monkey測試才算它是一個穩(wěn)定性足夠的程序。
Monkey測試簡介[附示例]
一、Monkey測試簡介
Monkey測試是Android平臺自動化測試的一種手段,通過Monkey程序模擬用戶觸摸屏幕、滑動Trackball、按鍵等操作來對設備上的程序進行壓力測試,檢測程序多久的時間會發(fā)生異常。
二、Monkey程序介紹
1) Monkey程序由Android系統(tǒng)自帶,使用Java語言寫成,在Android文件系統(tǒng)中的存放路徑是:/system/framework/monkey.jar;
2) Monkey.jar程序是由一個名為“monkey”的Shell腳本來啟動執(zhí)行,shell腳本在Android文件系統(tǒng)中的存放路徑 是:/system/bin/monkey;這樣就可以通過在CMD窗口中執(zhí)行: adb shell monkey {+命令參數(shù)}來進行Monkey測試了。
三、Monkey命令的簡單幫助
要獲取Monkey命令自帶的簡單幫助,在CMD中執(zhí)行命令:
adb shell monkey –help
四、Monkey命令參數(shù)介紹
1) 參數(shù):  -p
參數(shù)-p用于約束限制,用此參數(shù)指定一個或多個包(Package,即App)。指定
包之后,Monkey將只允許系統(tǒng)啟動指定的APP。如果不指定包,Monkey將允許系統(tǒng)啟動設備中的所有APP。
* 指定一個包: adb shell monkey -pcom.htc.Weather  100
說明:com.htc.Weather為包名,100是事件計數(shù)(即讓Monkey程序模擬100次隨機用戶事件)。
* 指定多個包:adb shell monkey -pcom.htc.Weather –p com.htc.pdfreader  -p com.htc.photo.widgets 100
* 不指定包:adb shell monkey 100
說明:Monkey隨機啟動APP并發(fā)送100個隨機事件。
* 要查看設備中所有的包,在CMD窗口中執(zhí)行以下命令:
>adb shell
#cd data/data
#ls
2) 參數(shù):  -v
用于指定反饋信息級別(信息級別就是日志的詳細程度),總共分3個級別,分別對應的參數(shù)如下表所示:
日志級別 Level 0
示例 adb shell monkey -pcom.htc.Weather –v 100
說明 缺省值,僅提供啟動提示、測試完成和最終結(jié)果等少量信息
日志級別 Level 1
示例 adb shell monkey -pcom.htc.Weather –v -v 100
說明  提供較為詳細的日志,包括每個發(fā)送到Activity的事件信息
日志級別 Level 2
示例 adb shell monkey -pcom.htc.Weather –v -v –v 100
說明  最詳細的日志,包括了測試中選中/未選中的Activity信息
3)參數(shù):  -s
用于指定偽隨機數(shù)生成器的seed值,如果seed相同,則兩次Monkey測試所產(chǎn)生的事件序列也相同的。
* 示例:
Monkey測試1:adb shell monkey -p com.htc.Weather –s10 100
Monkey 測試2:adb shell monkey -pcom.htc.Weather –s 10 100
兩次測試的效果是相同的,因為模擬的用戶操作序列(每次操作按照一定的先后順序所組成的一系列操作,即一個序列)是一樣的。操作序列雖   然是隨機生成的,但是只要我們指定了相同的Seed值,就可以保證兩次測試產(chǎn)生的隨機操作序列是完全相同的,所以這個操作序列偽隨機的;
4) 參數(shù):  --throttle <毫秒>
用于指定用戶操作(即事件)間的時延,單位是毫秒;
* 示例:adbshell monkey -p com.htc.Weather --throttle 3000 100
5) 參數(shù):  --ignore-crashes
用于指定當應用程序崩潰時(Force & Close錯誤),Monkey是否停止運行。如果使用此參數(shù),即使應用程序崩潰,Monkey依然會發(fā)送事件,直到事件計數(shù)完成。
* 示例1:adb shell monkey -p com.htc.Weather --ignore-crashes 1000
測試過程中即使Weather程序崩潰,Monkey依然會繼續(xù)發(fā)送事件直到事件數(shù)目達到1000為止;
* 示例2:adb shell monkey -p com.htc.Weather 1000
測試過程中,如果Weather程序崩潰,Monkey將會停止運行。
6) 參數(shù):  --ignore-timeouts
用于指定當應用程序發(fā)生ANR(Application NoResponding)錯誤時,Monkey是否停止運行。如果使用此參數(shù),即使應用程序發(fā)生ANR錯誤,Monkey依然會發(fā)送事件,直到事件計數(shù)完成。
7) 參數(shù):  --ignore-security-exceptions
用于指定當應用程序發(fā)生許可錯誤時(如證書許可,網(wǎng)絡許可等),Monkey是否停止運行。如果使用此參數(shù),即使應用程序發(fā)生許可錯誤,Monkey依然會發(fā)送事件,直到事件計數(shù)完成。
8) 參數(shù):  --kill-process-after-error
用于指定當應用程序發(fā)生錯誤時,是否停止其運行。如果指定此參數(shù),當應用程序發(fā)生錯誤時,應用程序停止運行并保持在當前狀態(tài)(注意:應用程序僅是靜止在發(fā)生錯誤時的狀態(tài),系統(tǒng)并不會結(jié)束該應用程序的進程)。
9) 參數(shù):  --monitor-native-crashes
用于指定是否監(jiān)視并報告應用程序發(fā)生崩潰的本地代碼。
10) 參數(shù):  --pct-{+事件類別} {+事件類別百分比}
用于指定每種類別事件的數(shù)目百分比(在Monkey事件序列中,該類事件數(shù)目占總事件數(shù)目的百分比)
參數(shù):
使用說明:
示例:
--pct-touch {+百分比}
調(diào)整觸摸事件的百分比(觸摸事件是一個down-up事件,它發(fā)生在屏幕上的某單一位置)
adb shell monkey -p com.htc.Weather --pct-touch 10 1000
--pct-motion {+百分比}
調(diào)整動作事件的百分比(動作事件由屏幕上某處的一個down事件、一系列的偽隨機事件和一個up事件組成)
adb shellmonkey -p com.htc.Weather --pct-motion 20 1000
--pct-trackball {+百分比}
調(diào)整軌跡事件的百分比(軌跡事件由一個或幾個隨機的移動組成,有時還伴隨有點擊)
adb shellmonkey -p com.htc.Weather--pct-trackball 30 1000
--pct-nav {+百分比}
調(diào)整“基本”導航事件的百分比(導航事件由來自方向輸入設備的up/down/left/right組成)
adb shellmonkey -p com.htc.Weather --pct-nav 40 1000
--pct-majornav {+百分比}
調(diào)整“主要”導航事件的百分比(這些導航事件通常引發(fā)圖形界面中的動作,如:5-way鍵盤的中間按鍵、回退按鍵、菜單按鍵)
adb shellmonkey -p com.htc.Weather--pct-majornav 50 1000
--pct-syskeys {+百分比}
調(diào)整“系統(tǒng)”按鍵事件的百分比(這些按鍵通常被保留,由系統(tǒng)使用,如Home、Back、Start Call、EndCall及音量控制鍵)
adb shellmonkey -p com.htc.Weather --pct-syskeys 60 1000
--pct-appswitch {+百分比}
調(diào)整啟動Activity的百分比。在隨機間隔里,Monkey將執(zhí)行一個startActivity()調(diào)用,作為最大程度覆蓋包中全部Activity的一種方法
adb shellmonkey -p com.htc.Weather --pct-appswitch 70 1000
--pct-anyevent {+百分比}
調(diào)整其它類型事件的百分比。它包羅了所有其它類型的事件,如:按鍵、其它不常用的設備按鈕、等等
adb shellmonkey -p com.htc.Weather
--pct -anyevent 100 1000* 指定多個類型事件的百分比:
adb shellmonkey -p com.htc.Weather --pct-anyevent 50 --pct-appswitch 50 1000
注意:各事件類型的百分比總數(shù)不能超過100%;
monkey測試工具
當Monkey程序在模擬器或設備運行的時候,如果用戶出發(fā)了比如點擊,觸摸,手勢或一些系統(tǒng)級別的事件的時候,它就會
產(chǎn)生隨機脈沖,所以可以用Monkey用隨機重復的方法去負荷測試你開發(fā)的軟件.
最簡單的方法就是用用下面的命令來使用Monkey,這個命令將會啟動你的軟件并且觸發(fā)500個事件.
$ adb shell monkey -v -pyour.package.name 500更多的關于命令Monkey的命令的信息,可以查看UI/Application
Exerciser Monkey documentationpage.
com.android.stk
com.android.htmlviewer
com.android.globalsearch
com.android.gpstest
com.android.googlesearch
wnc.w88.engineermode
com.android.calculator2
com.android.inputmethod.latin
com.svox.pico
com.android.soundrecorder
com.android.packageinstaller
android.tts
com.android.spare_parts
com.android.globaltime
com.android.sdksetup
com.quicinc.bluetooth
com.android.email
com.qualcomm.qx.neocore
com.android.development
com.android.term
com.android.server.vpn
com.android.contacts
com.android.camera
wnc.w88.factorymode
com.android.providers.applicati
com.android.providers.settings
com.android.voicedialer
com.android.phone
com.android.providers.contacts
com.android.launcher
com.android.mms
com.android.providers.telephony
com.android.providers.userdicti
com.android.providers.media
com.android.providers.calendar
com.android.calendar
com.android.providers.drm
com.android.providers.downloads
com.android.alarmclock
com.android.settings
com.android.qualcomm
com.android.browser
com.android.music
Monkey是一個命令行工具,可以運行在模擬器里或?qū)嶋H設備中。它向系統(tǒng)發(fā)送偽隨機的用戶事件流,實現(xiàn)對正在開發(fā)的應
用程序進行壓力測試。Monkey包括許多選項,它們大致分為四大類:
· 基本配置選項,如設置嘗試的事件數(shù)量。
· 運行約束選項,如設置只對單獨的一個包進行測試。
· 事件類型和頻率。
· 調(diào)試選項。
在Monkey運行的時候,它生成事件,并把它們發(fā)給系統(tǒng)。同時,Monkey還對測試中的系統(tǒng)進行監(jiān)測,對下列三種情況進
行特殊處理:
· 如果限定了Monkey運行在一個或幾個特定的包上,那么它會監(jiān)測試圖轉(zhuǎn)到其它包的操作,并對其進行阻止。
· 如果應用程序崩潰或接收到任何失控異常,Monkey將停止并報錯。
· 如果應用程序產(chǎn)生了應用程序不響應(application not responding)的錯誤,Monkey將會停止并報錯。
按照選定的不同級別的反饋信息,在Monkey中還可以看到其執(zhí)行過程報告和生成的事件。
Monkey基本用法
可以通過開發(fā)機器上的命令行或腳本來啟動Monkey。由于Monkey運行在模擬器/設備環(huán)境中,所以必須用其環(huán)境中的shell
來進行啟動??梢酝ㄟ^在每條命令前加上adb shell來達到目的,也可以進入Shell后直接輸入Monkey命令。基本語法如下:
$ adb shell monkey [options]
如果不指定options,Monkey將以無反饋模式啟動,并把事件任意發(fā)送到安裝在目標環(huán)境中的全部包。下面是一個更為典
型的命令行示例,它啟動指定的應用程序,并向其發(fā)送500個偽隨機事件:
$ adb shell monkey -pyour.package.name -v 500
命令選項參考
下表中列出了Monkey命令行可用的全部選項。
類別
選項
說明
常規(guī)
--help
列出簡單的用法。
-v
命令行的每一個-v將增加反饋信息的級別。Level 0(缺省值)除啟動提示、測試完成和最終結(jié)果之外,提供較少信息。Level
1提供較為詳細的測試信息,如逐個發(fā)送到Activity的事件。Level2提供更加詳細的設置信息,如測試中被選中的或未被選
中的Activity。
事件
-s <seed>
偽隨機數(shù)生成器的seed值。如果用相同的seed值再次運行Monkey,它將生成相同的事件序列。
--throttle <milliseconds>
在事件之間插入固定延遲。通過這個選項可以減緩Monkey的執(zhí)行速度。如果不指定該選項,Monkey將不會被延遲,事件
將盡可能快地被產(chǎn)成。
--pct-touch <percent>
調(diào)整觸摸事件的百分比(觸摸事件是一個down-up事件,它發(fā)生在屏幕上的某單一位置)。
--pct-motion <percent>
調(diào)整動作事件的百分比(動作事件由屏幕上某處的一個down事件、一系列的偽隨機事件和一個up事件組成)。
--pct-trackball <percent>
調(diào)整軌跡事件的百分比(軌跡事件由一個或幾個隨機的移動組成,有時還伴隨有點擊)。
--pct-nav <percent>
調(diào)整“基本”導航事件的百分比(導航事件由來自方向輸入設備的up/down/left/right組成)。
--pct-majornav <percent>
調(diào)整“主要”導航事件的百分比(這些導航事件通常引發(fā)圖形界面中的動作,如:5-way鍵盤的中間按鍵、回退按鍵、菜單按
鍵)
--pct-syskeys <percent>
調(diào)整“系統(tǒng)”按鍵事件的百分比(這些按鍵通常被保留,由系統(tǒng)使用,如Home、Back、Start Call、End Call及音量控制鍵)。
--pct-appswitch <percent>
調(diào)整啟動Activity的百分比。在隨機間隔里,Monkey將執(zhí)行一個startActivity()調(diào)用,作為最大程度覆蓋包中全部Activity的
一種方法。
--pct-anyevent <percent>
調(diào)整其它類型事件的百分比。它包羅了所有其它類型的事件,如:按鍵、其它不常用的設備按鈕、等等。
約束限制
-p <allowed-package-name>
如果用此參數(shù)指定了一個或幾個包,Monkey將只允許系統(tǒng)啟動這些包里的Activity。如果你的應用程序還需要訪問其它包
里的Activity(如選擇取一個聯(lián)系人),那些包也需要在此同時指定。如果不指定任何包,Monkey將允許系統(tǒng)啟動全部包里
的Activity。要指定多個包,需要使用多個 -p選項,每個-p選項只能用于一個包。
-c <main-category>
如果用此參數(shù)指定了一個或幾個類別,Monkey將只允許系統(tǒng)啟動被這些類別中的某個類別列出的Activity。如果不指定任
何類別,Monkey將選 擇下列類別中列出的Activity: Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。要
指定多個類別,需要使用多個-c選項,每個-c選 項只能用于一個類別。
調(diào)試
--dbg-no-events
設置此選項,Monkey將執(zhí)行初始啟動,進入到一個測試Activity,然后不會再進一步生成事件。為了得到最佳結(jié)果,把它
與-v、一個或幾個包約 束、以及一個保持Monkey運行30秒或更長時間的非零值聯(lián)合起來,從而提供一個環(huán)境,可以監(jiān)視
應用程序所調(diào)用的包之間的轉(zhuǎn)換。
--hprof
設置此選項,將在Monkey事件序列之前和之后立即生成profiling報告。這將會在data/misc中生成大文件(~5Mb),所以要
小心使用它。
--ignore-crashes
通常,當應用程序崩潰或發(fā)生任何失控異常時,Monkey將停止運行。如果設置此選項,Monkey將繼續(xù)向系統(tǒng)發(fā)送事件,
直到計數(shù)完成。
--ignore-timeouts
通常,當應用程序發(fā)生任何超時錯誤(如“Application Not Responding”對話框)時,Monkey將停止運行。如果設置此選項
,Monkey將繼續(xù)向系統(tǒng)發(fā)送事件,直到計數(shù)完成。
--ignore-security-exceptions
通常,當應用程序發(fā)生許可錯誤(如啟動一個需要某些許可的Activity)時,Monkey將停止運行。如果設置了此選項,
Monkey將繼續(xù)向系統(tǒng)發(fā)送事件,直到計數(shù)完成。
--kill-process-after-error
通常,當Monkey由于一個錯誤而停止時,出錯的應用程序?qū)⒗^續(xù)處于運行狀態(tài)。當設置了此選項時,將會通知系統(tǒng)停止發(fā)
生錯誤的進程。注意,正常的(成功的)結(jié)束,并沒有停止啟動的進程,設備只是在結(jié)束事件之后,簡單地保持在最后的狀
態(tài)。
--monitor-native-crashes
監(jiān)視并報告Android系統(tǒng)中本地代碼的崩潰事件。如果設置了--kill-process-after-error,系統(tǒng)將停止運行。
--wait-dbg
停止執(zhí)行中的Monkey,直到有調(diào)試器和它相連接。
monkey [-p ALLOWED_PACKAGE [-pALLOWED_PACKAGE] ...]
[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
[--ignore-crashes] [--ignore-timeouts]
[--ignore-security-exceptions] [--monitor-native-crashes]
[--kill-process-after-error] [--hprof]
[--pct-touch PERCENT] [--pct-motion PERCENT]
[--pct-trackball PERCENT] [--pct-syskeys PERCENT]
[--pct-nav PERCENT] [--pct-majornav PERCENT]
[--pct-appswitch PERCENT] [--pct-flip PERCENT]
[--pct-anyevent PERCENT]
[--wait-dbg] [--dbg-no-events] [-f scriptfile]
[--port port]
[-s SEED] [-v [-v] ...] [--throttle MILLISEC]
COUNT
講了這么多,好像很枯燥,很難懂,即使看完了選項也不知道如何使用
首先我們應該明白我們不可能使用monkey來制定做一樣測試,重復做很多次,因為monkey是偽隨機的,就是說雖然有一
定規(guī)律可循,但是并不是我們就可以指定動作,但是我們可以通過添加命令選項來將操作限制在一定的范圍內(nèi)。
monkey -v -pcom.android.camera --throttle 5000 --pct-anyevent 100 500
這條命令的解釋是:-v顯示默認程度的信息;-p com.android.camera是指定測試的程序,
// Allowing start of Intent {act=android.intent.action.MAIN cat=[android.in
tent.category.LAUNCHER]cmp=com.android.camera/.Camera } in package com.android.
camera
這是開始測試的camera的內(nèi)容
--throttle 5000 設定延時
--pct-anyevent 100設定啟動activity的百分比為100%
如果沒有指定,我們可以看到在開始執(zhí)行的時候8個事件(上面的選項中有介紹)的百分比如下:
# monkey -v -pcom.android.camera --throttle 5000 500
monkey -v -pcom.android.camera --throttle 5000 500
:Monkey: seed=0 count=500
:AllowPackage:com.android.camera
:IncludeCategory:android.intent.category.LAUNCHER
:IncludeCategory:android.intent.category.MONKEY
// Event percentages:
//   0: 15.0%
//   1: 10.0%
//   2: 15.0%
//   3: 25.0%
//   4: 15.0%
//   5: 2.0%
//   6: 2.0%
//   7: 1.0%
//   8: 15.0%
指定事件之后
# monkey -v -p com.android.camera--throttle 5000 --pct-anyevent 100 500
monkey -v -pcom.android.camera --throttle 5000 --pct-anyevent 100 500
:Monkey: seed=0 count=500
:AllowPackage:com.android.camera
:IncludeCategory: android.intent.category.LAUNCHER
:IncludeCategory:android.intent.category.MONKEY
// Event percentages:
//   0: 0.0%
//   1: 0.0%
//   2: 0.0%
//   3: 0.0%
//   4: 0.0%
//   5: 0.0%
//   6: 0.0%
//   7: 0.0%
//   8: 100.0%
最后count就是事件數(shù)設定為500
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Monkey簡介
money命令詳解
【轉(zhuǎn)】 Android 中Monkey的用法
ADB (Android debug bridge) 快速入門使用手冊29
Android自動測試之Monkey工具
Android monkey的基本命令使用說明
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服