APP穩定性測驗
- ①Andriod SDK環境搭建
- ②Monkey穩定性測驗
①Andriod SDK環境搭建
10.1Andrion SDK 環境搭建

安裝JDK
?下載 jdk-8u11-windows-i586_14459_BDdl.exe,雙擊安裝選擇默認位置即可
下載地址:JDK下載地址
配置 JDK
打開檔案夾


復制根目錄地址:
C:\Program Files\Java\jdk1.8.0_201
?右擊“我的電腦”->屬性->高級->環境變數->系統變數->新建
?變數名設定為:JAVA_HOME


點擊path進去編輯 環境變數

打開檔案夾,復制地址:C:\Program Files\Java\jdk1.8.0_201\bin

粘貼地址:

C:\Program Files\Java\jdk1.8.0_201\lib
C:\Program Files\Java\jdk1.8.0_201\jre\bin
這兩個環境變數設定步驟類似
設定完成后,打開cmd檢查是否安裝成功:
依次輸入命令:
java -version
java
javac
出現以下界面即代表JDK安裝成功,



10.1.2安裝配置 Android SDK
一、android-sdk 的下載安裝
android-sdk是做android測驗和開發的必備環境,下載地址:http://www.androiddevtools.cn/

選擇一個最新的版本下載,注意,這里有.exe和.zip兩種檔案可供下載,.exe的是一個安裝程式,下載后需要自己雙擊安裝.zip是一個壓縮包,下載后,直接解壓,將檔案夾(可自行更改檔案夾名稱)放到你想要安裝的路徑就可以了,
二、SDK Manager的配置
下載完成后解壓檔案到D盤目錄,如下,雙擊打開SDK manager.exe

注意:這里要先安裝 SDK Manager.exe,否則是不會有 build-tools 和 platform-tools這兩個檔案夾的,
1.打開后,Tools里面前三個是必須安裝的
Android SDK Tools 里面有:uiautomatorviewer
Android SDK Platform-tools 里面有:adb
Android SDK Build-tools 里面有:appt

2.SDK Platform下載一個最新的就可以了,它可以向下兼容(另勾選需要下載的API版本和對應的android版本)

3.Extras里選擇下面三個下載就可以了
Android Support Respository 是安卓兼容庫,必須安裝Google USB Driver 一般自己就安裝好了,最后面一個是安卓模擬器加速器,這個隨緣,無法安裝不了就不用再折騰了,




或者:
tools全裝
Android 5.1.1
Extras全裝
如果公司用到Android R 的也可以裝,
三、設定android-sdk環境變數
1、復制根目錄地址:D:\android-sdk-windows

2、右擊 此電腦-屬性-高級系統設定-環境變數;在“系統變數”中新建:ANDROID_HOME
變數名:ANDROID_HOME
變數值:根據自己的實際路徑配置(sdk的安裝路徑)

3.點擊 path 將tools、Platform-tools檔案和Build-tools 檔案的路徑添加到path里


4、運行adb
因為adb是在platform-tools這個目錄下,所以添加了環境變數后,就可以直接在cmd里面運行adb了,
5、驗證 android 是否配置成功
進入 cmd命令提示符界面,輸入:adb 或android –h 命令,出現以下界面表示安裝成功,

②Monkey穩定性測驗
10.2.1 什么是穩定性測驗?
通過隨機點擊螢屏一段時間,看看 app 會不會奔潰,能不能維持正常運行,
10.2.2Monkey 是什么?
Monkey 測驗是 Android 平臺自動化測驗的一種手段,通過 Monkey 程式模擬用戶觸摸螢屏、滑動 Trackball、按鍵等操作來對設備上的程式進行測驗,檢測程式多久的時間會發生例外,和 MonkeyRunner 幾乎是完全不同的,MonkeyRunner 相當于是搞自動化測驗的了
官方介紹:
https://developer.android.com/studio/test/monkey.html
10.2.3Monkey 介紹
Monkey 程式由 Android 系統自帶,使用 Java 語言寫成,在 Android 檔案系統中的存放,路徑是:/system/framework/monkey.jar
Monkey.jar 程式是由一個名為“monkey”的 Shell 腳本來啟動執行,shell 腳本在Android 檔案系統中的存放路徑是:/system/bin/monkey
Monkey 命令啟動方式
①可以通過 PC 機 CMD 視窗中執行: adb shell monkey {+命令引數}來進行 Monkey測驗,
②在 PC 上 adb shell 進入 Android 系統,通過執行 monkey {+命令引數} 來進行Monkey 測驗,
③在 Android 機或者模擬器上直接執行 monkey 命令,可以在 Android 機上安裝Android 終端模擬器,
④查看被測 app 包名:adb shell pm list packages
10.2.4Monkey 架構

10.2.5Monkey 弱點
Monkey 雖然可以根據一個指定的命令腳本發送按鍵訊息,但不支持條件判斷,不支持讀取待測界面的資訊來執行驗證操作,
10.2.6Monkey 壓力測驗引數

那么這個 option 通常又分為 4 大類:常用選項,事件選項,約束選項,除錯選項
①常用選項的引數通常有:
-v 用于反饋資訊級別(一個-v 表示一個層級,兩個-v 表示兩個層級,通常最多三個-v)
示例 Level0:
adb shell monkey -p com.swartz.cicada –v 100
說明 預設值,僅提供啟動提示、測驗完成和最終結果等少量資訊 相應源代碼如圖所示了,這十分有利于除錯了
示例 Level1:
adb shell monkey -p com.swartz.cicada -v-v 100
說明
提供較為詳細的日志,包括每個發送到 Activity 的事件資訊
示例 Level2:
adb shell monkey -p com.swartz.cicada -v-v-v 100
說明
最詳細的日志,包括了測驗中選中/未選中的 Activity 資訊
②時間選項的引數通常有:
-s 表示偽亂數生成的 seed 值,如果 seed 值相同,則兩次 monkey 所產生的事件序列也是一樣的
示例:
Monkey 測驗 1:adb shell monkey -p com.swartz.cicada –s 10 100
Monkey 測驗 2:adb shell monkey -p com.swartz.cicada –s 10 100
兩次測驗的效果是相同的,因為模擬的用戶操作序列(每次操作按照一定的先后順序所組成的一系列操作,即一個序列)是一樣的,操作序列雖然是隨機生成的,但是只要我們指定了相同的 Seed 值,就可以保證兩次測驗產生的隨機操作序列是完全相同的,所以這
個操作序列偽隨機的;
–throttle:每個事件結束后的間隔時間
③約束選項的引數通常有:
-p 指定檔案名
count 指定要發送的事件數
-c 用此引數指定一個或幾個類別,activity 必須指定一個 category,才能被啟動,否則將會啟動不了
④除錯選項的引數通常有:
–dbg-no-events:初始化啟動的 activity,但是不產生任何事件,
–hprof:指定該項后在事件序列發送前后會立即生成分析報告
–ignore-crashes:忽略崩潰
–ignore-timeouts:忽略超時
–ignore-security-exceptions:忽略安全例外
–kill-process-after-error:發生錯誤后直接殺掉行程
–monitor-native-crashes:跟蹤本地方法的崩潰問題
作業中為了保證測驗數量的完整進行,我們一般不會在發生錯誤時立刻退出壓力測驗,
monkey 測驗命令如下:
adb shell monkey -p com.swartz.cicada -s 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 10000 > E:\monkey_log\20170831.txt
kill 此引數用來殺掉行程:kill pid 先執行 adb shell 再 ps |grep monkey 查詢結果如下
圖中 15248 即為 PID 再 kill pid(15248)即可

例子:
adb shell monkey -p com.tpnet.hlquery --throttle 100 --pct-touch 50 --pctmotion 50 -v -v -v 1000 >c:\monkeytest.txt
測驗 com.tpnet.hlquery 這個 app,間隔 100 毫秒,50%的觸摸事件,50%
的滑動事件,三個-v 輸出詳細的日志,執行 1000 個事件,日志輸出到
c:\monkeytest.txt
ps: 命令運行前手機先解鎖,win8 以上要用管理員身份打開 cmd,
下面來看下整體的步驟:
**step1:**下載安裝 mumu模擬器,地址:https://mumu.163.com/
**step2:**安裝好打開mumu模擬器
**step3:**打開命令列 Win + r cmd
**step4:**連接模擬器:adb connect 127.0.0.1 : 7555
**step5:**查看是否連接成功:adb devices
**step6:**查看安裝包名:adb shell pm list packages

ps: adb shell (進入Android系統) exit退出

**step7:**測驗包(以網易云音樂包為例):
adb shell monkey -p com.netease.cloudmusic -v 1000
adb shell monkey -p com.netease.cloudmusic -v -v 1000
adb shell monkey -p com.netease.cloudmusic -v -v -v 1000

**step8:**日志結果分析

也可指定:
adb shell monkey -p com.netease.cloudmusic --throttle 100 --pct-motion 50 -v -v -v 1000 >D:\test.txt
10.2.7Monkey 結果分析
①初步分析方法:Monkey: seed=20 count=100 --隨機種子和運行次數
:AllowPackage: com.swartz.cicada --指定的測驗包
:IncludeCategory: android.intent.category.LAUNCHER --Category 包含 LAUNCHER
:IncludeCategory: android.intent.category.MONKEY --Category 包含 MONKEY
// Selecting main activities from category android.intent.category.LAUNCHER
// + Using main activity com.swartz.cicada.LauncherActivity (from package
com.swartz.cicada)
// Selecting main activities from category android.intent.category.MONKEY --查詢結果串列
// Seeded: 20 --隨機種子
// Event percentages:
// 0: 15.0% --事件 0 為 touch 事件,就是相當于按下之后彈起來的一個動作
// 1: 10.0% --事件 1 為 motion,相當于說從起始點到終點有移動了多少步,就是步驟數量
// 2: 2.0% --事件 2 為 pinchzoom,為兩個手指有同時按下去后,都向中間移動后 up起來,相當于一個縮放的動作,
// 3: 15.0% --事件 3 為 trackball,為軌跡球事件
// 4: -0.0% --事件 4 為 rotation 為螢屏旋轉百分比隱藏事件
// 5: 25.0% --事件 5 為 nav 導航事件,就是上下左右
// 6: 15.0% --事件 6 為 majornav 主導航事件,會產生一些視窗的事件
// 7: 2.0% --事件 7 為系統按鍵
// 8: 2.0% --事件 8,app 應用的打開就是用的這個事件// 9: 1.0% --事件 9,鍵盤的開,關
// 10: 13.0% --事件 10,按鍵按下在彈起等動作
日志結尾:
如果 Monkey 測驗順利執行完成,在 log 的最后,會列印出當前執行事件的次數和所花費的時間;Monkey
finished 代表執行完成,
(如果 Monkey 執行中斷,在 log 的最后也能查看到當前已執行的次數,)
②詳細分析:
Monkey 測驗出現錯誤之后,一般的分析步驟分為以下幾種:
?看 Monkey 日志(注意第一個 switch 以及例外資訊等)
?程式無回應問題,在日志中搜索 “ANR”
?奔潰問題: 在日志中搜索 “Exception”
ANR 問題:在日志中搜索“ANR”(什么是 ANR:Application Not Responding,即應用無回應,具體有關 ANR 的知識詳見:):https://www.tuicool.com/articles/IfQvY3
?ForceClosed 和程式例外退出問題:在日志中搜索“致命”
③查看 Monkey 里面錯誤前的一些事件動作,并手動執行該動作,
如果 Monkey 測驗順利執行完成,在 log 的最后,會列印出當前執行事件的次數和所花費的時間; // Monkey finished 代表執行完成,
Monkey 執行中斷,在 log 的最后也能查看到當前的已經執行的次數,
10.2.8Monkey 測驗怎樣確定記憶體泄露
①記憶體泄漏彈出 out of memory 對話框
②對于有記憶體泄漏但是沒有單出 out of memory 對話框的情況,可以通過 logcat 檔案GC 出資訊,(GC:java 的垃圾回識訓制)?GC_FOR_ALLOC: 因為在分配記憶體時候記憶體不夠引起的
?GC_EXPLICIT 表明 GC 被顯式請求觸發的,如 System.gc 呼叫,
?GC_CONCCURRENT: 表明 GC 在記憶體使用率達到一定的警戒值時候,自動觸發
?GC_BEFORE_OOM 表明在虛擬機拋出記憶體不夠例外 oom 之前,執行最后一次回收記憶體垃圾
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/291064.html
標籤:其他
