Android studio測試軟件——Monkey學習及運用


  Android studio測試軟件——Monkey學習及運用

在第十五周的個人博客上,王老師安排我們根據最終的團隊大作業所用的軟件(Android studio)進行軟件測試的介紹,而我選擇的是基於Android自動化測試的Monkey runner安卓測試軟件,它將作為我們項目最后成品的效率測試工具。

1、Monkey runner簡介

Monkey runner即android SDK中自帶的工具之一,此工具提供API可按制android設備或模擬器。

Monkey runner提供了一個API,使用此API寫出的程序可以在Android代碼之外控制Android設備和模擬器。通過monkey runner,您可以寫出一個Python程序去安裝一個Android應用程序或測試包,運行它,向它發送模擬擊鍵,截取它的用戶界面圖片,並將截圖存儲於工作站上。

Monkey runner工具的主要目的是用於測試功能/框架水平上的應用程序和設備,或用於運行單元測試套件,但您當然也可以將其用於其它目的。

那么在本文中,首先,我們將介紹什么是money測試工具,如何在安卓軟件中運用此測試軟件進行測試。

2、Monkey 的命令特性和選項分類

  Monkey是一個命令行工具,可以運行在模擬器里或實際設備中。它向系統發送偽隨機的用戶事件流,實現對正在開發的應用程序進行壓力測試。Monkey包括許多選項,它們大致分為四大類:

· 基本配置選項,如設置嘗試的事件數量。

· 運行約束選項,如設置只對單獨的一個包進行測試。

· 事件類型和頻率。

· 調試選項

它是Android系統自帶一個命令行工具,可以運行在模擬器里或者真是設備中運行。

monkey向系統發送偽隨機的用戶事件流,實現對正在開發的應用程序進行壓力測試。

3、Monkey命令參數介紹

   monkey前的准備(命令)→此處我們也可以在Android studio的terminal中進行,也可以在cmd命令框中進行,但手機與電腦需進行USB連接,並在開發者選項中選中USB調試。而如果你不是測試自己手機上的,如果你采用模擬器測試,你應該先啟動Android studio,然后設置好模擬器,並進入模擬器測試狀態。

當我在自己的電腦上輸入adb命令時,其顯示:'adb' 不是內部或外部命令,也不是可運行的程序或批處理文件。即說明環境配置還沒有完全

 

因此以下步驟是如何配置環境,使系統中由adb命令。

①下載SDK(Software Develpoment Kit):軟件開發程序包

  但是此步驟基本上不用操作,因為在下載完Android studio后,就應當自動配置完畢,如果沒有配置完畢,可以進入官網進行相應版本的下載。

https://android-sdk.en.softonic.com/

 

在文件夾中就會出現sdk軟件。接着,進入電腦設置中的高級設置以及環境變量配置中。

 

 

在系統變量下面點擊新建,輸入的變量名為ANDROID_HOME,變量值為SDK的存儲路徑,你存在哪里就填那個地址,我是存在D盤中路徑為如下:D:\adt-eclipse\sdk 填寫完以后,確定保存。

 

 

設置path,因為系統本來就有這個變量,點開這個變量,在變量值的最后加入;%ANDROID_HOME%\tools 然后保存進入下一步。

 

 

當我們再次打開cmd輸入adb之后,就會成功顯示輸入adb devices,真機和模擬器名稱。

 

 

4、Monkey命令測試過程

①當我們在cmd的命令中輸入adb shell monkey 或者 adb shell monkey -help命令之后,我們可以查看到monkey中的help選項命令,包括圖和通過腳本文件進行monkey測試等等。

 

 

② 如果在monkey參數中不指定任何參數,monkey所得到的動作都是隨機分配的,9個動作其每個動作分配的百分比之和為100%,我們可以通過添加命令選項來控制每個事件的百分比,進而可以將操作限制在一定的范圍內。

我操作了一下不加動作百分比控制,系統默認分配事件百分比的情況。

 

 

再看一下指定事件,控制事件百分比之后的情況

命令:adb shell monkey -v -p your.www.com --pct-anyevent 100 500

 

說明:--pct-anyevent 100 表明pct-anyevent所代表的事件的百分比為100%。

③ 應用程序包都在data目錄中的data目錄下,我們輸入命令:cd data/data 進入目標data文件夾,在執行命令:ls,可找到剛才加載項目的應用程序包。

而當我們再次輸入adb shell的時候:

 

參數介紹:

最后的500,表示測試觸發500個事件(500個事件要按比例分攤到9個事件當中,如何指定不同的事件比例上面已經說過了)。

如果在事件之間插入延時,使用參數:--throttle 5000 這里的5000為毫秒單位。通過這個選項,可以降低monkey的執行速度;如果不指定該選項,Monkey將不會被延遲,事件將盡可能快的被產生。

-s <seed> 偽隨機數生成器的seed值。如果用相同的seed值再次運行monkey,它將生成相同的事件序列,對9個事件分配相同的百分比。

-v 命令行的每一個-v將增加反饋信息的級別。

而當我們想測試所連接的手機,不讓手機進入鎖屏狀態。

查看包名:查看電腦中某一位置的apk文件的包名:電腦打開CMD-進入TMG目錄-運行設備--查看包名aapt dump badging *.apk(apk文件的路徑,可以直接拖拽)。

 

或者直接查看手機中存在的apk包,進入adb shell 命令后---手機的data/data文件夾--ls查看所有包名 找到要測apk的包名

 

運行monkey,對此包進行300次無規律點擊。

 

或者運行monkey,對此包進行300次無規律點擊后將日志導出到電腦的某一位置

測試停止后,查看導出的monkey日志,發現問題。

 

在log的最開始都會顯示Monkey執行的seed值、執行次數和測試的包名。

首先我們需要查看Monkey測試中是否出現了ANR或者異常,無響應問題(ANR問題):在日志中搜索“ANR ”(此處有空格), 崩潰問題:在日志中搜索“Exception”,快速定位到關鍵事件信息 。然后查看Monkey里面出錯前的一些事件動作,並手動執行該動作,找出重現步驟,給開發。

5、monkey常用參數詳解

注意,此處操作都應該打開自己的安卓虛擬器。

 

-v  日志詳細程度

Level 0  :  adb shell monkey  -p fishjoy.control.menu  -v 100   最簡單(默認),除了啟動、測試完成和最終結果外只提供較少的信息。

 

在不同的測試中,我們會發現參數都是有所不同的。

Level 1  :  adb shell monkey  -p fishjoy.control.menu  -v  -v 100  提供了較為詳細的測試信息,如逐個發送到Activity的事件信息

Level 2  :  adb shell monkey  -p fishjoy.control.menu  -v  -v  -v 100 提供了更多的設置信息,如測試中選中或未選中的Activity信息

比較常用的是-v -v -v,一般會保存到指定文件中供開發人員查找bug原因時使用

-s(隨機數種子)

指定偽隨機數生成器的seed值,如果seed相同,則兩次Monkey測試所產生的事件序列也相同的。

示例: monkey測試1:adb  shell  monkey  -p fishjoy .control.menu  –s 10  100

          monkey測試2:adb  shell  monkey  -p fishjoy .control.menu  –s 10  100

--throttle <毫秒> 

指定用戶操作(即事件)間的時延,單位是毫秒;如果不指定這個參數,monkey會盡可能快的生成和發送消息。

示例:adb  shell monkey -p fishjoy.control.menu  --throttle 3000 100 

-p <允許的包名列表> 

用此參數指定一個或多個包。指定包之后,monkey將只允許系統啟動指定的app。如果不指定包,monkey將允許系統啟動設備中的所有app。

--ignore-security-exception 

作用:通常,當程序發生許可錯誤(例如啟動一些需要許可的Activity)導致的異常時,Monkey將停止運行。設置此項,Monkey將繼續發送事件給系統,直到事件計數完成。

--pct-touch<percent>

設定觸摸事件的百分比,觸摸事件是一個有手指按下、抬起事件的手勢,它發生在屏幕上的某個單一位置,在手機上看到的實際操作類似於點擊。

--pct-motion< percent >
設定滑動事件的百分比,滑動事件是一個先在某一個位置手指按下,滑動一段距離后再抬起手指的手勢,在手機上看到的實際操作是一個沒有拐彎的直線滑動操作。

Monkey執行滑動事件對外輸出的日志由一個ACTION_DOWN事件、一系列ACTION_MOVE事件和一個ACTION_UP事件組成:

 --pct-pinchzoom< percent>

設定二指縮放事件的百分比,二指縮放事件是指在屏幕上的兩處按下,並同時移動,最后同時抬起的操作,即智能機上的放大縮小手勢操作。

 

--pct-nav< percent >

設定基本導航事件的百分比,基本導航事件是指點擊方向輸入設備的上、下、左、右按鍵的操作,現在的手機上很少有上、下、左、右按鍵,這種事件一般用的比較少。

6、心得體會

   在這次的作業上,其實我認為是有一定的難度的,因為在之前的課程上我們學習並且完成的是網頁的測試軟件介紹,例如Jmeter,連接數據庫的JDBC等等,但是這次要測試的是安卓,而我對安卓的了解其實也還沒有到完全很深刻的地步,並且再開始准備學習這個測試軟件的時候,我還覺得有一些困難,因為安裝和配置都有一定的問題,在一開始,我覺得我安裝了Android studio就應該是吧sdk配置完了,但沒有想到我輸入adb顯示沒有,后來發現是環境配置還有一些問題,因此我搜索了百度並進行了問題解決,還知道他原來不只是可以測試虛擬機還可以測試的是直接連接手機測試手機上的一些軟件。

   而他最簡單的測試方式便是輸入進指定的文件包之后,對其進行命令的輸入,此處的操作就很簡單了,因為網絡上有很多命令的介紹,我只需要根據網絡上的指導進行命令的輸入,就可以完成許多軟件效率的測試和驗證。俗話說得好,萬事開頭難,因此我認為這次的軟件測試實驗只要認真的去尋找了相關的資料,進行了一定的了解,基本上都可以進行很清晰的了解,而此塊測試的特殊性在於,他並不是下載一個特殊的軟件進行軟件上的測試和操作,而是在配置環境之后,在自帶的cmd命令行中進行命令輸出既可以完成所有的操作,因此具有很強的便捷性。

  因此通過這次的作業,加上前幾次的個人作業,無論是從git上傳下載代碼的學習,到這次的軟件測試環節,我都敢收到了這門課程貫穿了整個開發的需求過程,從需求的找尋到最終成品的測試和展示都有跡可循,明白了真正成功的一款軟件在真正發布之前所需要做出的所有測試和努力。這是十分有利於我學習的。

 


免責聲明!

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



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