日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

APP性能测试之monkey

發(fā)布時(shí)間:2023/12/20 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 APP性能测试之monkey 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

APP性能測(cè)試之monkey

1 monkey 是做什么的?

monkey 是 Android 中的一個(gè)命令行工具,由 java 編寫(xiě),可以運(yùn)行在模擬器里或?qū)?際設(shè)備中。?
它向系統(tǒng)發(fā)送偽隨機(jī)的用戶(hù)事件流(如按鍵輸入、觸摸屏輸入、手勢(shì)輸入等),實(shí)現(xiàn) 對(duì) APP 進(jìn)行壓力測(cè)試。

monkey 測(cè)試是一種為了測(cè)試軟件的穩(wěn)定性、健壯性的快速有效的方法。?

安裝好SDK和avd模擬器,就直接可以允許monkey命令

2 monkey 的優(yōu)劣?

優(yōu)勢(shì)

脫離 Case 的依賴(lài)?
可封裝自動(dòng)化執(zhí)行?
可封裝后作為客戶(hù)端性能測(cè)試的驅(qū)動(dòng)?

缺陷

完全隨機(jī),不可控?


3 monkey 命令?

adb shell monkey -p 包名 1 -p 包名 2 … 事件數(shù) ?

-p
如果用此參數(shù)指定了一個(gè)或幾個(gè)包,monkey 將只允許系統(tǒng)啟動(dòng)這些包里 的 Activity。
如果你的應(yīng)用程序還需要訪問(wèn)其它包里的 Activity,那些包也 需要在此同時(shí)指定。
如果不指定任何包,monkey 將允許系統(tǒng)啟動(dòng)全部包
里的 Activity。

要指定多個(gè)包,需要使用多個(gè) -p 選項(xiàng),每個(gè)-p 選項(xiàng)只能 用于一個(gè)包。?

-v
指定打印信息的詳細(xì)級(jí)別,一個(gè) -v 增加一個(gè)級(jí)別。?
日志級(jí)別 Level 0,缺省值,僅提供啟動(dòng)提示、測(cè)試完成和最終結(jié)果等少 量信息,-v;?
日志級(jí)別 Level 1,提供較為詳細(xì)的日志,包括每個(gè)發(fā)送到 Activity 的事 件信息,-v -v;?
日志級(jí)別 Level 2,最詳細(xì)的日志,包括了測(cè)試中選中/未選中的 Activity 信息,-v -v -v。?

adb shell monkey -p welab.bank.mobile.stage -v -v -v 100

將log保存至本地文件:adb shell monkey -p welab.bank.mobile.stage -v -v -v 500 > D:/monkey.txt

測(cè)試結(jié)果如下圖所示,顯示了一些參數(shù)

顯示事件的百分比

操作了哪100個(gè)事件

花費(fèi)時(shí)間,總共事件統(tǒng)計(jì),網(wǎng)絡(luò)連接狀態(tài),Monkey finished

4 monkey 結(jié)果分析?

adb shell monkey -p –v -v –v > log.txt ?可以將結(jié)果存儲(chǔ)起來(lái)?

正常情況,如果 monkey 測(cè)試順利執(zhí)行完成,在 log 最后,會(huì)打印出當(dāng)前執(zhí)行事件 的次數(shù)和所花費(fèi)的時(shí)間?


Monkey finished?

打開(kāi) LOG,查看 log 的最下端,是否有類(lèi)似以下字段:?
Network stats: elapsed time=5123ms (5123ms mobile, 0ms wifi, 0ms not connected)?
Monkey finished ?這個(gè)字段表明本次的 Monkey 沒(méi)有異常,測(cè)試通過(guò)。?

CRASH?

如果搜索到有結(jié)果,則表明有進(jìn)程出現(xiàn)問(wèn)題,測(cè)試不通過(guò)。?
CRASH: com.onekchi.downloadmanager (pid 12919)?

ANR?

如果有搜索結(jié)果,則表示測(cè)試過(guò)程中,測(cè)試對(duì)象出現(xiàn)了無(wú)響應(yīng)的現(xiàn)象,因 此測(cè)試不通過(guò)

一、Monkey介紹
顧名思義,Monkey就是猴子, ?Monkey測(cè)試,就像一只猴子, 在電腦面前,亂敲鍵盤(pán)在測(cè)試。 ?猴子什么都不懂, 只知道亂敲
通過(guò)Monkey程序模擬用戶(hù)觸摸屏幕、滑動(dòng)Trackball、 按鍵等操作來(lái)對(duì)設(shè)備上的程序進(jìn)行壓力測(cè)試,檢測(cè)程序多久的時(shí)間會(huì)發(fā)生異常

二、 Monkey用來(lái)做什么
Monkey 主要用于Android的穩(wěn)定性測(cè)試,自動(dòng)的一個(gè)壓力測(cè)試小工具, 主要目的就是為了測(cè)試app 是否會(huì)Crash(崩潰)

三、 Monkey程序介紹
1、 Monkey程序由Android系統(tǒng)自帶,使用Java語(yǔ)言寫(xiě)成,在Android文件系統(tǒng)中的存放路徑是: /system/framework/monkey.jar;
2、 Monkey.jar程序是由一個(gè)名為“monkey”的Shell腳本來(lái)啟動(dòng)執(zhí)行,shell腳本在Android文件系統(tǒng)中 的存放路徑是:/system/bin/monkey; ?
3、Monkey 命令啟動(dòng)方式: ? ?
a、可以通過(guò)PC機(jī)CMD窗口中執(zhí)行: adb shell monkey {+命令參數(shù)}來(lái)進(jìn)行Monkey測(cè)試 ? ? ? ? ?
b、在PC上adb shell 進(jìn)入Android系統(tǒng),通過(guò)執(zhí)行 monkey {+命令參數(shù)} 來(lái)進(jìn)行Monkey 測(cè)試 ? ? ? ? ?
c、在Android機(jī)或者模擬器上直接執(zhí)行monkey 命令,可以在Android機(jī)上安裝Android終端模擬器

四、Monkey 命令 基本參數(shù)介紹
1、使用monkey測(cè)試手機(jī)所有程序
命令:adb shell monkey 100(執(zhí)行100次)

2、 -p <允許的包名列表>
命令:
獲取手機(jī)中所有的第三方包名:adb shell pm list packages -3
執(zhí)行該包名:adb shell monkey -p com.kmxs.reader 1000

3、 顯示日志詳細(xì)程度
命令:adb shell monkey -p com.kmxs.reader -v 30 ? ? ? ?// 缺省值,僅提供啟動(dòng)提示、測(cè)試完成和最終結(jié)果等少量信息
命令:adb shell monkey -p com.kmxs.reader -v -v 30 ? ? ? ?// 提供較為詳細(xì)的日志,包括每個(gè)發(fā)送到Activity的事件信息
命令:adb shell monkey -p com.kmxs.reader -v -v -v 30 ? ? ? ?// 最詳細(xì)的日志,包括了測(cè)試中選中/未選中的Activity信息

4、Monkey日志分析
命令:adb shell monkey -p com.kmxs.reader -v -v 30 >D:/日志/1.txt
正常情況, ?如果Monkey測(cè)試順利執(zhí)行完成, 在log的最后, 會(huì)打印出當(dāng)前執(zhí)行事件的次數(shù)和所花費(fèi)的時(shí)間; // Monkey finished 代表執(zhí)行完成\

5、-s 隨機(jī)數(shù)種子
命令:adb shell monkey -s 10 100
用亍指定偽隨機(jī)數(shù)生成器的seed值,如果seed相同,則兩次Monkey測(cè)試所產(chǎn)生的事件序列也相同的

6、--throttle <毫秒>
命令:adb shell monkey -p com.kmxs.reader --throttle 300 100

7、--pct-touch 觸摸事件 和 ?--pct-motion 手勢(shì)事件
命令:adb shell monkey -v --pct-touch 70 20
調(diào)整觸摸事件的百分比。(觸摸事件是指在屏幕中的一個(gè)down-up事件,即在屏幕某處按下并抬起的操作)
–pct-touch:觸摸事件。即在某一位置的Down-Up(手指的放下和抬起)事件。Down(ACTION_DOWN)和Up(ACTION_UP)的坐標(biāo)臨近,但并非相同
如:adb shell monkey --pct-touch 67 -v 10
表示執(zhí)行10個(gè)偽隨機(jī)用戶(hù)事件流,并調(diào)整其中觸摸事件的百分比為67%。
注:此參數(shù)設(shè)置要適應(yīng)當(dāng)前被測(cè)應(yīng)用程序的操作,比如一個(gè)應(yīng)用80%的操作都是觸摸,那就可以將此參數(shù)的百分比設(shè)置成相應(yīng)較高的百分比
命令:adb shell monkey --pct-motion 67 -v 10
調(diào)整手勢(shì)事件motion事件百分比。(motion事件是由屏幕上某處一個(gè)down事件、一系列偽隨機(jī)的移動(dòng)事件和一個(gè)up事件組成)
–pct-motion:動(dòng)作事件。以Down(ACTION_DOWN)開(kāi)始,Up(ACTION_UP)結(jié)尾,中間至少有一次Move(ACTION_MOVE)
如:adb shell monkey --pct-motion 67 -v 10
表示執(zhí)行10個(gè)偽隨機(jī)用戶(hù)事件流,并調(diào)整其中動(dòng)作事件的百分比為67%。
注:這里的移動(dòng)是直線滑動(dòng)

Event percentages:
0:--pct-touch//touch
events percentage觸摸事件百分比(觸摸事件是一個(gè)在屏幕單一位置的按下-抬起事件)

1:--pct-motion//motion
events percentage手勢(shì)事件百分比(手勢(shì)事件是由一個(gè)在屏幕某處的按下事件、一系列的偽隨機(jī)移動(dòng)、一個(gè)抬起事件組成)即一個(gè)滑動(dòng)操作,但是是直線的,不能拐彎

2:--pct-pinchzoom//pinch
zoom events percentage二指縮放百分比,即智能機(jī)上的放大縮小手勢(shì)操作

3:--pct-trackball//trackball ?即單純的Move(ACTION_MOVE)
events percentage軌跡球事件百分比(軌跡球事件包括一個(gè)或多個(gè)隨機(jī)移動(dòng),有時(shí)還伴有點(diǎn)擊。軌跡球現(xiàn)在智能手機(jī)上已經(jīng)沒(méi)有了,就是類(lèi)似手柄的方向鍵一樣)

4:--pct-rotation//screen
rotation events percentage屏幕旋轉(zhuǎn)百分比,橫屏豎屏

5:--pct-nav//nav 基本導(dǎo)航事件。即來(lái)自于方向輸入設(shè)備的上下左右操作。
events percentage”基本”導(dǎo)航事件百分比(導(dǎo)航事件包括上下左右,如方向輸入設(shè)備的輸入)老手機(jī)的上下左右鍵,智能機(jī)上沒(méi)有

6:--pct-majornav//major 即Navigation Bar的確認(rèn),菜單,返回鍵等
nav events percentage”主要”導(dǎo)航事件百分比(這些導(dǎo)航事件通常會(huì)引發(fā)UI的事件,例如5-way pad的中間鍵、回退鍵、菜單鍵)

7:--pct-syskeys//system(key)
operations percentage”系統(tǒng)”按鈕事件百分比(這些按鈕一般專(zhuān)供系統(tǒng)使用,如Home, Back, Start Call, End Call,音量控制)

8:--pct-appswitch//app
switch events percentage啟動(dòng)activity事件百分比。在隨機(jī)的間隔里,Monkey會(huì)執(zhí)行一個(gè)startActivity()調(diào)用,作為最大程度覆蓋包中全部Activity的一種方法

9:--pct-flip//keyboard
flip percentage鍵盤(pán)輕彈百分比,如點(diǎn)擊輸入框,鍵盤(pán)彈起,點(diǎn)擊輸入框以外區(qū)域,鍵盤(pán)收回

10:--pct-anyevent//anyevents ?該事件可能包含其他上述事件。
percentage其他類(lèi)型事件百分比。包括了其他所有的類(lèi)型事件,如按鍵、其他不常用的設(shè)備上的按鈕等等

8、 --ignore-crashes

正常操作,不忽略異常
命令:adb shell monkey -p com.kmxs.reader 100 >D:/日志/2.txt

忽略異常
命令:adb shell monkey -p com.kmxs.reader --ignore-crashes 1000 >D:\日志\4.txt

9、 --ignore-timeouts(ANR)
命令:adb shell monkey --ignore-timeouts –v 10

10、Monkey 實(shí)例
命令:adb shell monkey -p com.kmxs.reader -s 23 ?--throttle 2000 --ignore-crashes --ignore-timeouts -v -v -v 10000 >D:/日志/log.txt

11、Monkey異常分析
一般我們可以一次發(fā)送5萬(wàn)次隨機(jī)事件的請(qǐng)求,每個(gè)請(qǐng)求之間的間隔為150毫秒,測(cè)試大約會(huì)進(jìn)行40min,完成以后就可以查看日志。?

日志中可能的錯(cuò)誤:
1.程序奔潰,crash (ctrl+f搜索)
2.程序無(wú)響應(yīng),ApplicationNo Response(ctrl+f搜索‘ANR ’,加空格是為了屏蔽掉一些無(wú)效信息)
3.其他問(wèn)題:在日志中搜索”Exception”。
Monkey 執(zhí)行中斷, 在log最后也能看到當(dāng)前執(zhí)行次數(shù)

?
?

總結(jié)

以上是生活随笔為你收集整理的APP性能测试之monkey的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。