手機測驗概念
傳統手機測驗 VS 手機應用軟體測驗
傳統手機測驗:指測驗手機本身比如抗壓,抗摔,抗疲勞,抗低溫高溫等,也包括手機本身功能、性能等測驗,
手機應用軟體測驗 C/S Client/Server
手機應用軟體是基于手機作業系統之上開發出來的軟體,做這樣的測驗就叫做手機應用軟體測驗,
手機端常規測驗
What
介紹手機測驗的概念架構


對于手機端測驗,按照平臺來分,分為Android和IOS兩大主流系統
Android開源導致碎片化比較嚴重,(手機品牌眾多,系統版本各異,解析度不統一,主流手機型號上千,無法保證應用、游戲對于所有手機的適配兼容,)bug比較多,而IOS通常bug會少一些,
Android手機長按home鍵,會呼出應用串列和切換應用,右滑擇會終止應用,
還有解析度測驗,Android手機解析度有20多種,IOS較少一些
再就是手機作業系統,Android系統太多了,IOS較少,但是升級之后不能夠降級,不過呢,發現了最近ios中boss直聘的一個bug,是有關于Boss直聘強更的一個bug,當我們點擊手機APP端 Boss直聘 進入主頁面彈出提示框“新增郵箱上傳附件簡歷功能” 彈窗中有立即升級的鏈接,點擊別的區域沒有反應;必須點擊“立即升級”才會跳轉到“App Store”若不升級,重新切換回Boss直聘界面,依舊提示“立即升級”全部退出依然如此,
按照目前技術架構的話,現在有一些原生的app架構,類似于Client Server架構,也有基于Html5的app,類似于pc機的BS(Broswer server)架構,手機測驗和pc機類似,又有一些不同的地方,
當然除了手機,現在還有好多使用Android系統,比如酒店點餐的平板,銀行對公或者對個人業務的業務平臺,還有一些智能的穿戴設備,小米的手環,google 聯想的智能眼鏡,智能家居,電視盒子,這些都是在使用android系統,我之前最早的時候,就要測驗過一個智能家居設備,測驗的時候需要考慮藍牙,wifi連接傳輸這塊,也有好多要測驗的內容,
How
功能測驗
對于手機app來說,和我們測驗web專案差不太多,也是各種測驗方式需要考慮進來,比如說邏輯功能測驗,現在移動端越來越火爆,大家用的軟體也越來越多,對軟體也越來越挑剔,現在公司在開發移動端的時候,肯定是有相應的需求檔案和UI所設計的產品效果圖,我們做邏輯功能測驗,就是根據這些資料,當然也根據我們正常人的邏輯思維進行邏輯功能測驗,在做邏輯功能測驗的時候,我們要測驗主頁面,我的頁面,商城頁面這些功能是否合理,
安裝與卸載測驗
軟體安裝后是否可以正常運行,安裝程序中是否可以取消,安裝空間不足時,是否有相應提示,是否可以卸載應用(可通過桌面卸載,也可以通過軟體卸載,曾發現在IOS手機上有個應用安裝時未完全安裝,終止安裝后,未完成安裝的應用圖示一直顯示在手機上,并且無法成功洗掉),卸載是否支持取消功能,單擊取消后軟體卸載功能是否正常,卸載后檔案是否全部洗掉所有的安裝檔案夾,從不同的應用市場下載進行安裝測驗,比如測驗小米市場,華為市場,應用寶,安卓市場,安智市場的安裝測驗,
軟體升級測驗
當客戶端有新版本時,是否有更新提示,當版本為非強制升級版時,用戶可以取消更新,老版本能正常使用,用戶在下次啟動app時,仍能出現更新提示;當版本為強制升級版時,當給出強制更新后用戶沒有做更新時,退出客戶端,下次啟動app時,仍出現強制升級提示,當然現在強更已經很少出現了,檢查更新后各個功能是否能正常使用;在線跨版本升級后能否正常使用,當然現在主流的安裝更新方式開始向熱更新熱部署方式轉變,就是在用戶不需要手動更新的情況下,完成版本的靜默更新,這個技術是有難度的,需要看公司中程式員的技術能力還有就是是否有這樣的產品需求,
登錄測驗
對于登錄測驗,基本上每一款app都有登錄注冊功能,所以在測驗App的時候,登錄測驗是必不可少的一項,
我們做登錄測驗的時候,往往包含這么些項:
登錄用戶名和密碼錯誤時,界面有提示資訊;
用戶主動退出登陸后,下次進入app時,應該進入登陸界面;
密碼更改后,登錄時是否做到了有效資料的校驗,對于未登錄狀態時,一些頁面的操作,是否做了控制;
切換賬號登錄,檢驗登錄的資訊是否做到及時更新,對于多個端(web、iso、android等)進行操作時,確保資料庫操作無誤,且每個端可以及時看到資料的更新,一個賬號只允許一臺機器登陸的軟體,需要賬號登錄多個手機時,是否將原用戶踢下線,且能夠給出提示資訊,用戶登錄狀態太久,session會過期,會出現“雖然是登錄狀態,系統會提示用戶沒有登陸”
安全性測驗 - 權限測驗
對于手機權限,如果我們是剛開發不知名的app,權限這塊盡量少一些,這些權限在安裝的時候都必須用戶同意,在Android 6.0之后,權限需要動態的申請,我們測驗的時候,需要測驗在使用到這些權限的時候,程式員是否做邏輯判斷,用戶同意權限應該怎么操作,不同意權限又應該怎么操作,
訊息推送測驗
訊息推送,是移動端的一大特色,我就說一下訊息推送我們所做的這些方面吧,
未鎖屏時,應用后臺運行,訊息推送是否可正常接收,未鎖屏時,APP客戶端使用程序中,可以收到訊息提醒,且點擊可查看,
鎖屏時,手機訊息欄是否可以接收到訊息提醒,且點擊可查看,點擊后訊息欄中消失,
精準推送
當推送訊息是針對登錄用戶的時候,需要檢查收到的push與用戶身份是否相符,沒有錯誤的將其他人的訊息推送過來
push推送訊息是是否能有針對性的推送,如相應內容推送給相應用戶(精準推送)
退出登錄后,是否接受push推送(根據需求來)
前后臺切換測驗(鎖屏)
APP切換到后臺,再回到APP,檢查是否停留在上一次操作界面;檢查功能及應用狀態是否正常;程式是否崩潰,功能狀態是否正常,尤其是對于從后臺切換回前臺資料有自動更新的時候
手機鎖屏解屏后進入app注意是否會崩潰,功能狀態是否正常
當APP使用程序中有電話進來中斷后再切換到APP,功能狀態是否正常
當關閉APP行程后,在開啟APP,APP能否正常啟動
對于有資料交換的頁面,尤其是有視頻圖片之類的頁面,每個頁面都必須要進行前后臺切換、鎖屏的測驗,這種頁面最容易出現崩潰
UI測驗(界面測驗)
確保產品UI符合產品經理制定的原型圖與效果圖
一般涉及界面(如選單、對話框、視窗和其他可視控制元件)布局、風格、文字是否正確,頁面是否美觀,操作是否友好,
如:安裝app后的加載頁顯示,分享頁面的產品logo顯示
兼容性測驗
我再說一下兼容性測驗吧,兼容性測驗主要考慮手機的版本,型號,解析度,就像我說的,現在手機碎片化比較嚴重,各個版本,比如Android,從Android4.0到Android8.0的版本它是不一樣的,然后現在各大手機廠商像華為,三星,小米,錘子,魅族,vivo這些廠商都修改android源代碼,也是給我們增加和好多作業量,好多時候開發的軟體在三星上沒問題,但是華為,小米就不行,還有手機解析度,現在主流的可能是19201080,但是還有好多其他解析度,比如7201280,還有一些更大解析度的手機,都要考慮這些解析度的兼容,不然用戶視覺體驗就不好,
兼容測驗,公司中會買好多測驗機來太讓我們進行測驗,一般是不同廠商的手機,當然還有第三方云測平臺,比如testin還有騰訊wetest,就可以做兼容性測驗,可以一次性測驗100臺測驗機,同時會有相應的兼容報告,bug報告,
對于IOS,ISO版本有7.1.2、8.3、9.1等;能否適配各種螢屏尺寸,
網路環境測驗
測驗2G、3G、4G、wifi、有網、無網、弱網情況下應用的運行
網路不好時,提交資料是否一直處理提交中,是否會有延遲,資料交換失敗是否會有提醒
有網到無網再到有網環境時,資料是否可以自動恢復,正常加載
無網路時,各種提示資訊是否友好,資料本地化是否正確(比如提示當前已斷開網路,請檢查網路設定;還有從wifi環境切換到4G環境提示是否啟用4G網路,會產生扣費,
mokey測驗 (monkey壓力測驗 測驗為1000-2000)
對于手機測驗,除了我們一些常規的功能測驗,我們還會做壓力測驗,比如對于Android手機,我會使用adb指令進行一些相應的操作,比如通過adb查看設定,進入設備,抓取log,我們測驗的時候,會使用adb logcat所抓出來的log日志存到電腦,發給開發,方便他們快速解決bug,
另外,我還會使用monkey對app進行測驗,可以使用monkey對app做壓力測驗,主要就是測驗操作app的時候,程式是否會崩潰,
我們使用adb shell monkey 指定對應的app,執行要測驗的次數,指定要觸摸的比率,超時時間和忽略崩潰資訊,就可以執行測驗,將測驗log存到某個位置,然后把測驗出的bug 日志發送給開發,300000
我就簡單的說一下測驗的指令吧,比如我上邊所說的邏輯,我們用 adb shell mokey -p 指定要測驗的包名 --ignore-crashs 忽略崩潰 --ignore-timeout 忽略超時 --throttle 38指定延遲時間毫秒 -s 指定測驗種子 指定測驗次數,然后將檔案 >輸出到磁盤中,
性能測驗
對于性能測驗,(eclipse和Android studio中本身有檢測cpu和記憶體的工具,也有檢測手機記憶體泄漏的工具)靠工具來測驗手機cpu占用,記憶體占用,電池溫度等,以及測驗我們的app在后臺持續運行的流量消耗和電量消耗問題,
Android介紹
Android是一種基于Linux的自由及開放源代碼的作業系統,主要使用于移動設備,如智能手機和平板電腦,由Google公司和開放手機聯盟領導及開發,尚未有統一中文名稱,中國大陸地區較多人使用“安卓”或“安致”,
Android作業系統最初由Andy Rubin開發,主要支持手機,2005年8月由Google收購注資,2007年11月,Google與84家硬體制造商、軟體開發商及電信營運商組建開放手機聯盟共同研發改良Android系統,隨后Google以Apache開源許可證的授權方式,發布了Android的源代碼,第一部Android智能手機發布于2008年10月,Android逐漸擴展到平板電腦及其他領域上,如電視、數碼相機、游戲機等,2011年第一季度,Android在全球的市場份額首次超過塞班系統,躍居全球第一, 2013年的第四季度,Android平臺手機的全球市場份額已經達到78.1%, [1] 2013年09月24日谷歌開發的作業系統Android在迎來了5歲生日,全世界采用這款系統的設備數量已經達到10億臺,
安卓版本:
Android在正式發行之前,最開始擁有兩個內部測驗版本,并且以著名的機器人名稱來對其進行命名,它們分別是:阿童木(AndroidBeta),發潭訓器人(Android 1.0),后來由于涉及到著作權問題,谷歌將其命名規則變更為用甜點作為它們系統版本的代號的命名方法,甜點命名法開始于Android 1.5發布的時候,
作為每個版本代表的甜點的尺寸越變越大,然后按照26個字母數序:紙杯蛋糕(Android 1.5),甜甜圈(Android 1.6),松餅(Android 2.0/2.1),凍酸奶(Android 2.2),姜餅(Android 2.3),蜂巢(Android 3.0),冰激凌三明治(Android 4.0),果凍豆(Jelly Bean,Android4.1和Android 4.2),奇巧(KitKat,Android 4.4),棒棒糖(Lollipop,Android 5.0),棉花糖(Marshmallow,Android 6.0),牛軋糖(Nougat,Android 7.0),奧利奧(Oreo,Android 8.0),餡餅(Pie,Android 9.0),Q(未命名,Android10.0),R(未命名,Android11.0)
Android的系統架構和其作業系統一樣,采用了分層的架構,
從架構圖看,Android分為四個層,從高層到低層分別是應用程式層、應用程式框架層、系統運行庫層和Linux內核層

Android SDK(Software Development Kit)的安裝和配置
Android SDK,即Android Software Development Kit,軟體開發工具包,
它提供了在Windows/Linux/Mac平臺上開發Android應用的開發組件,包含了在Android平臺上開發移動應用程式的各種工具集,
安裝java環境

啟動配置好SDK的Android版本eclipse Android Studio(類似Idea)
檢查是否成功:
cmd → java -version

Android studio安裝
創建虛擬機

Android App開發一般需要模擬器來測驗程式的正確性
Android Virtual Device,就是Android運行的虛擬設備,是Android的模擬器識別,建立的Android App要運行,必須創建AVD,每個AVD上可以配置很多的運行專案,
簡而言之:AVD即用于Android開發除錯的模擬機,
AVD name:填寫的虛擬機名稱,純英文和數字組成,
Device:設定模擬的設備,一般選擇手機型號:3.2QVGA(ADP2)(320480: mdpi),
Target:安裝Android的版本,目前4.0是主流,即可選Android4.0.3 API 15,
CPI/ABi:模擬的CPU型號,這里的ARM是手機的CPU型號,
Keyboard:務必勾選“Hardware keyboard present”,
Skin:務必勾選“Display a skin with hardware controls”,
Front camera/Back camera:是否模擬前置和后置攝像頭,裝有Cam的讀者可以考慮,
RAM:設定模擬器記憶體,一般在512~1024M, VM Heap:每一個應用的最大記憶體空間分配,默認即可,
SD Card:選在size上,這個就是在默認目錄里自動建立一個模擬SD卡的檔案,SD卡的大小隨意,也可以不填,不填代表不適用SD卡,
啟動虛擬機
ADB
ADB介紹
ADB全稱Android Debug Bridge, 是android sdk里的一個工具, 用這個工具可以直接操作管理android模擬器或者真實的andriod設備(如G1手機)
它的主要功能有:
運行設備的shell(命令列)
管理模擬器或設備的埠映射
計算機和設備之間上傳/下載檔案
將本地apk軟體安裝至模擬器或android設備
配置ADB環境變數
打開:adt-bundle-windows-x86_64_20140101檔案
找到adb.exe所在路徑
配置ADB_HOME環境變數

參考java環境變數配置

顯示成功:

ADB常用指令
查看設備:adb devices
這個命令是查看當前連接的設備, 連接到計算機的android設備或者模擬器將會列出顯示
安裝軟體:adb install -r (APK路徑)
-r 代表如果apk已安裝,重新安裝apk并保留資料和快取檔案,apk路徑則可以直接將apk檔案拖進cmd視窗,記得加空格,
卸載軟體
adb uninstall <軟體名>
adb uninstall -k <軟體名>
如果加 -k 引數,為卸載軟體但是保留配置和快取檔案
問程式員–com.example.test
登錄設備shell
adb shell
adb shell <command命令>

這個命令將登錄設備的shell.
后面加<command命令>將是直接運行設備命令, 相當于執行遠程命令
查看手機記憶體情況
adb shell dumpsys cpuinfo

查看記憶體情況
adb shell getprop | findstr dalvik 本機記憶體的使用情況

查看應用記憶體使用情況
adb shell dumpsys meminfo +包名:應用的記憶體使用情況

列出手機裝的所有app的包名:
adb shell pm list packages

列出系統應用的所有包名:
adb shell pm list packages -s

列出除了系統應用的第三方應用包名:
adb shell pm list packages -3

adb logcat 查看手機日志
adb logcat 命令格式 : adb logcat [選項] [過濾項], 其中 選項 和 過濾項 在 中括號 [] 中, 說明這是可選的;
在命令列中輸入 adb logcat --help 命令, 就可以顯示該命令的幫助資訊;
">"輸出 : “>” 后面跟著要輸出的日志檔案, 可以將 logcat 日志輸出到檔案中, 使用adb logcat > log 命令
指定 logcat 的日志輸出格式 :
– "-v"選項 : 使用adb logcat -v time 命令, 可以查看日志的輸出時間;
"process"格式 : " 優先級 (行程ID) : 日志資訊 ", 使用adb logcat -v process 命令;
將手機日志輸出到本地檔案中
adb logcat -v time process > C:/log/aa.txt
有多臺設備是adb選擇設備
adb -s 設備名稱 logcat -v time process >C:/log/aa.txt
Android 的日志分為如下幾個級別:
V —— Verbose(最低,輸出得最多)
D —— Debug
I —— Info
W —— Warning
E —— Error
F —— Fatal
S —— Silent(最高,啥也不輸出)
按某級別過濾日志則會將該級別及以上的日志輸出,
比如,命令:adb logcat *:W 將 Warning、Error、Fatal 和 Silent 日志輸出
顯示所有優先級大于等于“warning”的日志
五、APK牢固性(加密)
應用加固
防篡改:通過完整性保護和簽名校驗保護,能有效避免應用被二次打包,杜絕盜版應用的產生;
防逆向:通過對代碼進行隱藏以及加密處理,使攻擊者無法對二進制代碼進行反編譯,獲得源代碼或代碼運行邏輯;
防除錯:通過反除錯技術,使攻擊者無法除錯原生代碼或Java代碼,阻止攻擊者獲取代碼里的敏感資料,
網上有很多Apk加固的第三方平臺,最有名的應當屬于:愛加密和梆梆加固了,其實加固說的簡單點就是對源Apk進行加密,然后在套上一層殼即可
Monkey測驗
Money介紹
顧名思義,Monkey就是猴子, Monkey測驗,就像一只猴子, 在電腦面前,亂敲鍵盤在測驗,
通過Monkey程式模擬用戶觸摸螢屏、滑動Trackball、 按鍵等操作來對設備上的程式進行壓力測驗,檢測程式多久的時間會發生例外,
Monkey用來做什么
Monkey 主要用于Android 的壓力測驗自動的一個壓力測驗小工具, 主要目的就是為了測驗app 是否會Crash(崩潰),
Monkey 前提條件
環境配置:把adb加入系統環境,手機開啟開發者模式
連接手機,獲取測驗的包名,獲取包名的方法
Monkey撰寫測驗命令,并運行,monkey操作命令
如果要提前中結束測驗,中斷運行中的monkey
CTRL+C
adb shell ps | grep monkey 回傳行程號
adb shell kill [剛才查到的行程號]
Monkey程式介紹
Monkey程式由Android系統自帶,使用Java語言寫成,在Android檔案系統中的存放路徑是: /system/framework/monkey.jar;
Monkey.jar程式是由一個名為“monkey”的Shell腳本來啟動執行,shell腳本在Android檔案系統中 的存放路徑是:/system/bin/monkey;
Monkey 命令啟動方式:
a)可以通過PC機CMD視窗中執行: adb shell monkey {+命令引數}來進行Monkey測驗
b)在PC上adb shell 進入Android系統,通過執行 monkey {+命令引數} 來進行Monkey 測驗
c ) 在Android機或者模擬器上直接執行monkey 命令,可以在Android機上安裝Android終端模擬器
Monkey 命令 基本引數介紹
使用monkey測驗手機所有程式
adb shell monkey 100 執行monkey測驗100次 針對rom測驗或者

使用adb指令,安裝Login.apk

-p <允許的包名串列>
adb shell monkey -p com.example.login 100
用此引數指定一個或多個包,指定包之后,monkey將只允許系統啟動指定的app,如果不指定包, monkey將允許系統啟動設備中的所有app,
指定一個包:

顯示日志詳細程度
用于指定反饋資訊級別(資訊級別就是日志的詳細程度),總共分3個級別,分別對應的引數如下 表所示:
Level 0 : adb shell monkey -p com.example.login -v 100 // 預設值,僅提供啟動提示、測驗完成和最終結果等少量資訊

Level 1 : adb shell monkey -p com.example.login -v -v 100 // 提供較為詳細的日志,包括每個發送到Activity的事件資訊
Level 2 : adb shell monkey -p com.example.login -v -v -v 100 // 最詳細的日志,包括了測驗中選中/未選中的Activity資訊

Monkey日志分析
將log資訊寫到檔案中
adb shell monkey 100 >c:/log/b.txt

正常情況, 如果Monkey測驗順利執行完成, 在log的最后, 會列印出當前執行事件的次數和所花費的時間; // Monkey finished 代表執行完成
亂數種子
用亍指定偽亂數生成器的seed值,如果seed相同,則兩次Monkey測驗所產生的事件序列也相同的, 示例:
monkey測驗1:adb shell monkey -p com.shjt.map –s 10 100
monkey測驗2:adb shell monkey -p com.shjt.map –s 10 100

–throttle <毫秒>
用亍指定用戶操作(即事件)間的時延,單位是毫秒;如果不指定這個引數,monkey會盡可能快的 生成和發送訊息,
例:adb shell monkey -p com.example.login --throttle 300 100
表示執行100個偽隨機用戶事件流,事件間隔為300毫秒,
注:一般設定為300毫秒,原因是實際用戶操作的最快300毫秒左右一個動作事件,

–pct-touch
調整觸摸事件的百分比,(觸摸事件是指在螢屏中的一個down-up事件,即在螢屏某處按下并抬起的操作)
–pct-touch:觸摸事件,即在某一位置的Down-Up(手指的放下和抬起)事件,Down(ACTION_DOWN)和Up(ACTION_UP)的坐標臨近,但并非相同,
如:adb shell monkey -pct-touch 67 -v 10
表示執行10個偽隨機用戶事件流,并調整其中觸摸事件的百分比為67%,
注:此引數設定要適應當前被測應用程式的操作,比如一個應用80%的操作都是觸摸,那就可以將此引數的百分比設定成相應較高的百分比,
–pct-motion
調整motion事件百分比,(motion事件是由螢屏上某處一個down事件、一系列偽隨機的移動事件和一個up事件組成)
–pct-motion:動作事件,以Down(ACTION_DOWN)開始,Up(ACTION_UP)結尾,中間至少有一次Move(ACTION_MOVE),
如:adb shell monkey -pct-motion 67 -v 10
表示執行10個偽隨機用戶事件流,并調整其中動作事件的百分比為67%,
注:這里的移動是直線滑動
–ignore-crashes
作用:通常,應用發生崩潰或例外時Monkey會停止運行,如果設定此項,Monkey將繼續發送事件給系統,直到事件計數完成,
正常操作,不忽略例外


忽略例外


–ignore-timeouts(ANR)
作用:通常,應用程式發生任何超時錯誤(如“Application Not responding”對話框)Monkey將停止運行,設定此項,Monkey將繼續發送事件給系統,直到事件計數完成,
Monkey 實體
用monkey 命令 對登錄apk進行 性能測驗

monkey -p com.tencent.mtaexample -s 23 --throttle2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>/data/local/tmp/log.txt 2>&1 &
1.-p后面接著的對應的包名,如果是整機測驗,就不需要 -p package_name
2.-s后面是對應的種子數,好像就是操作步驟,根據她們測驗的經驗,一般種子數在23,同步她們測驗的結果,一般種子的個數固定為23,和她們選擇的操作步驟就是同步的,
3.--ignore-crashes --ignore-timeouts 這里是在monkey測驗的程序中遇到carash或者timeout的情況時忽略掉,一般不設定時,出現carash或者timeout時,Monkey測驗會終止,這里是防止Monkey測驗終止,
4.-v 指的是Monkey測驗時列印log級別,
5.100000 這里是指點擊的次數,根據她們測驗的經驗,對于單個應用程式這個次數設定在100000次就可以了;如果是整機,一般設定在500000次,
/data/local/tmp/log.txt測驗的log記錄在手機上/data/local/tmp/ 下面的log.txt里面,這個名字可以自己寫,
6.2>&1 固定的寫法,這個也很重要,代表的意思是中間忽略的東東的日志一并輸入到指定的檔案中,
7.最后單獨的一個"&" 是一旦Monkey測驗開始了,之后可以拔掉資料線,不會影響Monkey測驗,
8.測驗所有模塊 monkey -s 23 --ignore-crashes --ignore-timeouts -v-v -v 100000> /data/local/tmp/log.txt 2>&1 &
adb shell monkey -p com.example.login --ignore-crashes --ignore-timeouts --throttle 100 --pct-touch 50 --pct-motion 50 -v -v 1000 >c:\login\c.txt
Monkey例外分析
一般我們可以一次發送5萬次隨機事件的請求,每個請求之間的間隔為150毫秒,測驗大約會進行40min,完成以后就可以查看日志,
日志中可能的錯誤:
1.程式例外退出,uncausedexception (ctrl+f搜索‘Fatal’)
2.程式強制關閉,ForceClosed (簡稱FC) (同上)
3.程式無回應,ApplicationNo Response(ctrl+f搜索‘ANR ’,加空格是為了屏蔽掉一些無效資訊)
4.手動生成,
Monkey 執行中斷, 在log最后也能看到當前執行次數
monkey事件百分比
首先注意一點,這個Event percentages在不同版本的SDK版本中順序可能會不一樣,
下列中monkey源代碼是從android4.4.2SDK中反編譯出來的


由上圖可以看出
Event percentages:
0:–pct-touch//touch
events percentage觸摸事件百分比(觸摸事件是一個在螢屏單一位置的按下-抬起事件)
1:–pct-motion//motion
events percentage手勢事件百分比(手勢事件是由一個在螢屏某處的按下事件、一系列的偽隨機移動、一個抬起事件組成)即一個滑動操作,但是是直線的,不能拐彎
2:–pct-pinchzoom//pinch
zoom events percentage二指縮放百分比,即智能機上的放大縮小手勢操作
3:–pct-trackball//trackball 即單純的Move(ACTION_MOVE)
events percentage軌跡球事件百分比(軌跡球事件包括一個或多個隨機移動,有時還伴有點擊,軌跡球現在智能手機上已經沒有了,就是類似手柄的方向鍵一樣)
4:–pct-rotation//screen
rotation events percentage螢屏旋轉百分比,橫屏豎屏
5:–pct-nav//nav 基本導航事件,即來自于方向輸入設備的上下左右操作,
events percentage”基本”導航事件百分比(導航事件包括上下左右,如方向輸入設備的輸入)老手機的上下左右鍵,智能機上沒有
6:–pct-majornav//major 即Navigation Bar的確認,選單,回傳鍵等
nav events percentage”主要”導航事件百分比(這些導航事件通常會引發UI的事件,例如5-way pad的中間鍵、回退鍵、選單鍵)
7:–pct-syskeys//system(key)
operations percentage”系統”按鈕事件百分比(這些按鈕一般專供系統使用,如Home, Back, Start Call, End Call,音量控制)
8:–pct-appswitch//app
switch events percentage啟動activity事件百分比,在隨機的間隔里,Monkey會執行一個startActivity()呼叫,作為最大程度覆寫包中全部Activity的一種方法
9:–pct-flip//keyboard
flip percentage鍵盤輕彈百分比,如點擊輸入框,鍵盤彈起,點擊輸入框以外區域,鍵盤識訓
10:–pct-anyevent//anyevents 該事件可能包含其他上述事件,
percentage其他型別事件百分比,包括了其他所有的型別事件,如按鍵、其他不常用的設備上的按鈕等等,
手機兼容性測驗
Android App兼容性測驗,是一個比較重要的App評價內容,
說到測驗階段,兼容性測驗主要是對App在各類機型上的兼容、適配等情況進行測驗,搞清楚這一階段的測驗重點后,因此,Android App在進行兼容性測驗前,一定要做好其前序測驗內容,否則兼容性測驗效果將會較差,
機型配置問題,
Android兼容測驗一定要做到寬范圍覆寫,如果做不到這個,那么就違背了兼容性測驗的目標——測驗App在各類機型、系統上的運行是否兼容、適配,
因此,兼容性測驗必須要在各個機型、系統上對App進行運行、測驗,查看相關UI是否適配、功能是否正常,所以,必須要為兼容性測驗配備盡可能多的機型,這是不是意味著,你的公司要去購置各類機型設備?當然不是,對于一般的公司或者開發者,這將會是一大筆開銷,為了節約資金而造成進行覆寫率較低的話,則失去了兼容性測驗的意義,另外,這也是沒必要的,因為往往你就一個或兩三個App,為了這少量App測驗,而去購置如此大量的設備,無疑是一種資源浪費,除此,還有一個原因,將在兼容性測驗如何展開里去說,除此,機型量的多少也是一個權衡的程序,目前,通用的兼容性測驗一般覆寫Top100-300的機型,對于實在是小量機型或者老舊機型,用戶量非常小,在一定程度上,是否需要覆寫則需要權衡,總的來說,Top排名的手機基本足夠,
兼容性如何展開?
這是一個經驗性的程序,可以去借鑒大型互聯網公司的成熟App的測驗方法,目前,無論是國際知名App,還是國內知名App,谷歌、Facebook,BAT等,他們都有大量的App對外推出,對于App兼容性要求非常高,因此,他們的做法是非常值得借鑒的,這些公司的兼容性測驗,都有一個相同的解決方案,那就是自動化測驗框架與平臺的實作,通過瀏覽上述公司在各種大會公布的內容,或者通過論壇知識分享,都能看到,他們不僅有自己的測驗實驗室,擁有大量的手機,除此,還有一整套的自動化測驗平臺,來完成兼容性測驗,
有哪些好用的App云測驗平臺?
目前對移動App的測驗主要指的是下面幾部分:
兼容性測驗——App對不同手機、作業系統版本的兼容性測驗,包括安裝、啟動、卸載等,
功能測驗——遍歷應用的每一個角落,查看應用的功能、邏輯是否正常,完整,
性能測驗——應用的性能怎樣,如啟動時間、反應時間、CPU占用率,記憶體占用率等,
穩定性測驗——在一定時間內對App進行持續地測驗,測驗App運行的穩定性,
網路場景測驗——測驗不同網路環境中App的運行狀況,如2G&3G,弱網路等,
以下是國內幾家主要的云測驗平臺:
Testin:Testin云測|全球領先的App及手游測驗平臺
Testin是國內較早涉足云測驗領域的公司之一,Testin在云端部署了300多款1000多部測驗終端,終端種類及數量都比較全面,支持Android與iOS系統,但目前僅少部分服務為免費,絕大多數服務為收費專案,故而使用成本較高,具體收費情況請查看官網的介紹,
騰訊優測:優測網-讓測驗更簡單
騰訊優測是騰訊旗下的云測驗服務平臺,擁有超過1000款測驗終端,機型數量龐大,但僅支持Android,暫不支持iOS系統,提供兼容性測驗服務,不提供性能測驗、功能測驗及穩定性測驗服務,另外,騰訊優測還提供“云手機”服務,開發者可以遠程控制測驗終端,實時查看App安裝、運行效果,優測目前的功能為收費(新注冊的用戶可獲得官方贈送的禮包),每天限制提交2次測驗,
移動測驗學習埠:https://wetest.qq.com/guide/learn-source

貫眾云測驗:貫眾云測驗
貫眾云測驗是中國移動旗下的云測驗服務平臺,目前擁有超過100款市面主流終端,支持Android及iOS系統,提供兼容性測驗、功能測驗、性能測驗,穩定性測驗(12小時)及網路場景測驗服務(2G&3G&4G),支持Appium腳本,缺點是終端數量較少,優點是功能較為全面,且基本功能都是免費,使用成本還是蠻低的,
百度MTC:百度移動云測驗中心
百度MTC是百度開放平臺旗下的移動云測驗中心,提供超過500款熱門機型,目前只支持Android系統,暫不支持iOS系統,提供的測驗服務種類有兼容性測驗、性能測驗、功能測驗,并且提供了腳本錄制工具,類似Testin,但腳本錄制工具更新速度較慢,百度MTC的服務目前為收費服務,具體收費情況請查看官網的介紹,
阿里MQC:MQC 阿里移動質量中心
阿里MQC是阿里巴巴旗下的移動測驗平臺,提供上百款測驗終端,支持Android及iOS系統,提供兼容性測驗、功能測驗、性能測驗以及穩定性測驗(1小時),測驗腳本需使用Robotium或Appium測驗框架撰寫,難度較高,MQC也提供了遠程的真機除錯,功能和騰訊優測類似,看來騰訊和阿里還真是一對兒冤家啊,




百度MTC-移動云測驗中心
百度MTC是百度開放平臺旗下的移動云測驗中心,提供超過500款熱門機型,目前只支持Android系統,暫不支持iOS系統,提供的測驗服務種類有兼容性測驗、性能測驗、功能測驗,并且提供了腳本錄制工具,類似Testin,但腳本錄制工具更新速度較慢,百度MTC的服務目前為收費服務,

移動app測驗服務包含:自動化測驗、人工測驗、用戶接受度評測、遠程真機除錯,點擊創建測驗任務即可

以功能回放測驗為例:創建測驗任務,步驟為上傳app,上傳用例,選擇測驗終端,截圖,郵件,

測驗報告包含:應用基本資訊、結論總覽、問題分布、問題串列、問題終端分布、性能結論、性能分析、記憶體占用分析、終端串列,
點擊進入終端詳細報告,包含內容:終端資訊、測驗結果、性能結果、測驗截圖、安裝日志、logcat日志、腳本日志、性能詳情、螢屏錄像,

各款云測驗平臺對比


總體總結
1、真機租用:Testin云測和AWS Device Farm,均包含iOS和Android,型號全,優先推薦,
2、AWS Device Farm支持框架Appium Java JUnit、Appium Java TestNG、Appium Python、Calabash、Instrumentation 、UI Automation 和 XCTest,終端支持Android和iOS,web,優先推薦
AWS Device Farm支持網路場景選擇,其他均不支持,但是它的性能指標比較少,只有三項,CPU,Memroy,Threads
3、百度MTC支持Appium、Robotium、Uiautomator框架,但是創建測驗任務時,過于簡單,具體測驗內容展示不明確,
深度性能測驗無亮點,與兼容性測驗中的性能資料無明顯優勢,
4、阿里MQC支持在線錄制腳本,自行撰寫腳本支持Appium、Robotium框架
測驗服務型別分布清晰,按測驗系統劃分,支持Android,iOS,yunos,創建測驗任務時,測驗步驟型別表述清晰,
5、騰訊優測-Xtest工具,支持錄制腳本,深度測驗服務的報告很全面,但是價格稍貴,
6、Testin是國內較早涉足云測驗領域的公司之一,Testin在云端部署了300多款1000多部測驗終端,終端種類及數量都比較全面,支持Android與iOS系統,步驟簡單,便于操作,
真機測驗
注意:下載手機助手,換一根資料線,
第一步:讓手機顯示開發者選項
多次點擊版本號,顯示開發者選項


允許USB除錯
若使用真機,用USB將手機和電腦連接,在手機端進行操作:
(1)選擇USB連接方式為設備檔案管理;
(2)設定->開啟開發者選項->勾選‘USB除錯’(真機和模擬器上皆需進行),
檢測連接設備
在終端中輸入’adb devices‘,此時已連接設備串列下應存在設備序列號
執行相應的測驗操作
同屏

adb命令
adb devices
adb install xxx
adb uninstall 程式包名
adb shell 進入手機
adb shell dumpsys meminfo +包名:應用的記憶體使用情況
adb logcat -v time process > C:/log/aa.txt
adb logcat *:W
用monkey 命令 對登錄apk進行 性能測驗

adb shell monkey -p com.example.login --ignore-crashes --ignore-timeouts --throttle 100 --pct-touch 50 --pct-motion 50 -v -v 1000 >c:\login\c.txt
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/292520.html
標籤:其他
