APP使用monkey进行稳定性测试过程
APP使用monkey進(jìn)行穩(wěn)定性測(cè)試記錄
Monkey測(cè)試是Android自動(dòng)化測(cè)試的一種手段,Monkey測(cè)試本身非常簡(jiǎn)單,就是模擬用戶的按鍵輸入,觸摸屏輸入,手勢(shì)輸入等,看設(shè)備多長(zhǎng)時(shí)間會(huì)出異常。
當(dāng)Monkey程序在模擬器或設(shè)備運(yùn)行的時(shí)候,如果用戶出發(fā)了比如點(diǎn)擊,觸摸,手勢(shì)或一些系統(tǒng)級(jí)別的事件的時(shí)候,它就會(huì)產(chǎn)生隨機(jī)脈沖,所以可以用Monkey用隨機(jī)重復(fù)的方法去負(fù)荷測(cè)試你開(kāi)發(fā)的軟件.
最簡(jiǎn)單的方法就是用用下面的命令來(lái)使用Monkey,這個(gè)命令將會(huì)啟動(dòng)你的軟件并且觸發(fā)500個(gè)事件.
$ adb shell monkey -p your.package.name -v 500
Monkey是一個(gè)命令行工具,可以運(yùn)行在模擬器里或?qū)嶋H設(shè)備中。它向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件流,實(shí)現(xiàn)對(duì)正在開(kāi)發(fā)的應(yīng)用程序進(jìn)行壓力測(cè)試。Monkey包括許多選項(xiàng),它們大致分為四大類:
? 基本配置選項(xiàng),如設(shè)置嘗試的事件數(shù)量。
? 運(yùn)行約束選項(xiàng),如設(shè)置只對(duì)單獨(dú)的一個(gè)包進(jìn)行測(cè)試。
? 事件類型和頻率。
? 調(diào)試選項(xiàng)。
在Monkey運(yùn)行的時(shí)候,它生成事件,并把它們發(fā)給系統(tǒng)。同時(shí),Monkey還對(duì)測(cè)試中的系統(tǒng)進(jìn)行監(jiān)測(cè),對(duì)下列三種情況進(jìn)行特殊處理:
? 如果限定了Monkey運(yùn)行在一個(gè)或幾個(gè)特定的包上,那么它會(huì)監(jiān)測(cè)試圖轉(zhuǎn)到其它包的操作,并對(duì)其進(jìn)行阻止。
? 如果應(yīng)用程序崩潰(crash)或接收到任何失控異常,Monkey將停止并報(bào)錯(cuò)。
? 如果應(yīng)用程序產(chǎn)生了應(yīng)用程序不響應(yīng)(application not responding,簡(jiǎn)稱:ANR)的錯(cuò)誤,Monkey將會(huì)停止并報(bào)錯(cuò)。
按照選定的不同級(jí)別的反饋信息,在Monkey中還可以看到其執(zhí)行過(guò)程報(bào)告和生成的事件。
接下來(lái)我們就來(lái)實(shí)際操作一下monkey得測(cè)試過(guò)程
一,安裝monkey環(huán)境
1,提前下載AndroidSDK環(huán)境https://www.androiddevtools.cn/和環(huán)境變量(需要先安裝java環(huán)境)
2,配置環(huán)境教程(可以參考這個(gè)地址)https://www.jianshu.com/p/c3e1fe6f61c4
3,安卓設(shè)備(我用得是真機(jī))
二,連接設(shè)備
1,手機(jī)打開(kāi)USB調(diào)試模式
2,cmd命令行輸入 adb devices
有序列號(hào)出現(xiàn),這樣就是連接成功了
連接信息解釋:
手機(jī)設(shè)備:顯示設(shè)備的序列號(hào),如圖的3TG0221903001884
device:已識(shí)別的設(shè)備,連接成功(這種情況即連接成功)
unauthorized:沒(méi)有授權(quán),需要手機(jī)上授權(quán)后才能鏈接(手機(jī)授權(quán)一下解決)
unkown:未識(shí)別的設(shè)備(電腦按照驅(qū)動(dòng))
offine:離線設(shè)備(設(shè)備和電腦斷開(kāi)連接了)
三,monkey得常用命令,
1,adb shell monkey:查看所有支持的monkey命令
2,打開(kāi)cmd,輸入adb shell monkey查看所有支持得monkey命令
2,adb shell monkey 100:隨機(jī)發(fā)送100次操作(針對(duì)整個(gè)手機(jī)),count指事件,100即100次事件
3,monkey命令-事件間隔
1,adb shell monkey --throttle 1000 10:發(fā)送10個(gè)事件,1秒一個(gè)。1000指1000毫秒,10指10次,即一秒一次,一共10次,throttle用來(lái)控制事件發(fā)送頻率
2,adb shell monkey --throttle 6000 10:發(fā)送10個(gè)事件,持續(xù)時(shí)間一分鐘
4,monkey命令-指定包運(yùn)行
1,-p此參數(shù)指定了一個(gè)包,monkey將至允許系統(tǒng)啟動(dòng)這些包里的activity
5,查詢指定包名
1,adb shell dumpsys window w | findstr / | findstr name= 打開(kāi)指定的APP在輸入這個(gè)指令可以找到指定包的報(bào)名(建議用這種,手機(jī)上安裝的app比較多的時(shí)候不好找)
2,adb shell pm list package -3 (查看手機(jī)上安裝的第三方安裝包)
3,adb shell pm list packages:找到手機(jī)所有包名
4,-p -p 如果此參數(shù)指定了幾個(gè)包,monkey將只允許系統(tǒng)啟動(dòng)這些包里的activity
四,查找包名進(jìn)行monkey測(cè)試
1,手機(jī)先啟動(dòng)要測(cè)試得程序,然后輸入命令行adb shell dumpsys window w | findstr / | findstr name=
找到包名
2,輸入命令行adb shell monkey -p 包名 --throttle 500 50 跑這個(gè)程序,50次,500毫秒一次(根據(jù)實(shí)際可隨意調(diào)整參數(shù))
–throttle 500 設(shè)定延時(shí)
3,這樣就算簡(jiǎn)單得跑起來(lái)了,當(dāng)然你可以自己設(shè)定跑得次數(shù),
五,查看結(jié)果,輸出日志
1,可以跑起來(lái)后,那我們要怎么才知道是不是穩(wěn)定,有沒(méi)有出現(xiàn)問(wèn)題,那這時(shí)候就需要查看日志了,
首先,我們要?jiǎng)?chuàng)建一個(gè)文件夾,這是我之前就創(chuàng)建好了得,D盤下創(chuàng)建一個(gè)叫monkey得文件夾
然后在輸入命令行adb shell monkey -p com.jialan.taishan.activity -v 1000 >D:\limengqian\monkey\monkey.log 添加包名,
-v顯示默認(rèn)程度的信息,后面>添加文件夾得路徑,\monkey.log 是日志得名稱,
運(yùn)行后,會(huì)在monkey得文件夾下自動(dòng)添加\monkey.log日志
monkey.log日志只是記錄monkey事件得過(guò)程,最終問(wèn)題我們還是需要結(jié)合logcat日志來(lái)分析問(wèn)題
2,獲取logcat日志(logcat日志,記錄了用戶的在系統(tǒng)上的所有操作)
1)、先清空系統(tǒng)上原有的logcat日志:adb logcat -c
2)、獲取logcat日志:adb logcat -v time > D:\limengqian\monkey\logcat.log – 把logcat日志導(dǎo)入到D盤的monkey目錄下。
這些做完后,就可以再次輸入命令跑起來(lái)拉,
monkey跑后,會(huì)出現(xiàn)如下日志:
//activityResuming(com.android.settings)
//activityResuming(com.android.settings)
— 表示一個(gè)APP從前臺(tái)調(diào)入后臺(tái),然后又從后臺(tái)恢復(fù)到前臺(tái)的過(guò)程,每做一次這樣的動(dòng)作,就會(huì)產(chǎn)生一行這樣的信息。
這里表示"com.jialan.taishan.activity做了兩次這樣的動(dòng)作。
六,分析monkey日志
Monkey 日志由以下幾部分組成:
(1) 測(cè)試命令信息:隨機(jī)種子 seed、運(yùn)行次數(shù)、可運(yùn)行應(yīng)用列表、各事件百分比。
偽隨機(jī)事件流:記錄各種隨機(jī)操作及中間的延遲時(shí)間,主要是以下幾種操作:
測(cè)試結(jié)果信息:完成時(shí)間數(shù),其他信息
logcat日志分析問(wèn)題
logcat日志分析的基本步驟。
1,如果是ANR(Android Not Responding)問(wèn)題(具體的表現(xiàn)是,系統(tǒng)出現(xiàn)類似這樣的提示:APP提示無(wú)法響應(yīng),是結(jié)束進(jìn)行還是繼續(xù)等待), 則搜索“ANR” 或 'anr in’關(guān)鍵詞。 快速定位到關(guān)鍵事件信息 。
如:
12-02 21:31:22.350 E/ActivityManager( 389): ANR in com.android.settings (com.android.settings/.SubSettings)
12-02 21:31:22.350 E/ActivityManager( 389): PID: 676
2,如果是系統(tǒng)crash(具體的表現(xiàn)是,系統(tǒng)出現(xiàn)類似這樣的提示:很抱歉,“xxx”已停止運(yùn)行),會(huì)有這些關(guān)鍵字:java.lang.NullPointerException。
舉個(gè)例子
本例子,我們?cè)趌ogcat日志中搜索anr in,發(fā)現(xiàn)以下日志:
這個(gè)日志的意思是,app出現(xiàn) ANR的問(wèn)題,進(jìn)程號(hào)是676,ANR的跟蹤日志在/data/anr/traces.txt文件里。
接下來(lái),我們通過(guò)ADB命令adb pull /data/anr/traces.txt D:\apk\獲取出traces.txt文件。我們把這個(gè)文件提供給開(kāi)發(fā)定位即可。
總結(jié)
以上是生活随笔為你收集整理的APP使用monkey进行稳定性测试过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 汽车租赁系统测试java,Java测试-
- 下一篇: 汽车租赁APP