monkey及其的日志管理和分析


1.   monkey

1.1.  介紹

  • 通過monkey程序模擬用戶觸摸屏幕,滑動Trackball、按鍵等操作來對設備上的程序進行壓力測試,檢測程序多久的時間會發生異常,檢查和評估被測程序的穩定性
  • 官方:Monkey是一個程序,運行在您的模擬器或設備上,並生成偽隨機的用戶事件流,如點擊,觸摸或手勢,以及一些系統級事件。 您可以使用Monkey以隨機但可重復的方式對您正在開發的應用程序進行壓力測試。
  • 主要用於Android的壓力測試,自動的一個壓力測試小工具。目的是為了測試APP是否會crash
  • 用戶主要是通過adb命令來啟動Monkey的,Monkey在運行時,會根據命令行參數的配置,生成偽隨機的事件流,並在Android設備上執行對應的測試事件。同時,Monkey還會對測試系統進行監測,當出現以下幾種情況時會進行特殊處理:

  1、如限定了Monkey運行在特定包上,當監測到試圖轉到其他包的操作,將對其進行阻止。

  2、如應用程序崩潰或接收到任何失控異常,Monkey將記錄對應的錯誤日志,並根據命令行參數判斷是停止運行還是繼續運行。

  3、如果應用程序發生了程序無響應(application not responding)的錯誤,Monkey將記錄對應的錯誤日志,並根據命令行參數判斷是停止運行還是繼續運行。

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

1.2.  流程

1、通過名為“monkey”的Shell腳本去啟動Monkey.jar程序。

  啟動腳本是一個shell腳本,在Android文件系統的存放路徑是:/system/bin/monkey。

2、在指定的APP上模擬用戶點擊,滑動,輸入等操作以極快的速度來對設備程序進行壓力測試。

3、檢測程序是否會發生異常如:crash,然后通過日志進行排錯。

1.3.  啟動及關閉

  • monkey啟動方式:

    1、通過pc cmd命令:adb shell monkey {+命令參數}進行monkey測試。(連接上移動設備)

         2、在pc上’adb shell’進入Android系統,’cd /system/bin’進入指定目錄,輸入’monkey’有usage說明啟動成功,再執行monkey {+命令參數}。(連接上移動設備)

         3、Android機或模擬器上直接執行monkey命令,在真機上安裝Android終端模擬器

  • 強制關閉monkey

  1、adb shell ps 查看全部在運行的進程

  2、查找出com.android.commands.monkey 進程PID

  3、adb shell kill pid:殺掉monkey進程

  • monkey測試中,如何終止運行

         方法一:

                   新建一個窗口

                   執行: adb shell

                   再執行ps | grep monkey,返回來的第一個數字,即是monkey的進程號

                   然后kill pid 進程號

         方法二:

                   對手機進行重啟😂

                   新建一個窗口

                   執行adb reboot

1.4.  命令

  • monkey程序由Android系統自帶,使用java語言寫成,在Android文件系統中的存放路徑是:/system/framework/monkey.jar
  • monkey命令格式:adb shell monkey [options] <event-count>

  [options] 是指monkey可傳入的參數,是可選項(如果不指定options,Monkey將以無反饋模式啟動,並把事件任意發送到安裝在目標環境中的全部包)

  <event-count> 是指隨機發送事件數。如:輸入100就是執行100個偽隨機事件,為必選項。

1.5. 日志管理作用及日志分析

  • Monkey日志管理是Monkey測試中非常重要的一個環節,通過日志管理分析,可以獲取當前測試對象在測試過程中是否會發生異常,以及發生的概率,同時還可以獲取對應的錯誤信息,幫助開發定位和解決問題。
  • monkey日志保存方法:

  1.保存在PC中:>adb shell monkey [option] <count> >d:\monkey.txt

  eg:C:\Users\Shuqing>adb shell monkey -v -v 100 >d:\monkeylog.txt

  2.保存在手機上:C:\Users\Shuqing>adb shell回車;monkey -v 100 >/sdcard/monkeylog.log

  注意:不能寫成C:\Users\Shuqing>adb shell monkey -f /sdcard/kyb.txt -v 1 > /mnt/sdcard/monkey.log 否則會報錯“系統找不到指定的路徑”。

  3.標准流和錯誤流分開保存:Monkey [option] <count> 1>/sdcard/monkey.txt 2>/sdcard/error.txt

  C:\Users\Shuqing>adb shell monkey -v 100 1>d:\monkey.log  2>d:\error.log

  執行以上命令,Monkey的運行日志和異常日志將被分開保存。此時Monkey的運行日志將被保存在monkey.txt文件中,而異常日志將被保存在D盤下的error.txt中。

  • 日志分析:

  1.正常:monkey測試順利執行完成,在log的最后,會打印當前執行時間的次數和所花費的時間。Monkey finished代表執行完成

  2.異常:出現錯誤后的分析步驟----看monkey的日志(注意第一個switch及異常信息等)

    a程序無響應的問題:在日志中搜索‘ANR’

         b奔潰問題:在日志中搜索‘exception’----出現空指針,NullPointerException,是bug。

         monkey執行中斷,在log最后也能看到當前執行次數。

        

         3.看問題:

         A monkey執行時未加--ignore-crashes --ignore-crashes參數,就先瀏覽日志中Events injected: 值,查看當前已執行的次數,就知道有無bug

    B 程序無響應的問題:在日志中搜索 “ANR”

         C 崩潰問題:在日志中搜索“Exception”,常見的Java異常:

           算術異常類:ArithmeticExecption;空指針異常類:NullPointerException

        類型強制轉換異常:ClassCastException;數組負下標異常:NegativeArrayException

          數組下標越界異常:ArrayIndexOutOfBoundsException

          違背安全原則異常:SecturityException;文件已結束異常:EOFException

          文件未找到異常:FileNotFoundException;

    字符串轉換為數字異常:NumberFormatException

         操作數據庫異常:SQLException;輸入輸出異常:IOException

       違法訪問錯誤:IllegalAccessError;內存不足錯誤:OutOfMemoryError

         堆棧溢出錯誤:StackOverflowError

    其他,請參考:https://www.cnblogs.com/cvst/p/5822373.html

  D 找出問題后的操作步驟:

          找到是monkey里面的哪個地方出錯

          查看Monkey里面出錯前的一些事件動作,並手動執行該動作

          若以上步驟還不能找出,可以再執行一遍monkey命令,注意seed值要一樣


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM