Monkey測(cè)試

一、簡(jiǎn)介

monkey testing,也有人叫做搞怪測(cè)試。就是用一些稀奇古怪的操作方式去測(cè)試被測(cè)試系統(tǒng),以測(cè)試系統(tǒng)的穩(wěn)定性。monkey test,一般指這樣的測(cè)試活動(dòng),用毫無(wú)規(guī)律的指令或操作使用被測(cè)系統(tǒng),觀察系統(tǒng)的穩(wěn)定性和容錯(cuò)性能

二、原理

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è)試你開發(fā)的軟件.

三、特點(diǎn)

  1. 基于Android測(cè)試開發(fā)環(huán)境
  2. 需要獲取對(duì)應(yīng)程序包
  3. 一般是產(chǎn)品穩(wěn)定后,或者首輪功能測(cè)試完成后進(jìn)行Monkey測(cè)試
  4. Monkey測(cè)試的操作事件是隨機(jī)進(jìn)行,而不是刻意指定
  5. 主要測(cè)試產(chǎn)品是否存在崩潰問(wèn)題和ANR問(wèn)題

四、獲取包名的方法

  1. 向開發(fā)人員索取應(yīng)用程序包名

  2. adb命令獲取包名

    直接獲取當(dāng)前開啟應(yīng)用的包名

adb shell dumpsys activity | find "mFocusedActivity"

結(jié)果:

mFocusedActivity: ActivityRecord{15300bd2 u0 com.tencent.mm/.ui.LauncherUI t3}

注意:改命令在Android 8.0之下可以使用,8.0以上會(huì)存在問(wèn)題,修改命令如下即可:

adb shell dumpsys activity | find "mResumeActivity"
  1. adb logcat獲取包名,命令如下:
adb shell "logcat | grep START"

如果,無(wú)法獲取,首先,檢查設(shè)備是否連接成功,然后命令進(jìn)入shell,再獲取包名

adb shell

接著,輸入命令:

# logcat | grep START

然后,在手機(jī)或者模擬器中打開想要獲取的應(yīng)用程序,接著在adb命令行中會(huì)自動(dòng)獲取到對(duì)應(yīng)的程序包名。

  1. 從data數(shù)據(jù)中獲取包名

首先,是進(jìn)行shell

adb shell

然后,再找到shell中的data文件夾

root@shamu:/ # cd data
root@shamu:/data # ls

再找到data文件夾下的data文件

root@shamu:/data # cd data
root@shamu:/data/data # ls

結(jié)果,就可以查看到手機(jī)中安裝的所有應(yīng)用程序包名:

五、基本語(yǔ)法

# -p:packageName
# -v:日志級(jí)別,顯示程序的執(zhí)行測(cè)試反饋信息
# 100:事件數(shù)

adb shell monkey -p 包名 -v 100

六、日志級(jí)別

參數(shù): -v 用于指定反饋信息級(jí)別(信息級(jí)別就是日志的詳細(xì)程度),總共分3個(gè)級(jí)別。

分別對(duì)應(yīng)的參數(shù)如下表所示:

  1. 日志級(jí)別 Level0
adb shell monkey -p 包名 –v 100

說(shuō)明 缺省值,僅提供啟動(dòng)提示、測(cè)試完成和最終結(jié)果等少量信息

  1. 日志級(jí)別 Level 1
adb shell monkey -p 包名 –v -v 100

說(shuō)明 提供較為詳細(xì)的日志,包括每個(gè)發(fā)送到Activity的事件信息

  1. 日志級(jí)別 Level 2
adb shell monkey -p 包名 –v -v –v 100

說(shuō)明 最詳細(xì)的日志,包括了測(cè)試中選中/未選中的Activity信息

七、偽隨機(jī)數(shù)生成器

應(yīng)用場(chǎng)景:在測(cè)試時(shí),發(fā)現(xiàn)程序有bug,那么可以通過(guò)此方法,復(fù)現(xiàn)bug。因?yàn)榧?s后,monkey執(zhí)行的操作將會(huì)固定,若不加-s那么monkey的操作將會(huì)隨機(jī)進(jìn)行。

參數(shù): -s 用于指定偽隨機(jī)數(shù)生成器的seed值,如果seed相同,則兩次Monkey測(cè)試所產(chǎn)生的事件序列也相同的。 示例:

Monkey測(cè)試1:

adb shell monkey -p 包名 –s 10 1000

Monkey 測(cè)試2:

adb shell monkey -p 包名 –s 10 1000

兩次測(cè)試的效果是相同的,因?yàn)槟M的用戶操作序列(每次操作按照一定的先后順序所組成的一系列 操作,即一個(gè)序列)是一樣的。

操作序列雖然是隨機(jī)生成的,但是只要我們指定了相同的Seed值,就可以保證兩次測(cè)試產(chǎn)生的隨機(jī)操作序列是完全相同的,所以這個(gè)操作序列偽隨機(jī)的。

八、事件類型

  • --pct-touch:指定觸摸事件的百分比,如:--pct-touch 5
  • --pct-motion (滑動(dòng)事件)
  • --pct-trackball (軌跡球事件)
  • --pct-nav (導(dǎo)航事件 up/down/left/right)
  • --pct-majornav (主要導(dǎo)航事件 back key 、 menu key)
  • --pct-syskeys (系統(tǒng)按鍵事件 Home 、Back 、startCall 、 endCall 、 volumeControl)
  • --pct-appswitch (activity之間的切換)
  • --pct-anyevent (任意事件)

九、ANR日志導(dǎo)出

Android系統(tǒng)的ANR日志存放在/data/anr/traces.txt中,其中包含應(yīng)用程序每個(gè)線程堆棧信息。測(cè)試人員或者開發(fā)人員可以根據(jù)這個(gè)信息定位bug。ANR日志文件traces.txt導(dǎo)出手機(jī)操作如下:

  • 首先進(jìn)入shell
adb shell
  • 然后,復(fù)制ANR日志文件traces.txt至具有讀寫操作的文件中
cp /data/anr/traces.txt  /sdcard/traces.txt  
  • 最后,pull命令導(dǎo)出至計(jì)算機(jī)
adb pull /sdcard/traces.txt

十、Crash日志導(dǎo)出

執(zhí)行壓力測(cè)試,并且生成monkey_test.log日志文件。

adb shell monkey -p cn.besttest.crashtest -v 100 >D:\monkey\monkey_crash.log

查看E盤文件夾下已經(jīng)生成了monkey_crash.log。

十一、結(jié)果分析

  • 按關(guān)鍵字進(jìn)行搜索,ANR、Exception、Crash、Error。

ANR問(wèn)題(程序無(wú)響應(yīng)):在日志中搜索“ANR"(application no response)

閃退問(wèn)題:在日志中搜索"crash"

異常:搜索"exception"

強(qiáng)制退出:搜索"force closed"

  • 找到有問(wèn)題的地方,查看上下文信息。注意第一個(gè)switch上下文信息。
  • 查看monkey里面出錯(cuò)前的一些事件動(dòng)作,可以手動(dòng)執(zhí)行該動(dòng)作。
  • 進(jìn)行問(wèn)題復(fù)現(xiàn),可以使用之前執(zhí)行的monkey命令在執(zhí)行一遍,注意seed值要一樣。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 注意:應(yīng)該是monkey -p your.package.name -v 500 這條命令,前面沒(méi)有adb she...
    Ten_Minutes閱讀 802評(píng)論 0 0
  • 一:簡(jiǎn)介 Monkey測(cè)試是Android平臺(tái)自動(dòng)化測(cè)試的一種手段 通過(guò)Monkey程序模擬用戶觸摸屏幕、滑動(dòng)Tr...
    zi子龍long閱讀 542評(píng)論 0 1
  • Monkey測(cè)試: Monkey是一個(gè)命令行工具,可以運(yùn)行在模擬器和真實(shí)設(shè)備上。它向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件流,實(shí)...
    蕭十一郎456閱讀 1,139評(píng)論 0 0
  • 感謝主持人的精彩介紹,首先問(wèn)候第十屆家人們晚上好,感恩大濕兄創(chuàng)辦夢(mèng)享學(xué)院,我是十二批的天使 目前是三組巔峰戰(zhàn)隊(duì)十五...
    熊芳菲閱讀 936評(píng)論 0 0
  • 喝多了就只知道笑,什么煩心的都去他媽的吧。
    nofantasy閱讀 202評(píng)論 0 0

友情鏈接更多精彩內(nèi)容