Android開發(fā)、adb、monkey測試

一、 手機測試概念

傳統(tǒng)手機測試 VS 手機應(yīng)用軟件測試

傳統(tǒng)手機測試:指測試手機本身比如抗壓,抗摔,抗疲勞,抗低溫高溫等。也包括手機本身功能、性能等測試。

手機應(yīng)用軟件測試 C/S Client/Server

手機應(yīng)用軟件是基于手機操作系統(tǒng)之上開發(fā)出來的軟件,做這樣的測試就叫做手機應(yīng)用軟件測試。

二、手機端常規(guī)測試

2.1.What

2.1.1.介紹手機測試的概念架構(gòu)

image.png

image.png

對于手機端測試,按照平臺來分,分為Android和IOS兩大主流系統(tǒng)

Android開源導(dǎo)致碎片化比較嚴重,(手機品牌眾多,系統(tǒng)版本各異,分辨率不統(tǒng)一,主流手機型號上千。無法保證應(yīng)用、游戲?qū)τ谒惺謾C的適配兼容。)bug比較多,而IOS通常bug會少一些。

Android手機長按home鍵,會呼出應(yīng)用列表和切換應(yīng)用,右滑擇會終止應(yīng)用。

還有分辨率測試,Android手機分辨率有20多種,IOS較少一些

再就是手機操作系統(tǒng),Android系統(tǒng)太多了,IOS較少,但是升級之后不能夠降級,不過呢,發(fā)現(xiàn)了最近ios中boss直聘的一個bug,是有關(guān)于Boss直聘強更的一個bug,當(dāng)我們點擊手機APP端 Boss直聘 進入主頁面彈出提示框“新增郵箱上傳附件簡歷功能” 彈窗中有立即升級的鏈接,點擊別的區(qū)域沒有反應(yīng);必須點擊“立即升級”才會跳轉(zhuǎn)到“App Store”若不升級,重新切換回Boss直聘界面,依舊提示“立即升級”全部退出依然如此。

按照目前技術(shù)架構(gòu)的話,現(xiàn)在有一些原生的app架構(gòu),類似于Client Server架構(gòu),也有基于Html5的app,類似于pc機的BS(Broswer server)架構(gòu)。手機測試和pc機類似,又有一些不同的地方。

當(dāng)然除了手機,現(xiàn)在還有好多使用Android系統(tǒng),比如酒店點餐的平板,銀行對公或者對個人業(yè)務(wù)的業(yè)務(wù)平臺,還有一些智能的穿戴設(shè)備,小米的手環(huán),google 聯(lián)想的智能眼鏡,智能家居,電視盒子,這些都是在使用android系統(tǒng),我之前最早的時候,就要測試過一個智能家居設(shè)備,測試的時候需要考慮藍牙,wifi連接傳輸這塊,也有好多要測試的內(nèi)容。

2.2.How

1.1.2. 功能測試

對于手機app來說,和我們測試web項目差不太多,也是各種測試方式需要考慮進來,比如說邏輯功能測試,現(xiàn)在移動端越來越火爆,大家用的軟件也越來越多,對軟件也越來越挑剔,現(xiàn)在公司在開發(fā)移動端的時候,肯定是有相應(yīng)的需求文檔和UI所設(shè)計的產(chǎn)品效果圖,我們做邏輯功能測試,就是根據(jù)這些資料,當(dāng)然也根據(jù)我們正常人的邏輯思維進行邏輯功能測試,在做邏輯功能測試的時候,我們要測試主頁面,我的頁面,商城頁面這些功能是否合理。

1.1.3.安裝與卸載測試

軟件安裝后是否可以正常運行,安裝過程中是否可以取消,安裝空間不足時,是否有相應(yīng)提示,是否可以卸載應(yīng)用(可通過桌面卸載,也可以通過軟件卸載。曾發(fā)現(xiàn)在IOS手機上有個應(yīng)用安裝時未完全安裝,終止安裝后,未完成安裝的應(yīng)用圖標(biāo)一直顯示在手機上,并且無法成功刪除),卸載是否支持取消功能,單擊取消后軟件卸載功能是否正常,卸載后文件是否全部刪除所有的安裝文件夾,從不同的應(yīng)用市場下載進行安裝測試,比如測試小米市場,華為市場,應(yīng)用寶,安卓市場,安智市場的安裝測試。

1.1.4. 軟件升級測試

當(dāng)客戶端有新版本時,是否有更新提示,當(dāng)版本為非強制升級版時,用戶可以取消更新,老版本能正常使用,用戶在下次啟動app時,仍能出現(xiàn)更新提示;當(dāng)版本為強制升級版時,當(dāng)給出強制更新后用戶沒有做更新時,退出客戶端,下次啟動app時,仍出現(xiàn)強制升級提示,當(dāng)然現(xiàn)在強更已經(jīng)很少出現(xiàn)了。檢查更新后各個功能是否能正常使用;在線跨版本升級后能否正常使用,當(dāng)然現(xiàn)在主流的安裝更新方式開始向熱更新熱部署方式轉(zhuǎn)變,就是在用戶不需要手動更新的情況下,完成版本的靜默更新,這個技術(shù)是有難度的,需要看公司中程序員的技術(shù)能力還有就是是否有這樣的產(chǎn)品需求。

1.1.5. 登錄測試

對于登錄測試,基本上每一款app都有登錄注冊功能,所以在測試App的時候,登錄測試是必不可少的一項。

我們做登錄測試的時候,往往包含這么些項:

登錄用戶名和密碼錯誤時,界面有提示信息;

用戶主動退出登陸后,下次進入app時,應(yīng)該進入登陸界面;

密碼更改后,登錄時是否做到了有效數(shù)據(jù)的校驗,對于未登錄狀態(tài)時,一些頁面的操作,是否做了控制;

切換賬號登錄,檢驗登錄的信息是否做到及時更新,對于多個端(web、iso、android等)進行操作時,確保數(shù)據(jù)庫操作無誤,且每個端可以及時看到數(shù)據(jù)的更新,一個賬號只允許一臺機器登陸的軟件,需要賬號登錄多個手機時,是否將原用戶踢下線,且能夠給出提示信息,用戶登錄狀態(tài)太久,session會過期,會出現(xiàn)“雖然是登錄狀態(tài),系統(tǒng)會提示用戶沒有登陸”

1.1.6.安全性測試 - 權(quán)限測試

對于手機權(quán)限,如果我們是剛開發(fā)不知名的app,權(quán)限這塊盡量少一些,這些權(quán)限在安裝的時候都必須用戶同意。在Android 6.0之后,權(quán)限需要動態(tài)的申請,我們測試的時候,需要測試在使用到這些權(quán)限的時候,程序員是否做邏輯判斷,用戶同意權(quán)限應(yīng)該怎么操作,不同意權(quán)限又應(yīng)該怎么操作。

1.1.7.消息推送測試

消息推送,是移動端的一大特色。我就說一下消息推送我們所做的這些方面吧,

未鎖屏?xí)r,應(yīng)用后臺運行,消息推送是否可正常接收,未鎖屏?xí)r,APP客戶端使用過程中,可以收到消息提醒,且點擊可查看。

鎖屏?xí)r,手機消息欄是否可以接收到消息提醒。且點擊可查看。點擊后消息欄中消失。

精準推送

當(dāng)推送消息是針對登錄用戶的時候,需要檢查收到的push與用戶身份是否相符,沒有錯誤的將其他人的消息推送過來

push推送消息是是否能有針對性的推送,如相應(yīng)內(nèi)容推送給相應(yīng)用戶(精準推送)

退出登錄后,是否接受push推送(根據(jù)需求來)

1.1.8.前后臺切換測試(鎖屏)

APP切換到后臺,再回到APP,檢查是否停留在上一次操作界面;檢查功能及應(yīng)用狀態(tài)是否正常;程序是否崩潰,功能狀態(tài)是否正常,尤其是對于從后臺切換回前臺數(shù)據(jù)有自動更新的時候

手機鎖屏解屏后進入app注意是否會崩潰,功能狀態(tài)是否正常

當(dāng)APP使用過程中有電話進來中斷后再切換到APP,功能狀態(tài)是否正常

當(dāng)關(guān)閉APP進程后,在開啟APP,APP能否正常啟動

對于有數(shù)據(jù)交換的頁面,尤其是有視頻圖片之類的頁面,每個頁面都必須要進行前后臺切換、鎖屏的測試,這種頁面最容易出現(xiàn)崩潰

1.1.9.UI測試(界面測試)

確保產(chǎn)品UI符合產(chǎn)品經(jīng)理制定的原型圖與效果圖

一般涉及界面(如菜單、對話框、窗口和其他可視控件)布局、風(fēng)格、文字是否正確,頁面是否美觀,操作是否友好。

如:安裝app后的加載頁顯示,分享頁面的產(chǎn)品logo顯示

1.1.10.兼容性測試

我再說一下兼容性測試吧,兼容性測試主要考慮手機的版本,型號,分辨率,就像我說的,現(xiàn)在手機碎片化比較嚴重,各個版本,比如Android,從Android4.0到Android8.0的版本它是不一樣的,然后現(xiàn)在各大手機廠商像華為,三星,小米,錘子,魅族,vivo這些廠商都修改android源代碼,也是給我們增加和好多工作量,好多時候開發(fā)的軟件在三星上沒問題,但是華為,小米就不行。還有手機分辨率,現(xiàn)在主流的可能是19201080,但是還有好多其他分辨率,比如7201280,還有一些更大分辨率的手機,都要考慮這些分辨率的兼容,不然用戶視覺體驗就不好。

兼容測試,公司中會買好多測試機來太讓我們進行測試,一般是不同廠商的手機,當(dāng)然還有第三方云測平臺,比如testin還有騰訊wetest,就可以做兼容性測試??梢砸淮涡詼y試100臺測試機,同時會有相應(yīng)的兼容報告,bug報告。

對于IOS,ISO版本有7.1.2、8.3、9.1等;能否適配各種屏幕尺寸。

1.1.11.網(wǎng)絡(luò)環(huán)境測試

測試2G、3G、4G、wifi、有網(wǎng)、無網(wǎng)、弱網(wǎng)情況下應(yīng)用的運行

網(wǎng)絡(luò)不好時,提交數(shù)據(jù)是否一直處理提交中,是否會有延遲,數(shù)據(jù)交換失敗是否會有提醒

有網(wǎng)到無網(wǎng)再到有網(wǎng)環(huán)境時,數(shù)據(jù)是否可以自動恢復(fù),正常加載

無網(wǎng)絡(luò)時,各種提示信息是否友好,數(shù)據(jù)本地化是否正確(比如提示當(dāng)前已斷開網(wǎng)絡(luò),請檢查網(wǎng)絡(luò)設(shè)置;還有從wifi環(huán)境切換到4G環(huán)境提示是否啟用4G網(wǎng)絡(luò),會產(chǎn)生扣費。

1.1.12.mokey測試 (monkey壓力測試 測試為1000-2000)

對于手機測試,除了我們一些常規(guī)的功能測試,我們還會做壓力測試,比如對于Android手機,我會使用adb指令進行一些相應(yīng)的操作,比如通過adb查看設(shè)置,進入設(shè)備,抓取log,我們測試的時候,會使用adb logcat所抓出來的log日志存到電腦,發(fā)給開發(fā),方便他們快速解決bug。

另外,我還會使用monkey對app進行測試,可以使用monkey對app做壓力測試,主要就是測試操作app的時候,程序是否會崩潰。

我們使用adb shell monkey 指定對應(yīng)的app,執(zhí)行要測試的次數(shù),指定要觸摸的比率,超時時間和忽略崩潰信息,就可以執(zhí)行測試,將測試log存到某個位置,然后把測試出的bug 日志發(fā)送給開發(fā)。300000

我就簡單的說一下測試的指令吧,比如我上邊所說的邏輯,我們用 adb shell mokey -p 指定要測試的包名 --ignore-crashs 忽略崩潰 --ignore-timeout 忽略超時 --throttle 38指定延遲時間毫秒 -s 指定測試種子 指定測試次數(shù),然后將文件 >輸出到磁盤中。

1.1.13.性能測試

對于性能測試,(eclipse和Android studio中本身有檢測cpu和內(nèi)存的工具,也有檢測手機內(nèi)存泄漏的工具)靠工具來測試手機cpu占用,內(nèi)存占用,電池溫度等,以及測試我們的app在后臺持續(xù)運行的流量消耗和電量消耗問題。

三、Android介紹

Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機和平板電腦,由Google公司和開放手機聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。尚未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安致”。

Android操作系統(tǒng)最初由Andy Rubin開發(fā),主要支持手機。2005年8月由Google收購注資。2007年11月,Google與84家硬件制造商、軟件開發(fā)商及電信營運商組建開放手機聯(lián)盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開源許可證的授權(quán)方式,發(fā)布了Android的源代碼。第一部Android智能手機發(fā)布于2008年10月。Android逐漸擴展到平板電腦及其他領(lǐng)域上,如電視、數(shù)碼相機、游戲機等。2011年第一季度,Android在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一。 2013年的第四季度,Android平臺手機的全球市場份額已經(jīng)達到78.1%。 [1] 2013年09月24日谷歌開發(fā)的操作系統(tǒng)Android在迎來了5歲生日,全世界采用這款系統(tǒng)的設(shè)備數(shù)量已經(jīng)達到10億臺。

安卓版本:

Android在正式發(fā)行之前,最開始擁有兩個內(nèi)部測試版本,并且以著名的機器人名稱來對其進行命名,它們分別是:阿童木(AndroidBeta),發(fā)條機器人(Android 1.0)。后來由于涉及到版權(quán)問題,谷歌將其命名規(guī)則變更為用甜點作為它們系統(tǒng)版本的代號的命名方法。甜點命名法開始于Android 1.5發(fā)布的時候。

作為每個版本代表的甜點的尺寸越變越大,然后按照26個字母數(shù)序:紙杯蛋糕(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),牛軋?zhí)牵∟ougat,Android 7.0),奧利奧(Oreo,Android 8.0),餡餅(Pie,Android 9.0),Q(未命名,Android10.0),R(未命名,Android11.0)

Android的系統(tǒng)架構(gòu)和其操作系統(tǒng)一樣,采用了分層的架構(gòu)。

從架構(gòu)圖看,Android分為四個層,從高層到低層分別是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運行庫層和Linux內(nèi)核層

image.png

3.1. Android SDK(Software Development Kit)的安裝和配置

Android SDK,即Android Software Development Kit,軟件開發(fā)工具包。

它提供了在Windows/Linux/Mac平臺上開發(fā)Android應(yīng)用的開發(fā)組件。包含了在Android平臺上開發(fā)移動應(yīng)用程序的各種工具集。

3.2.安裝java環(huán)境

image.png

3.3.啟動配置好SDK的Android版本eclipse Android Studio(類似Idea)

3.3.1. 檢查是否成功:

cmd → java -version

image.png

3.3.2. Android studio安裝

3.3.3. 創(chuàng)建虛擬機

image.png

Android App開發(fā)一般需要模擬器來測試程序的正確性

Android Virtual Device,就是Android運行的虛擬設(shè)備,是Android的模擬器識別。建立的Android App要運行,必須創(chuàng)建AVD,每個AVD上可以配置很多的運行項目。

簡而言之:AVD即用于Android開發(fā)調(diào)試的模擬機。

AVD name:填寫的虛擬機名稱,純英文和數(shù)字組成。

Device:設(shè)定模擬的設(shè)備,一般選擇手機型號:3.2QVGA(ADP2)(320480: mdpi)。

Target:安裝Android的版本,目前4.0是主流,即可選Android4.0.3 API 15。

CPI/ABi:模擬的CPU型號,這里的ARM是手機的CPU型號。

Keyboard:務(wù)必勾選“Hardware keyboard present”。

Skin:務(wù)必勾選“Display a skin with hardware controls”。

Front camera/Back camera:是否模擬前置和后置攝像頭,裝有Cam的讀者可以考慮。

RAM:設(shè)置模擬器內(nèi)存,一般在512~1024M。 VM Heap:每一個應(yīng)用的最大內(nèi)存空間分配,默認即可。

SD Card:選在size上,這個就是在默認目錄里自動建立一個模擬SD卡的文件,SD卡的大小隨意,也可以不填,不填代表不適用SD卡。

3.3.4. 啟動虛擬機

四、ADB

4.1.ADB介紹

ADB全稱Android Debug Bridge, 是android sdk里的一個工具, 用這個工具可以直接操作管理android模擬器或者真實的andriod設(shè)備(如G1手機)

它的主要功能有:

運行設(shè)備的shell(命令行)

管理模擬器或設(shè)備的端口映射

計算機和設(shè)備之間上傳/下載文件

將本地apk軟件安裝至模擬器或android設(shè)備

4.2.配置ADB環(huán)境變量

打開:adt-bundle-windows-x86_64_20140101文件

找到adb.exe所在路徑

配置ADB_HOME環(huán)境變量

image.png

參考java環(huán)境變量配置

image.png

顯示成功:

image.png

4.3.ADB常用指令

查看設(shè)備:adb devices

這個命令是查看當(dāng)前連接的設(shè)備, 連接到計算機的android設(shè)備或者模擬器將會列出顯示

安裝軟件:adb install -r (APK路徑)

-r 代表如果apk已安裝,重新安裝apk并保留數(shù)據(jù)和緩存文件。apk路徑則可以直接將apk文件拖進cmd窗口,記得加空格。

卸載軟件

adb uninstall <軟件名>

adb uninstall -k <軟件名>

如果加 -k 參數(shù),為卸載軟件但是保留配置和緩存文件

問程序員--com.example.test

登錄設(shè)備shell

adb shell

adb shell

image.png

這個命令將登錄設(shè)備的shell.

后面加將是直接運行設(shè)備命令, 相當(dāng)于執(zhí)行遠程命令

查看手機內(nèi)存情況

adb shell dumpsys cpuinfo

image.png

查看內(nèi)存情況

adb shell getprop | findstr dalvik 本機內(nèi)存的使用情況

image.png

查看應(yīng)用內(nèi)存使用情況

adb shell dumpsys meminfo +包名:應(yīng)用的內(nèi)存使用情況

image.png

列出手機裝的所有app的包名:

adb shell pm list packages

image.png

列出系統(tǒng)應(yīng)用的所有包名:

adb shell pm list packages -s

image.png

列出除了系統(tǒng)應(yīng)用的第三方應(yīng)用包名:

adb shell pm list packages -3

image.png

4.4.adb logcat 查看手機日志

adb logcat 命令格式 : adb logcat [選項] [過濾項], 其中 選項 和 過濾項 在 中括號 [] 中, 說明這是可選的;

在命令行中輸入 adb logcat --help 命令, 就可以顯示該命令的幫助信息;

">"輸出 : ">" 后面跟著要輸出的日志文件, 可以將 logcat 日志輸出到文件中, 使用adb logcat > log 命令

指定 logcat 的日志輸出格式 :

-- "-v"選項 : 使用adb logcat -v time 命令, 可以查看日志的輸出時間;

"process"格式 : " 優(yōu)先級 (進程ID) : 日志信息 ", 使用adb logcat -v process 命令;

將手機日志輸出到本地文件中

adb logcat -v time process > C:/log/aa.txt

有多臺設(shè)備是adb選擇設(shè)備

adb -s 設(shè)備名稱 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 日志輸出

顯示所有優(yōu)先級大于等于“warning”的日志

五、APK牢固性(加密)

應(yīng)用加固

防篡改:通過完整性保護和簽名校驗保護,能有效避免應(yīng)用被二次打包,杜絕盜版應(yīng)用的產(chǎn)生;

防逆向:通過對代碼進行隱藏以及加密處理,使攻擊者無法對二進制代碼進行反編譯,獲得源代碼或代碼運行邏輯;

防調(diào)試:通過反調(diào)試技術(shù),使攻擊者無法調(diào)試原生代碼或Java代碼,阻止攻擊者獲取代碼里的敏感數(shù)據(jù)。

網(wǎng)上有很多Apk加固的第三方平臺,最有名的應(yīng)當(dāng)屬于:愛加密和梆梆加固了。其實加固說的簡單點就是對源Apk進行加密,然后在套上一層殼即可

六、Monkey測試

6.1.參考資料

http://blog.csdn.net/jlminghui/article/details/38238443

6.2.Money介紹

顧名思義,Monkey就是猴子, Monkey測試,就像一只猴子, 在電腦面前,亂敲鍵盤在測試。

通過Monkey程序模擬用戶觸摸屏幕、滑動Trackball、 按鍵等操作來對設(shè)備上的程序進行壓力測試,檢測程序多久的時間會發(fā)生異常。

6.3.Monkey用來做什么

Monkey 主要用于Android 的壓力測試自動的一個壓力測試小工具, 主要目的就是為了測試app 是否會Crash(崩潰)。

6.4. Monkey 前提條件

環(huán)境配置:把adb加入系統(tǒng)環(huán)境,手機開啟開發(fā)者模式

連接手機,獲取測試的包名。獲取包名的方法

Monkey編寫測試命令,并運行。monkey操作命令

如果要提前中結(jié)束測試,中斷運行中的monkey

CTRL+Cadb shell ps | grep monkey? 返回進程號adb shell kill [剛才查到的進程號]

6.5Monkey程序介紹

Monkey程序由Android系統(tǒng)自帶,使用Java語言寫成,在Android文件系統(tǒng)中的存放路徑是: /system/framework/monkey.jar;

Monkey.jar程序是由一個名為“monkey”的Shell腳本來啟動執(zhí)行,shell腳本在Android文件系統(tǒng)中 的存放路徑是:/system/bin/monkey;

Monkey 命令啟動方式:

a)可以通過PC機CMD窗口中執(zhí)行: adb shell monkey {+命令參數(shù)}來進行Monkey測試

b)在PC上adb shell 進入Android系統(tǒng),通過執(zhí)行 monkey {+命令參數(shù)} 來進行Monkey 測試

c ) 在Android機或者模擬器上直接執(zhí)行monkey 命令,可以在Android機上安裝Android終端模擬器

七、Monkey 命令 基本參數(shù)介紹

7.1.使用monkey測試手機所有程序

adb shell monkey 100 執(zhí)行monkey測試100次 針對rom測試或者

image.png

使用adb指令,安裝Login.apk

image.png

7.2.-p <允許的包名列表>

adb shell monkey -p com.example.login 100

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

指定一個包:

image.png

7.3.顯示日志詳細程度

用于指定反饋信息級別(信息級別就是日志的詳細程度),總共分3個級別,分別對應(yīng)的參數(shù)如下 表所示:

Level 0 : adb shell monkey -p com.example.login -v 100 // 缺省值,僅提供啟動提示、測試完成和最終結(jié)果等少量信息

image.png

Level 1 : adb shell monkey -p com.example.login -v -v 100 // 提供較為詳細的日志,包括每個發(fā)送到Activity的事件信息

Level 2 : adb shell monkey -p com.example.login -v -v -v 100 // 最詳細的日志,包括了測試中選中/未選中的Activity信息

image.png

7.4.Monkey日志分析

將log信息寫到文檔中

adb shell monkey 100 >c:/log/b.txt

image.png

正常情況, 如果Monkey測試順利執(zhí)行完成, 在log的最后, 會打印出當(dāng)前執(zhí)行事件的次數(shù)和所花費的時間; // Monkey finished 代表執(zhí)行完成

隨機數(shù)種子

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

monkey測試1:adb shell monkey -p com.shjt.map –s 10 100

monkey測試2:adb shell monkey -p com.shjt.map –s 10 100

image.png

7.5.--throttle <毫秒>

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

例:adb shell monkey -p com.example.login --throttle 300 100

表示執(zhí)行100個偽隨機用戶事件流,事件間隔為300毫秒。

注:一般設(shè)置為300毫秒,原因是實際用戶操作的最快300毫秒左右一個動作事件。

image.png

7.6.--pct-touch <percent>

調(diào)整觸摸事件的百分比。(觸摸事件是指在屏幕中的一個down-up事件,即在屏幕某處按下并抬起的操作)

–pct-touch:觸摸事件。即在某一位置的Down-Up(手指的放下和抬起)事件。Down(ACTION_DOWN)和Up(ACTION_UP)的坐標(biāo)臨近,但并非相同。

如:adb shell monkey -pct-touch 67 -v 10

表示執(zhí)行10個偽隨機用戶事件流,并調(diào)整其中觸摸事件的百分比為67%。

注:此參數(shù)設(shè)置要適應(yīng)當(dāng)前被測應(yīng)用程序的操作,比如一個應(yīng)用80%的操作都是觸摸,那就可以將此參數(shù)的百分比設(shè)置成相應(yīng)較高的百分比。

7.7.--pct-motion <percent>

調(diào)整motion事件百分比。(motion事件是由屏幕上某處一個down事件、一系列偽隨機的移動事件和一個up事件組成)

–pct-motion:動作事件。以Down(ACTION_DOWN)開始,Up(ACTION_UP)結(jié)尾,中間至少有一次Move(ACTION_MOVE)。

如:adb shell monkey -pct-motion 67 -v 10

表示執(zhí)行10個偽隨機用戶事件流,并調(diào)整其中動作事件的百分比為67%。

注:這里的移動是直線滑動

7.8.--ignore-crashes

作用:通常,應(yīng)用發(fā)生崩潰或異常時Monkey會停止運行。如果設(shè)置此項,Monkey將繼續(xù)發(fā)送事件給系統(tǒng),直到事件計數(shù)完成。

正常操作,不忽略異常

image.png

image.png

忽略異常

image.png

image.png

7.9.--ignore-timeouts(ANR)

作用:通常,應(yīng)用程序發(fā)生任何超時錯誤(如“Application Not responding”對話框)Monkey將停止運行,設(shè)置此項,Monkey將繼續(xù)發(fā)送事件給系統(tǒng),直到事件計數(shù)完成。

7.10.Monkey 實例

用monkey 命令 對登錄apk進行 性能測試

image.png

monkey -p com.tencent.mtaexample -s 23 --throttle2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>/data/local/tmp/log.txt 2>&1 &

-p后面接著的對應(yīng)的包名,如果是整機測試,就不需要 -p package_name

-s后面是對應(yīng)的種子數(shù),好像就是操作步驟,根據(jù)她們測試的經(jīng)驗,一般種子數(shù)在23,同步她們測試的結(jié)果,一般種子的個數(shù)固定為23,和她們選擇的操作步驟就是同步的。

--ignore-crashes --ignore-timeouts 這里是在monkey測試的過程中遇到carash或者timeout的情況時忽略掉,一般不設(shè)置時,出現(xiàn)carash或者timeout時,Monkey測試會終止。這里是防止Monkey測試終止。

-v 指的是Monkey測試時打印log級別。

100000 這里是指點擊的次數(shù),根據(jù)她們測試的經(jīng)驗,對于單個應(yīng)用程序這個次數(shù)設(shè)置在100000次就可以了;如果是整機,一般設(shè)置在500000次。

/data/local/tmp/log.txt測試的log記錄在手機上/data/local/tmp/ 下面的log.txt里面,這個名字可以自己寫。

2>&1 固定的寫法,這個也很重要,代表的意思是中間忽略的東東的日志一并輸入到指定的文件中。

最后單獨的一個"&" 是一旦Monkey測試開始了,之后可以拔掉數(shù)據(jù)線,不會影響Monkey測試。

測試所有模塊 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

7.11.Monkey異常分析

一般我們可以一次發(fā)送5萬次隨機事件的請求,每個請求之間的間隔為150毫秒,測試大約會進行40min,完成以后就可以查看日志。

日志中可能的錯誤:

1.程序異常退出,uncausedexception (ctrl+f搜索‘Fatal’)

2.程序強制關(guān)閉,F(xiàn)orceClosed (簡稱FC) (同上)

3.程序無響應(yīng),ApplicationNo Response(ctrl+f搜索‘ANR ’,加空格是為了屏蔽掉一些無效信息)

4.手動生成。

Monkey 執(zhí)行中斷, 在log最后也能看到當(dāng)前執(zhí)行次數(shù)

7.12.monkey事件百分比

首先注意一點,這個Event percentages在不同版本的SDK版本中順序可能會不一樣。

下列中monkey源代碼是從android4.4.2SDK中反編譯出來的

image.png

image.png

由上圖可以看出

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軌跡球事件百分比(軌跡球事件包括一個或多個隨機移動,有時還伴有點擊。軌跡球現(xiàn)在智能手機上已經(jīng)沒有了,就是類似手柄的方向鍵一樣)

4:--pct-rotation//screen

rotation events percentage屏幕旋轉(zhuǎn)百分比,橫屏豎屏

5:--pct-nav//nav 基本導(dǎo)航事件。即來自于方向輸入設(shè)備的上下左右操作。

events percentage”基本”導(dǎo)航事件百分比(導(dǎo)航事件包括上下左右,如方向輸入設(shè)備的輸入)老手機的上下左右鍵,智能機上沒有

6:--pct-majornav//major 即Navigation Bar的確認,菜單,返回鍵等

nav events percentage”主要”導(dǎo)航事件百分比(這些導(dǎo)航事件通常會引發(fā)UI的事件,例如5-way pad的中間鍵、回退鍵、菜單鍵)

7:--pct-syskeys//system(key)

operations percentage”系統(tǒng)”按鈕事件百分比(這些按鈕一般專供系統(tǒng)使用,如Home, Back, Start Call, End Call,音量控制)

8:--pct-appswitch//app

switch events percentage啟動activity事件百分比。在隨機的間隔里,Monkey會執(zhí)行一個startActivity()調(diào)用,作為最大程度覆蓋包中全部Activity的一種方法

9:--pct-flip//keyboard

flip percentage鍵盤輕彈百分比,如點擊輸入框,鍵盤彈起,點擊輸入框以外區(qū)域,鍵盤收回

10:--pct-anyevent//anyevents 該事件可能包含其他上述事件。

percentage其他類型事件百分比。包括了其他所有的類型事件,如按鍵、其他不常用的設(shè)備上的按鈕等等。

八、手機兼容性測試

Android App兼容性測試,是一個比較重要的App評價內(nèi)容,

說到測試階段,兼容性測試主要是對App在各類機型上的兼容、適配等情況進行測試。搞清楚這一階段的測試重點后,因此,Android App在進行兼容性測試前,一定要做好其前序測試內(nèi)容,否則兼容性測試效果將會較差。

8.1.機型配置問題。

Android兼容測試一定要做到寬范圍覆蓋,如果做不到這個,那么就違背了兼容性測試的目標(biāo)——測試App在各類機型、系統(tǒng)上的運行是否兼容、適配。

因此,兼容性測試必須要在各個機型、系統(tǒng)上對App進行運行、測試,查看相關(guān)UI是否適配、功能是否正常。所以,必須要為兼容性測試配備盡可能多的機型。這是不是意味著,你的公司要去購置各類機型設(shè)備?當(dāng)然不是。對于一般的公司或者開發(fā)者,這將會是一大筆開銷,為了節(jié)約資金而造成進行覆蓋率較低的話,則失去了兼容性測試的意義。另外,這也是沒必要的,因為往往你就一個或兩三個App,為了這少量App測試,而去購置如此大量的設(shè)備,無疑是一種資源浪費。除此,還有一個原因,將在兼容性測試如何展開里去說。除此,機型量的多少也是一個權(quán)衡的過程,目前,通用的兼容性測試一般覆蓋Top100-300的機型,對于實在是小量機型或者老舊機型,用戶量非常小,在一定程度上,是否需要覆蓋則需要權(quán)衡,總的來說,Top排名的手機基本足夠。

8.2.兼容性如何展開?

這是一個經(jīng)驗性的過程,可以去借鑒大型互聯(lián)網(wǎng)公司的成熟App的測試方法。目前,無論是國際知名App,還是國內(nèi)知名App,谷歌、Facebook,BAT等,他們都有大量的App對外推出,對于App兼容性要求非常高,因此,他們的做法是非常值得借鑒的。這些公司的兼容性測試,都有一個相同的解決方案,那就是自動化測試框架與平臺的實現(xiàn)。通過瀏覽上述公司在各種大會公布的內(nèi)容,或者通過論壇知識分享,都能看到,他們不僅有自己的測試實驗室,擁有大量的手機,除此,還有一整套的自動化測試平臺,來完成兼容性測試。

8.3.有哪些好用的App云測試平臺?

目前對移動App的測試主要指的是下面幾部分:

兼容性測試——App對不同手機、操作系統(tǒng)版本的兼容性測試,包括安裝、啟動、卸載等。

功能測試——遍歷應(yīng)用的每一個角落,查看應(yīng)用的功能、邏輯是否正常,完整。

性能測試——應(yīng)用的性能怎樣,如啟動時間、反應(yīng)時間、CPU占用率,內(nèi)存占用率等。

穩(wěn)定性測試——在一定時間內(nèi)對App進行持續(xù)地測試,測試App運行的穩(wěn)定性。

網(wǎng)絡(luò)場景測試——測試不同網(wǎng)絡(luò)環(huán)境中App的運行狀況,如2G&3G,弱網(wǎng)絡(luò)等。

以下是國內(nèi)幾家主要的云測試平臺:

Testin:Testin云測|全球領(lǐng)先的App及手游測試平臺

Testin是國內(nèi)較早涉足云測試領(lǐng)域的公司之一。Testin在云端部署了300多款1000多部測試終端,終端種類及數(shù)量都比較全面。支持Android與iOS系統(tǒng)。但目前僅少部分服務(wù)為免費,絕大多數(shù)服務(wù)為收費項目,故而使用成本較高,具體收費情況請查看官網(wǎng)的介紹。

騰訊優(yōu)測:優(yōu)測網(wǎng)-讓測試更簡單

騰訊優(yōu)測是騰訊旗下的云測試服務(wù)平臺,擁有超過1000款測試終端,機型數(shù)量龐大。但僅支持Android,暫不支持iOS系統(tǒng)。提供兼容性測試服務(wù),不提供性能測試、功能測試及穩(wěn)定性測試服務(wù)。另外,騰訊優(yōu)測還提供“云手機”服務(wù),開發(fā)者可以遠程控制測試終端,實時查看App安裝、運行效果。優(yōu)測目前的功能為收費(新注冊的用戶可獲得官方贈送的禮包),每天限制提交2次測試。

移動測試學(xué)習(xí)端口:https://wetest.qq.com/guide/learn-source

image.png

貫眾云測試:貫眾云測試

貫眾云測試是中國移動旗下的云測試服務(wù)平臺,目前擁有超過100款市面主流終端,支持Android及iOS系統(tǒng)。提供兼容性測試、功能測試、性能測試,穩(wěn)定性測試(12小時)及網(wǎng)絡(luò)場景測試服務(wù)(2G&3G&4G)。支持Appium腳本。缺點是終端數(shù)量較少,優(yōu)點是功能較為全面,且基本功能都是免費,使用成本還是蠻低的。

百度MTC:百度移動云測試中心

百度MTC是百度開放平臺旗下的移動云測試中心。提供超過500款熱門機型,目前只支持Android系統(tǒng),暫不支持iOS系統(tǒng)。提供的測試服務(wù)種類有兼容性測試、性能測試、功能測試。并且提供了腳本錄制工具,類似Testin。但腳本錄制工具更新速度較慢。百度MTC的服務(wù)目前為收費服務(wù),具體收費情況請查看官網(wǎng)的介紹。

阿里MQC:MQC 阿里移動質(zhì)量中心

阿里MQC是阿里巴巴旗下的移動測試平臺。提供上百款測試終端,支持Android及iOS系統(tǒng)。提供兼容性測試、功能測試、性能測試以及穩(wěn)定性測試(1小時)。測試腳本需使用Robotium或Appium測試框架編寫,難度較高。MQC也提供了遠程的真機調(diào)試,功能和騰訊優(yōu)測類似,看來騰訊和阿里還真是一對兒冤家啊。

8.4.騰訊云測兼容性報告

image.png

image.png

image.png

image.png

8.5. 百度MTC-移動云測試中心

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

image.png

1、移動app測試服務(wù)包含:自動化測試、人工測試、用戶接受度評測、遠程真機調(diào)試。點擊創(chuàng)建測試任務(wù)即可

image.png

2、以功能回放測試為例:創(chuàng)建測試任務(wù)。步驟為上傳app,上傳用例,選擇測試終端,截圖,郵件。

image.png

3、測試報告包含:應(yīng)用基本信息、結(jié)論總覽、問題分布、問題列表、問題終端分布、性能結(jié)論、性能分析、內(nèi)存占用分析、終端列表。

點擊進入終端詳細報告,包含內(nèi)容:終端信息、測試結(jié)果、性能結(jié)果、測試截圖、安裝日志、logcat日志、腳本日志、性能詳情、屏幕錄像。

image.png

8.6.各款云測試平臺對比

image.png

image.png

8.7.總體總結(jié)

1、真機租用:Testin云測和AWS Device Farm,均包含iOS和Android,型號全,優(yōu)先推薦。

2、AWS Device Farm支持框架Appium Java JUnit、Appium Java TestNG、Appium Python、Calabash、Instrumentation 、UI Automation 和 XCTest,終端支持Android和iOS,web,優(yōu)先推薦

AWS Device Farm支持網(wǎng)絡(luò)場景選擇,其他均不支持。但是它的性能指標(biāo)比較少,只有三項,CPU,Memroy,Threads

3、百度MTC支持Appium、Robotium、Uiautomator框架,但是創(chuàng)建測試任務(wù)時,過于簡單,具體測試內(nèi)容展示不明確。

深度性能測試無亮點,與兼容性測試中的性能數(shù)據(jù)無明顯優(yōu)勢。

4、阿里MQC支持在線錄制腳本,自行編寫腳本支持Appium、Robotium框架

測試服務(wù)類型分布清晰,按測試系統(tǒng)劃分,支持Android,iOS,yunos。創(chuàng)建測試任務(wù)時,測試步驟類型表述清晰。

5、騰訊優(yōu)測-Xtest工具,支持錄制腳本。深度測試服務(wù)的報告很全面,但是價格稍貴。

6、Testin是國內(nèi)較早涉足云測試領(lǐng)域的公司之一。Testin在云端部署了300多款1000多部測試終端,終端種類及數(shù)量都比較全面。支持Android與iOS系統(tǒng),步驟簡單,便于操作。

九、真機測試

注意:下載手機助手,換一根數(shù)據(jù)線,

9.1.第一步:讓手機顯示開發(fā)者選項

多次點擊版本號,顯示開發(fā)者選項

image.png

image.png

9.2.允許USB調(diào)試

若使用真機,用USB將手機和電腦連接,在手機端進行操作:

(1)選擇USB連接方式為設(shè)備文件管理;

(2)設(shè)置->開啟開發(fā)者選項->勾選‘USB調(diào)試’(真機和模擬器上皆需進行)。

9.3.檢測連接設(shè)備

在終端中輸入’adb devices‘,此時已連接設(shè)備列表下應(yīng)存在設(shè)備序列號

9.4.執(zhí)行相應(yīng)的測試操作

9.5.同屏

image.png

10.作業(yè):

adb devices

adb install xxx

adb uninstall 程序包名

adb shell 進入手機

adb shell dumpsys meminfo +包名:應(yīng)用的內(nèi)存使用情況

adb logcat -v time process > C:/log/aa.txt

adb logcat *:W

用monkey 命令 對登錄apk進行 性能測試

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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