一专普、 手機測試概念
傳統(tǒng)手機測試 VS 手機應用軟件測試
- 傳統(tǒng)手機測試:指測試手機本身比如抗壓,抗摔码耐,抗疲勞追迟,抗低溫高溫等。也包括手機本身功能骚腥、性能等測試敦间。
- 手機應用軟件測試 C/S Client/Server
手機應用軟件是基于手機操作系統(tǒng)之上開發(fā)出來的軟件,做這樣的測試就叫做手機應用軟件測試束铭。
二廓块、手機端常規(guī)測試
2.1.What
2.1.1.介紹手機測試的概念架構
對于手機端測試,按照平臺來分契沫,分為Android和IOS兩大主流系統(tǒng)
- Android開源導致碎片化比較嚴重带猴,(手機品牌眾多,系統(tǒng)版本各異懈万,分辨率不統(tǒng)一拴清,主流手機型號上千。無法保證應用会通、游戲對于所有手機的適配兼容口予。)bug比較多,而IOS通常bug會少一些涕侈。
- Android手機長按home鍵苹威,會呼出應用列表和切換應用,右滑擇會終止應用驾凶。
還有分辨率測試牙甫,Android手機分辨率有20多種,IOS較少一些 - 再就是手機操作系統(tǒng)调违,Android系統(tǒng)太多了窟哺,IOS較少,但是升級之后不能夠降級技肩,不過呢且轨,發(fā)現了最近ios中boss直聘的一個bug,是有關于Boss直聘強更的一個bug虚婿,當我們點擊手機APP端 Boss直聘 進入主頁面彈出提示框“新增郵箱上傳附件簡歷功能” 彈窗中有立即升級的鏈接旋奢,點擊別的區(qū)域沒有反應;必須點擊“立即升級”才會跳轉到“App Store”若不升級然痊,重新切換回Boss直聘界面至朗,依舊提示“立即升級”全部退出依然如此。
- 按照目前技術架構的話剧浸,現在有一些原生的app架構锹引,類似于Client Server架構,也有基于Html5的app唆香,類似于pc機的BS(Broswer server)架構嫌变。手機測試和pc機類似,又有一些不同的地方躬它。
- 當然除了手機腾啥,現在還有好多使用Android系統(tǒng),比如酒店點餐的平板冯吓,銀行對公或者對個人業(yè)務的業(yè)務平臺倘待,還有一些智能的穿戴設備,小米的手環(huán)桑谍,google 聯想的智能眼鏡延柠,智能家居,電視盒子锣披,這些都是在使用android系統(tǒng)贞间,我之前最早的時候,就要測試過一個智能家居設備雹仿,測試的時候需要考慮藍牙增热,wifi連接傳輸這塊,也有好多要測試的內容胧辽。
2.2.How
1.1.2. 功能測試
對于手機app來說峻仇,和我們測試web項目差不太多,也是各種測試方式需要考慮進來邑商,比如說邏輯功能測試摄咆,現在移動端越來越火爆凡蚜,大家用的軟件也越來越多,對軟件也越來越挑剔吭从,現在公司在開發(fā)移動端的時候朝蜘,肯定是有相應的需求文檔和UI所設計的產品效果圖,我們做邏輯功能測試涩金,就是根據這些資料谱醇,當然也根據我們正常人的邏輯思維進行邏輯功能測試,在做邏輯功能測試的時候步做,我們要測試主頁面副渴,我的頁面,商城頁面這些功能是否合理全度。
1.1.3.安裝與卸載測試
軟件安裝后是否可以正常運行煮剧,安裝過程中是否可以取消,安裝空間不足時,是否有相應提示,是否可以卸載應用(可通過桌面卸載讼载,也可以通過軟件卸載轿秧。曾發(fā)現在IOS手機上有個應用安裝時未完全安裝,終止安裝后咨堤,未完成安裝的應用圖標一直顯示在手機上菇篡,并且無法成功刪除),卸載是否支持取消功能,單擊取消后軟件卸載功能是否正常,卸載后文件是否全部刪除所有的安裝文件夾,從不同的應用市場下載進行安裝測試一喘,比如測試小米市場驱还,華為市場,應用寶凸克,安卓市場议蟆,安智市場的安裝測試。
1.1.4. 軟件升級測試
當客戶端有新版本時萎战,是否有更新提示咐容,當版本為非強制升級版時,用戶可以取消更新蚂维,老版本能正常使用戳粒,用戶在下次啟動app時,仍能出現更新提示虫啥;當版本為強制升級版時蔚约,當給出強制更新后用戶沒有做更新時,退出客戶端涂籽,下次啟動app時苹祟,仍出現強制升級提示,當然現在強更已經很少出現了。檢查更新后各個功能是否能正常使用树枫;在線跨版本升級后能否正常使用直焙,當然現在主流的安裝更新方式開始向熱更新熱部署方式轉變,就是在用戶不需要手動更新的情況下砂轻,完成版本的靜默更新箕般,這個技術是有難度的,需要看公司中程序員的技術能力還有就是是否有這樣的產品需求舔清。
1.1.5. 登錄測試
對于登錄測試,基本上每一款app都有登錄注冊功能曲初,所以在測試App的時候体谒,登錄測試是必不可少的一項。
我們做登錄測試的時候臼婆,往往包含這么些項:
- 登錄用戶名和密碼錯誤時抒痒,界面有提示信息;
- 用戶主動退出登陸后颁褂,下次進入app時故响,應該進入登陸界面;
- 密碼更改后颁独,登錄時是否做到了有效數據的校驗彩届,對于未登錄狀態(tài)時,一些頁面的操作誓酒,是否做了控制樟蠕;
- 切換賬號登錄,檢驗登錄的信息是否做到及時更新靠柑,對于多個端(web寨辩、iso、android等)進行操作時歼冰,確保數據庫操作無誤靡狞,且每個端可以及時看到數據的更新,一個賬號只允許一臺機器登陸的軟件,需要賬號登錄多個手機時隔嫡,是否將原用戶踢下線甸怕,且能夠給出提示信息,用戶登錄狀態(tài)太久,session會過期畔勤,會出現“雖然是登錄狀態(tài)蕾各,系統(tǒng)會提示用戶沒有登陸”
1.1.6.安全性測試 - 權限測試
對于手機權限,如果我們是剛開發(fā)不知名的app庆揪,權限這塊盡量少一些式曲,這些權限在安裝的時候都必須用戶同意。在Android 6.0之后,權限需要動態(tài)的申請吝羞,我們測試的時候,需要測試在使用到這些權限的時候兰伤,程序員是否做邏輯判斷,用戶同意權限應該怎么操作钧排,不同意權限又應該怎么操作敦腔。
1.1.7.消息推送測試
消息推送,是移動端的一大特色恨溜。我就說一下消息推送我們所做的這些方面吧符衔,
未鎖屏時,應用后臺運行糟袁,消息推送是否可正常接收判族,未鎖屏時,APP客戶端使用過程中项戴,可以收到消息提醒形帮,且點擊可查看。
鎖屏時周叮,手機消息欄是否可以接收到消息提醒辩撑。且點擊可查看。點擊后消息欄中消失仿耽。
精準推送
當推送消息是針對登錄用戶的時候合冀,需要檢查收到的push與用戶身份是否相符,沒有錯誤的將其他人的消息推送過來
push推送消息是是否能有針對性的推送氓仲,如相應內容推送給相應用戶(精準推送)
退出登錄后水慨,是否接受push推送(根據需求來)
1.1.8.前后臺切換測試(鎖屏)
APP切換到后臺,再回到APP敬扛,檢查是否停留在上一次操作界面晰洒;檢查功能及應用狀態(tài)是否正常;程序是否崩潰啥箭,功能狀態(tài)是否正常谍珊,尤其是對于從后臺切換回前臺數據有自動更新的時候
手機鎖屏解屏后進入app注意是否會崩潰,功能狀態(tài)是否正常
當APP使用過程中有電話進來中斷后再切換到APP急侥,功能狀態(tài)是否正常
當關閉APP進程后砌滞,在開啟APP,APP能否正常啟動
對于有數據交換的頁面坏怪,尤其是有視頻圖片之類的頁面贝润,每個頁面都必須要進行前后臺切換、鎖屏的測試铝宵,這種頁面最容易出現崩潰
1.1.9.UI測試(界面測試)
確保產品UI符合產品經理制定的原型圖與效果圖
一般涉及界面(如菜單打掘、對話框华畏、窗口和其他可視控件)布局、風格尊蚁、文字是否正確亡笑,頁面是否美觀,操作是否友好横朋。
如:安裝app后的加載頁顯示仑乌,分享頁面的產品logo顯示
1.1.10.兼容性測試
我再說一下兼容性測試吧,兼容性測試主要考慮手機的版本琴锭,型號晰甚,分辨率,就像我說的决帖,現在手機碎片化比較嚴重压汪,各個版本,比如Android古瓤,從Android4.0到Android8.0的版本它是不一樣的杯缺,然后現在各大手機廠商像華為必怜,三星骤铃,小米西轩,錘子刹缝,魅族吧恃,vivo這些廠商都修改android源代碼亩钟,也是給我們增加和好多工作量搓侄,好多時候開發(fā)的軟件在三星上沒問題焙蚓,但是華為纹冤,小米就不行。還有手機分辨率购公,現在主流的可能是19201080萌京,但是還有好多其他分辨率,比如7201280宏浩,還有一些更大分辨率的手機知残,都要考慮這些分辨率的兼容,不然用戶視覺體驗就不好比庄。
兼容測試求妹,公司中會買好多測試機來太讓我們進行測試,一般是不同廠商的手機佳窑,當然還有第三方云測平臺制恍,比如testin還有騰訊wetest,就可以做兼容性測試神凑【簧瘢可以一次性測試100臺測試機,同時會有相應的兼容報告,bug報告强挫。
對于IOS岔霸,ISO版本有7.1.2、8.3俯渤、9.1等呆细;能否適配各種屏幕尺寸。
1.1.11.網絡環(huán)境測試
測試2G八匠、3G絮爷、4G、wifi梨树、有網坑夯、無網、弱網情況下應用的運行
網絡不好時抡四,提交數據是否一直處理提交中柜蜈,是否會有延遲,數據交換失敗是否會有提醒
有網到無網再到有網環(huán)境時指巡,數據是否可以自動恢復淑履,正常加載
無網絡時,各種提示信息是否友好藻雪,數據本地化是否正確(比如提示當前已斷開網絡秘噪,請檢查網絡設置;還有從wifi環(huán)境切換到4G環(huán)境提示是否啟用4G網絡勉耀,會產生扣費指煎。
1.1.12.mokey測試 (monkey壓力測試 測試為1000-2000)
對于手機測試,除了我們一些常規(guī)的功能測試便斥,我們還會做壓力測試至壤,比如對于Android手機,我會使用adb指令進行一些相應的操作枢纠,比如通過adb查看設置崇渗,進入設備,抓取log京郑,我們測試的時候宅广,會使用adb logcat所抓出來的log日志存到電腦,發(fā)給開發(fā)些举,方便他們快速解決bug跟狱。
另外,我還會使用monkey對app進行測試户魏,可以使用monkey對app做壓力測試驶臊,主要就是測試操作app的時候挪挤,程序是否會崩潰。
我們使用adb shell monkey 指定對應的app关翎,執(zhí)行要測試的次數扛门,指定要觸摸的比率,超時時間和忽略崩潰信息纵寝,就可以執(zhí)行測試论寨,將測試log存到某個位置,然后把測試出的bug 日志發(fā)送給開發(fā)爽茴。300000
我就簡單的說一下測試的指令吧葬凳,比如我上邊所說的邏輯,我們用 adb shell mokey -p 指定要測試的包名 --ignore-crashs 忽略崩潰 --ignore-timeout 忽略超時 --throttle 38指定延遲時間毫秒 -s 指定測試種子 指定測試次數室奏,然后將文件 >輸出到磁盤中火焰。
1.1.13.性能測試
對于性能測試,(eclipse和Android studio中本身有檢測cpu和內存的工具胧沫,也有檢測手機內存泄漏的工具)靠工具來測試手機cpu占用昌简,內存占用,電池溫度等绒怨,以及測試我們的app在后臺持續(xù)運行的流量消耗和電量消耗問題江场。
三、Android介紹
Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng)窖逗,主要使用于移動設備,如智能手機和平板電腦餐蔬,由Google公司和開放手機聯盟領導及開發(fā)碎紊。尚未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安致”樊诺。
Android操作系統(tǒng)最初由Andy Rubin開發(fā)仗考,主要支持手機。2005年8月由Google收購注資词爬。2007年11月秃嗜,Google與84家硬件制造商、軟件開發(fā)商及電信營運商組建開放手機聯盟共同研發(fā)改良Android系統(tǒng)顿膨。隨后Google以Apache開源許可證的授權方式锅锨,發(fā)布了Android的源代碼。第一部Android智能手機發(fā)布于2008年10月恋沃。Android逐漸擴展到平板電腦及其他領域上必搞,如電視、數碼相機囊咏、游戲機等恕洲。2011年第一季度塔橡,Android在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一霜第。 2013年的第四季度葛家,Android平臺手機的全球市場份額已經達到78.1%。 [1] 2013年09月24日谷歌開發(fā)的操作系統(tǒng)Android在迎來了5歲生日泌类,全世界采用這款系統(tǒng)的設備數量已經達到10億臺癞谒。
安卓版本:
Android在正式發(fā)行之前,最開始擁有兩個內部測試版本末誓,并且以著名的機器人名稱來對其進行命名扯俱,它們分別是:阿童木(AndroidBeta),發(fā)條機器人(Android 1.0)喇澡。后來由于涉及到版權問題迅栅,谷歌將其命名規(guī)則變更為用甜點作為它們系統(tǒng)版本的代號的命名方法。甜點命名法開始于Android 1.5發(fā)布的時候晴玖。
作為每個版本代表的甜點的尺寸越變越大读存,然后按照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)简软,牛軋?zhí)牵∟ougat,Android 7.0)述暂,奧利奧(Oreo痹升,Android 8.0),餡餅(Pie畦韭,Android 9.0)视卢,Q(未命名,Android10.0)廊驼,R(未命名据过,Android11.0)
Android的系統(tǒng)架構和其操作系統(tǒng)一樣惋砂,采用了分層的架構。
從架構圖看绳锅,Android分為四個層西饵,從高層到低層分別是應用程序層、應用程序框架層鳞芙、系統(tǒng)運行庫層和Linux內核層
3.1. Android SDK(Software Development Kit)的安裝和配置
Android SDK眷柔,即Android Software Development Kit,軟件開發(fā)工具包原朝。
它提供了在Windows/Linux/Mac平臺上開發(fā)Android應用的開發(fā)組件驯嘱。包含了在Android平臺上開發(fā)移動應用程序的各種工具集。
3.2.安裝java環(huán)境
3.3.啟動配置好SDK的Android版本eclipse Android Studio(類似Idea)
3.3.1. 檢查是否成功:
cmd → java -version
3.3.2. Android studio安裝
3.3.3. 創(chuàng)建虛擬機
Android App開發(fā)一般需要模擬器來測試程序的正確性
Android Virtual Device喳坠,就是Android運行的虛擬設備鞠评,是Android的模擬器識別。建立的Android App要運行壕鹉,必須創(chuàng)建AVD剃幌,每個AVD上可以配置很多的運行項目。
簡而言之:AVD即用于Android開發(fā)調試的模擬機晾浴。
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卡豹储。
3.3.4. 啟動虛擬機
四、ADB
4.1.ADB介紹
ADB全稱Android Debug Bridge, 是android sdk里的一個工具, 用這個工具可以直接操作管理android模擬器或者真實的andriod設備(如G1手機)
它的主要功能有:
- 運行設備的shell(命令行)
- 管理模擬器或設備的端口映射
- 計算機和設備之間上傳/下載文件
- 將本地apk軟件安裝至模擬器或android設備
4.2.配置ADB環(huán)境變量
打開:adt-bundle-windows-x86_64_20140101文件
找到adb.exe所在路徑
配置ADB_HOME環(huán)境變量
參考java環(huán)境變量配置
顯示成功:
4.3.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命令>將是直接運行設備命令, 相當于執(zhí)行遠程命令 -
查看手機內存情況
adb shell dumpsys cpuinfo
-
查看內存情況
adb shell getprop | findstr dalvik 本機內存的使用情況
-
查看應用內存使用情況
adb shell dumpsys meminfo +包名:應用的內存使用情況
-
列出手機裝的所有app的包名:
adb shell pm list packages
-
列出系統(tǒng)應用的所有包名:
adb shell pm list packages -s
-
列出除了系統(tǒng)應用的第三方應用包名:
adb shell pm list packages -3
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 - 有多臺設備是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 日志輸出
顯示所有優(yōu)先級大于等于“warning”的日志
五断国、APK牢固性(加密)
應用加固
防篡改:通過完整性保護和簽名校驗保護贤姆,能有效避免應用被二次打包,杜絕盜版應用的產生稳衬;
防逆向:通過對代碼進行隱藏以及加密處理霞捡,使攻擊者無法對二進制代碼進行反編譯,獲得源代碼或代碼運行邏輯宋彼;
防調試:通過反調試技術弄砍,使攻擊者無法調試原生代碼或Java代碼,阻止攻擊者獲取代碼里的敏感數據输涕。
網上有很多Apk加固的第三方平臺音婶,最有名的應當屬于:愛加密和梆梆加固了。其實加固說的簡單點就是對源Apk進行加密莱坎,然后在套上一層殼即可
六衣式、Monkey測試
6.1.參考資料
http://blog.csdn.net/jlminghui/article/details/38238443
6.2.Money介紹
顧名思義,Monkey就是猴子檐什, Monkey測試碴卧,就像一只猴子, 在電腦面前乃正,亂敲鍵盤在測試住册。
通過Monkey程序模擬用戶觸摸屏幕、滑動Trackball瓮具、 按鍵等操作來對設備上的程序進行壓力測試荧飞,檢測程序多久的時間會發(fā)生異常。
6.3.Monkey用來做什么
Monkey 主要用于Android 的壓力測試自動的一個壓力測試小工具名党, 主要目的就是為了測試app 是否會Crash(崩潰)叹阔。
6.4. Monkey 前提條件
- 環(huán)境配置:把adb加入系統(tǒng)環(huán)境,手機開啟開發(fā)者模式
- 連接手機传睹,獲取測試的包名耳幢。獲取包名的方法
- Monkey編寫測試命令,并運行。monkey操作命令
如果要提前中結束測試欧啤,中斷運行中的monkey
CTRL+C
adb 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 {+命令參數}來進行Monkey測試
b)在PC上adb shell 進入Android系統(tǒng),通過執(zhí)行 monkey {+命令參數} 來進行Monkey 測試
c ) 在Android機或者模擬器上直接執(zhí)行monkey 命令吱窝,可以在Android機上安裝Android終端模擬器
七讥邻、Monkey 命令 基本參數介紹
7.1.使用monkey測試手機所有程序
adb shell monkey 100 執(zhí)行monkey測試100次 針對rom測試或者
使用adb指令,安裝Login.apk
7.2.-p <允許的包名列表>
adb shell monkey -p com.example.login 100
用此參數指定一個或多個包院峡。指定包之后兴使,monkey將只允許系統(tǒng)啟動指定的app。如果不指定包照激, monkey將允許系統(tǒng)啟動設備中的所有app发魄。
指定一個包:
7.3.顯示日志詳細程度
用于指定反饋信息級別(信息級別就是日志的詳細程度),總共分3個級別俩垃,分別對應的參數如下 表所示:
Level 0 : adb shell monkey -p com.example.login -v 100 // 缺省值励幼,僅提供啟動提示、測試完成和最終結果等少量信息
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信息
7.4.Monkey日志分析
將log信息寫到文檔中
adb shell monkey 100 >c:/log/b.txt
正常情況, 如果Monkey測試順利執(zhí)行完成跃闹, 在log的最后嵌削, 會打印出當前執(zhí)行事件的次數和所花費的時間; // Monkey finished 代表執(zhí)行完成
隨機數種子
用亍指定偽隨機數生成器的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
7.5.--throttle <毫秒>
用亍指定用戶操作(即事件)間的時延找默,單位是毫秒艇劫;如果不指定這個參數,monkey會盡可能快的 生成和發(fā)送消息惩激。
例:adb shell monkey -p com.example.login --throttle 300 100
表示執(zhí)行100個偽隨機用戶事件流店煞,事件間隔為300毫秒。
注:一般設置為300毫秒咧欣,原因是實際用戶操作的最快300毫秒左右一個動作事件浅缸。
7.6.--pct-touch <percent>
調整觸摸事件的百分比轨帜。(觸摸事件是指在屏幕中的一個down-up事件魄咕,即在屏幕某處按下并抬起的操作)
–pct-touch:觸摸事件。即在某一位置的Down-Up(手指的放下和抬起)事件蚌父。Down(ACTION_DOWN)和Up(ACTION_UP)的坐標臨近哮兰,但并非相同毛萌。
如:adb shell monkey -pct-touch 67 -v 10
表示執(zhí)行10個偽隨機用戶事件流,并調整其中觸摸事件的百分比為67%喝滞。
注:此參數設置要適應當前被測應用程序的操作阁将,比如一個應用80%的操作都是觸摸,那就可以將此參數的百分比設置成相應較高的百分比右遭。
7.7.--pct-motion <percent>
調整motion事件百分比做盅。(motion事件是由屏幕上某處一個down事件、一系列偽隨機的移動事件和一個up事件組成)
–pct-motion:動作事件窘哈。以Down(ACTION_DOWN)開始吹榴,Up(ACTION_UP)結尾,中間至少有一次Move(ACTION_MOVE)滚婉。
如:adb shell monkey -pct-motion 67 -v 10
表示執(zhí)行10個偽隨機用戶事件流图筹,并調整其中動作事件的百分比為67%。
注:這里的移動是直線滑動
7.8.--ignore-crashes
作用:通常让腹,應用發(fā)生崩潰或異常時Monkey會停止運行远剩。如果設置此項蛮原,Monkey將繼續(xù)發(fā)送事件給系統(tǒng)蝌诡,直到事件計數完成。
正常操作饼煞,不忽略異常
忽略異常
7.9.--ignore-timeouts(ANR)
作用:通常像鸡,應用程序發(fā)生任何超時錯誤(如“Application Not responding”對話框)Monkey將停止運行活鹰,設置此項,Monkey將繼續(xù)發(fā)送事件給系統(tǒng)只估,直到事件計數完成志群。
7.10.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 &
- -p后面接著的對應的包名,如果是整機測試蛔钙,就不需要 -p package_name
- -s后面是對應的種子數锌云,好像就是操作步驟,根據她們測試的經驗吁脱,一般種子數在23桑涎,同步她們測試的結果,一般種子的個數固定為23兼贡,和她們選擇的操作步驟就是同步的攻冷。
- --ignore-crashes --ignore-timeouts 這里是在monkey測試的過程中遇到carash或者timeout的情況時忽略掉,一般不設置時遍希,出現carash或者timeout時等曼,Monkey測試會終止。這里是防止Monkey測試終止。
- -v 指的是Monkey測試時打印log級別禁谦。
- 100000 這里是指點擊的次數胁黑,根據她們測試的經驗,對于單個應用程序這個次數設置在100000次就可以了州泊;如果是整機丧蘸,一般設置在500000次。
/data/local/tmp/log.txt測試的log記錄在手機上/data/local/tmp/ 下面的log.txt里面遥皂,這個名字可以自己寫力喷。- 2>&1 固定的寫法,這個也很重要演训,代表的意思是中間忽略的東東的日志一并輸入到指定的文件中冗懦。
- 最后單獨的一個"&" 是一旦Monkey測試開始了,之后可以拔掉數據線仇祭,不會影響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.程序強制關閉爬凑,ForceClosed (簡稱FC) (同上)
3.程序無響應,ApplicationNo Response(ctrl+f搜索‘ANR ’试伙,加空格是為了屏蔽掉一些無效信息)
4.手動生成嘁信。
Monkey 執(zhí)行中斷, 在log最后也能看到當前執(zhí)行次數
7.12.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”主要”導航事件百分比(這些導航事件通常會引發(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()調用,作為最大程度覆蓋包中全部Activity的一種方法
9:--pct-flip//keyboard
flip percentage鍵盤輕彈百分比精盅,如點擊輸入框帽哑,鍵盤彈起,點擊輸入框以外區(qū)域叹俏,鍵盤收回
10:--pct-anyevent//anyevents 該事件可能包含其他上述事件妻枕。
percentage其他類型事件百分比。包括了其他所有的類型事件粘驰,如按鍵屡谐、其他不常用的設備上的按鈕等等。
八蝌数、手機兼容性測試
Android App兼容性測試愕掏,是一個比較重要的App評價內容,
說到測試階段顶伞,兼容性測試主要是對App在各類機型上的兼容饵撑、適配等情況進行測試。搞清楚這一階段的測試重點后唆貌,因此滑潘,Android App在進行兼容性測試前,一定要做好其前序測試內容锨咙,否則兼容性測試效果將會較差众羡。
8.1.機型配置問題。
Android兼容測試一定要做到寬范圍覆蓋蓖租,如果做不到這個粱侣,那么就違背了兼容性測試的目標——測試App在各類機型、系統(tǒng)上的運行是否兼容蓖宦、適配齐婴。
因此,兼容性測試必須要在各個機型稠茂、系統(tǒng)上對App進行運行柠偶、測試情妖,查看相關UI是否適配、功能是否正常诱担。所以毡证,必須要為兼容性測試配備盡可能多的機型。這是不是意味著蔫仙,你的公司要去購置各類機型設備料睛?當然不是。對于一般的公司或者開發(fā)者摇邦,這將會是一大筆開銷恤煞,為了節(jié)約資金而造成進行覆蓋率較低的話,則失去了兼容性測試的意義施籍。另外居扒,這也是沒必要的,因為往往你就一個或兩三個App丑慎,為了這少量App測試喜喂,而去購置如此大量的設備,無疑是一種資源浪費竿裂。除此夜惭,還有一個原因,將在兼容性測試如何展開里去說铛绰。除此诈茧,機型量的多少也是一個權衡的過程,目前捂掰,通用的兼容性測試一般覆蓋Top100-300的機型敢会,對于實在是小量機型或者老舊機型,用戶量非常小这嚣,在一定程度上鸥昏,是否需要覆蓋則需要權衡,總的來說姐帚,Top排名的手機基本足夠吏垮。
8.2.兼容性如何展開?
這是一個經驗性的過程罐旗,可以去借鑒大型互聯網公司的成熟App的測試方法膳汪。目前,無論是國際知名App九秀,還是國內知名App遗嗽,谷歌、Facebook鼓蜒,BAT等痹换,他們都有大量的App對外推出征字,對于App兼容性要求非常高,因此娇豫,他們的做法是非常值得借鑒的匙姜。這些公司的兼容性測試,都有一個相同的解決方案冯痢,那就是自動化測試框架與平臺的實現氮昧。通過瀏覽上述公司在各種大會公布的內容,或者通過論壇知識分享系羞,都能看到,他們不僅有自己的測試實驗室霸琴,擁有大量的手機椒振,除此,還有一整套的自動化測試平臺梧乘,來完成兼容性測試澎迎。
8.3.有哪些好用的App云測試平臺夹供?
目前對移動App的測試主要指的是下面幾部分:
兼容性測試——App對不同手機仁堪、操作系統(tǒng)版本的兼容性測試哮洽,包括安裝鸟辅、啟動、卸載等莺葫。
功能測試——遍歷應用的每一個角落,查看應用的功能再层、邏輯是否正常聂受,完整饺饭。
性能測試——應用的性能怎樣瘫俊,如啟動時間扛芽、反應時間川尖、CPU占用率叮喳,內存占用率等馍悟。
穩(wěn)定性測試——在一定時間內對App進行持續(xù)地測試锣咒,測試App運行的穩(wěn)定性毅整。
網絡場景測試——測試不同網絡環(huán)境中App的運行狀況悼嫉,如2G&3G戏蔑,弱網絡等辛臊。
以下是國內幾家主要的云測試平臺:
Testin:Testin云測|全球領先的App及手游測試平臺
Testin是國內較早涉足云測試領域的公司之一彻舰。Testin在云端部署了300多款1000多部測試終端刃唤,終端種類及數量都比較全面尚胞。支持Android與iOS系統(tǒng)唯卖。但目前僅少部分服務為免費拜轨,絕大多數服務為收費項目橄碾,故而使用成本較高法牲,具體收費情況請查看官網的介紹拒垃。
騰訊優(yōu)測:優(yōu)測網-讓測試更簡單
騰訊優(yōu)測是騰訊旗下的云測試服務平臺恶复,擁有超過1000款測試終端谤牡,機型數量龐大翅萤。但僅支持Android,暫不支持iOS系統(tǒng)胚泌。提供兼容性測試服務玷室,不提供性能測試穷缤、功能測試及穩(wěn)定性測試服務津肛。另外身坐,騰訊優(yōu)測還提供“云手機”服務掀亥,開發(fā)者可以遠程控制測試終端搪花,實時查看App安裝吮便、運行效果髓需。優(yōu)測目前的功能為收費(新注冊的用戶可獲得官方贈送的禮包)僚匆,每天限制提交2次測試咧擂。
移動測試學習端口:https://wetest.qq.com/guide/learn-source
貫眾云測試:貫眾云測試
貫眾云測試是中國移動旗下的云測試服務平臺,目前擁有超過100款市面主流終端贸桶,支持Android及iOS系統(tǒng)皇筛。提供兼容性測試、功能測試离例、性能測試宫蛆,穩(wěn)定性測試(12小時)及網絡場景測試服務(2G&3G&4G)耀盗。支持Appium腳本叛拷。缺點是終端數量較少裙椭,優(yōu)點是功能較為全面揉燃,且基本功能都是免費炊汤,使用成本還是蠻低的抢腐。
百度MTC:百度移動云測試中心
百度MTC是百度開放平臺旗下的移動云測試中心。提供超過500款熱門機型授瘦,目前只支持Android系統(tǒng),暫不支持iOS系統(tǒng)。提供的測試服務種類有兼容性測試蜗字、性能測試挪捕、功能測試级零。并且提供了腳本錄制工具鉴嗤,類似Testin醉锅。但腳本錄制工具更新速度較慢硬耍。百度MTC的服務目前為收費服務,具體收費情況請查看官網的介紹口锭。
阿里MQC:MQC 阿里移動質量中心
阿里MQC是阿里巴巴旗下的移動測試平臺鹃操。提供上百款測試終端,支持Android及iOS系統(tǒng)椰拒。提供兼容性測試燃观、功能測試、性能測試以及穩(wěn)定性測試(1小時)脊框。測試腳本需使用Robotium或Appium測試框架編寫浇雹,難度較高。MQC也提供了遠程的真機調試虎锚,功能和騰訊優(yōu)測類似效斑,看來騰訊和阿里還真是一對兒冤家啊缓屠。
8.4.騰訊云測兼容性報告
8.5. 百度MTC-移動云測試中心
百度MTC是百度開放平臺旗下的移動云測試中心羊初。提供超過500款熱門機型晦攒,目前只支持Android系統(tǒng)脯颜,暫不支持iOS系統(tǒng)栋操。提供的測試服務種類有兼容性測試、性能測試蠕啄、功能測試和媳。并且提供了腳本錄制工具留瞳,類似Testin璧微。但腳本錄制工具更新速度較慢前硫。百度MTC的服務目前為收費服務阶剑。
1、移動app測試服務包含:自動化測試猪半、人工測試办龄、用戶接受度評測、遠程真機調試英融。點擊創(chuàng)建測試任務即可
2、以功能回放測試為例:創(chuàng)建測試任務痕鳍。步驟為上傳app,上傳用例诗赌,選擇測試終端洪碳,截圖,郵件纯趋。
3、測試報告包含:應用基本信息痹栖、結論總覽、問題分布南捂、問題列表、問題終端分布鞭缭、性能結論、性能分析沦童、內存占用分析、終端列表鹦肿。
點擊進入終端詳細報告,包含內容:終端信息涣旨、測試結果、性能結果、測試截圖浆洗、安裝日志伏社、logcat日志、腳本日志聪黎、性能詳情、屏幕錄像湘纵。
8.6.各款云測試平臺對比
8.7.總體總結
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支持網絡場景選擇悬垃,其他均不支持游昼。但是它的性能指標比較少,只有三項尝蠕,CPU烘豌,Memroy,Threads
3、百度MTC支持Appium趟佃、Robotium扇谣、Uiautomator框架,但是創(chuàng)建測試任務時闲昭,過于簡單罐寨,具體測試內容展示不明確。
深度性能測試無亮點序矩,與兼容性測試中的性能數據無明顯優(yōu)勢鸯绿。
4、阿里MQC支持在線錄制腳本簸淀,自行編寫腳本支持Appium瓶蝴、Robotium框架
測試服務類型分布清晰,按測試系統(tǒng)劃分租幕,支持Android舷手,iOS,yunos劲绪。創(chuàng)建測試任務時男窟,測試步驟類型表述清晰。
5贾富、騰訊優(yōu)測-Xtest工具歉眷,支持錄制腳本。深度測試服務的報告很全面颤枪,但是價格稍貴汗捡。
6、Testin是國內較早涉足云測試領域的公司之一畏纲。Testin在云端部署了300多款1000多部測試終端扇住,終端種類及數量都比較全面春缕。支持Android與iOS系統(tǒng),步驟簡單台囱,便于操作淡溯。
九读整、真機測試
注意:下載手機助手簿训,換一根數據線,
9.1.第一步:讓手機顯示開發(fā)者選項
多次點擊版本號米间,顯示開發(fā)者選項
9.2.允許USB調試
若使用真機强品,用USB將手機和電腦連接,在手機端進行操作:
(1)選擇USB連接方式為設備文件管理;
(2)設置->開啟開發(fā)者選項->勾選‘USB調試’(真機和模擬器上皆需進行)屈糊。
9.3.檢測連接設備
在終端中輸入’adb devices‘的榛,此時已連接設備列表下應存在設備序列號
9.4.執(zhí)行相應的測試操作
9.5.同屏
10.作業(yè):
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