一:手機端常規測試
1.1:介紹手機測試的
對于手機端測試,按照平臺來分,分為Android和IOS兩大主流系統,
1.1.1:ios和Android的區別
1、兩者運行機制不同:IOS采用的是沙盒運行機制,安卓采用的是虛擬機運行機制。 2、兩者后臺制度不同:IOS中任何第三方程序都不能在后臺運行;安卓中任何程序都能在后臺運行,直到沒有 內存才會關閉。 3、IOS中用于UI指令權限最高,安卓中數據處理指令權限最高。 Android開源導致碎片化比較嚴重,(手機品牌眾多,系統版本各異,分辨率不統一,主流手機型號上千。無 法保證應用、游戲對于所有手機的適配兼容。)bug比較多,而IOS通常bug會少一些。
1.2:軟件測試考慮因素
1.2.1:功能測試
我就先來說一下功能測試吧,對于手機app來說,和我們測試web項目差不太多,也是各種測試方式需要考 慮進來,比如說邏輯功能測試,現在移動端越來越火爆,大家用的軟件也越來越多,對軟件也越來越挑剔,現在 公司在開發移動端的時候,肯定是有相應的需求文檔,我們做邏輯功能測試,就是根據這些資料,當然也根據 我們正常人的邏輯思維進行邏輯功能測試,就拿我上個項目來說,它就是一個移動端項目,在做邏輯功能測試 的時候,我們要測試主頁面,我的頁面,商城頁面這些功能是否合理。
1.2.2:安裝與卸載測試
軟件安裝后是否可以正常運行,安裝過程中是否可以取消,安裝空間不足時,是否有相應提示,是否可以卸 載應用(可通過桌面卸載,也可以通過軟件卸載。曾發現在IOS手機上有個應用安裝時未完全安裝,終止安裝 后,未完成安裝的應用圖標一直顯示在手機上,并且無法成功刪除),卸載是否支持取消功能,單擊取消后軟件 卸載功能是否正常,卸載后文件是否全部刪除所有的安裝文件夾,從不同的應用市場下載進行安裝測試,比如測 試小米市場,華為市場,應用寶,安卓市場,安智市場的安裝測試
1.2.3: 軟件升級測試
當客戶端有新版本時,是否有更新提示,當版本為非強制升級版時,用戶可以取消更新,老版本能正常使 用,用戶在下次啟動app時,仍能出現更新提示;當版本為強制升級版時,當給出強制更新后用戶沒有做更新 時,退出客戶端,下次啟動app時,仍出現強制升級提示,當然現在強更已經很少出現了。檢查更新后各個功 能是否能正常使用;在線跨版本升級后能否正常使用,當然現在主流的安裝更新方式開始向熱更新熱部署方式 轉變,就是在用戶不需要手動更新的情況下,完成版本的靜默更新,這個技術是有難度的,需要看公司中程序 員的技術能力還有就是是否有這樣的產品需求
1.2.4: 登錄測試
對于登錄測試,基本上每一款app都有登錄注冊功能,所以在測試App的時候,登錄測試是必不可少的一 項。 我們做登錄測試的時候,往往包含這么些項,登錄用戶名和密碼錯誤時,界面有提示信息,用戶主動退出 登陸后,下次進入app時,應該進入登陸界面,密碼更改后,登錄時是否做到了有效數據的校驗,對于未登錄狀 態時,一些頁面的操作,是否做了控制,切換賬號登錄,檢驗登錄的信息是否做到及時更新,對于多個端 (web、iso、android等)進行操作時,確保數據庫操作無誤,且每個端可以及時看到數據的更新,一個賬號 只允許一臺機器登陸的軟件,需要賬號登錄多個手機時,是否將原用戶踢下線,且能夠給出提示信息,用戶登錄 狀態太久,session會過期,會出現“雖然是登錄狀態,系統會提示用戶沒有登陸”
1.2.5: 安全性測試——權限測試
對于手機權限,如果我們是剛開發不知名的app,權限這塊盡量少一些,這些權限在安裝的時候都必須用 戶同意。在Android 6.0之后,權限需要動態的申請,我們測試的時候,需要測試在使用到這些權限的時候, 程序員是否做邏輯判斷,用戶同意權限應該怎么操作,不同意權限又應該怎么操作。
1.2.6: 消息推送測試
消息推送,是移動端的一大特色。我就說一下消息推送我們所做的這些方面吧, 未鎖屏時,應用后臺運行,消息推送是否可正常接收,未鎖屏時,APP客戶端使用過程中,可以收到消息提 醒,且點擊可查看。 鎖屏時,手機消息欄是否可以接收到消息提醒。且點擊可查看。點擊后消息欄中消失。 精準推送 當推送消息是針對登錄用戶的時候,需要檢查收到的push與用戶身份是否相符,沒有錯誤的將其他人的消息推 送過來 push推送消息是是否能有針對性的推送,如相應內容推送給相應用戶(精準推送) 退出登錄后,是否接受push推送(根據需求來)
1.2.7:前后臺切換測試
APP切換到后臺,再回到APP,檢查是否停留在上一次操作界面;檢查功能及應用狀態是否正常;程序是 否崩潰,功能狀態是否正常,尤其是對于從后臺切換回前臺數據有自動更新的時候 手機鎖屏解屏后進入app注意是否會崩潰,功能狀態是否正常 當APP使用過程中有電話進來中斷后再切換到APP,功能狀態是否正常 當關閉APP進程后,在開啟APP,APP能否正常啟動 對于有數據交換的頁面,尤其是有視頻圖片之類的頁面,每個頁面都必須要進行前后臺切換、鎖屏的測試,這 種頁面最容易出現崩潰
1.2.8: UI測試(界面測試)
確保產品UI符合產品經理制定的原型圖與效果圖 一般涉及界面(如菜單、對話框、窗口和其他可視控件)布局、風格、文字是否正確,頁面是否美觀,操 作是否友好。 如:安裝app后的加載頁顯示,分享頁面的產品logo顯示
1.2.9:兼容性測試
我再說一下兼容性測試吧,兼容性測試主要考慮手機的版本,型號,分辨率,就像我說的,現在手機碎片 化比較嚴重,各個版本,比如Android,從Android4.0到Android10.0的版本它是不一樣的,然后現在各 大手機廠商像華為,三星,小米,錘子,魅族,vivo這些廠商都修改android源代碼,也是給我們增加和好多 工作量,好多時候開發的軟件在三星上沒問題,但是華為,小米就不行。還有手機分辨率,現在主流的可能是 19201080,但是還有好多其他分辨率,比如7201280,還有一些更大分辨率的手機,都要考慮這些分辨率 的兼容,不然用戶視覺體驗就不好。 兼容測試,公司中會買好多測試機來太讓我們進行測試,一般是不同廠商的手機,當然還有第三方云測平 臺,比如testin還有騰訊wetest,就可以做兼容性測試。可以一次性測試100臺測試機,同時會有相應的兼 容報告,bug報告。 對于IOS,ISO版本有7.1.2、8.3、9.1等;能否適配各種屏幕尺寸。
1.2.10:網絡環境測試
測試2G、3G、4G、wifi、有網、無/網、弱網情況下應用的運行 網絡不好時,提交數據是否一直處理提交中,是否會有延遲,數據交換失敗是否會有提醒 有網到無網再到有網環境時,數據是否可以自動恢復,正常加載 無網絡時,各種提示信息是否友好,數據本地化是否正確(比如提示當前已斷開網絡,請檢查網絡設置;還有 從wifi環境切換到4G環境提示是否啟用4G網絡,會產生扣費。
1.2.11: 性能測試
對于性能測試,(eclipse和Android studio中本身有檢測cpu和內存的工具,也有檢測手機內存泄 漏的工具)靠工具來測試手機cpu占用,內存占用,電池溫度等,以及測試我們的app在后臺持續運行的流量消 耗和電量消耗問題。
1.2.12:mokey測試
對于手機測試,除了我們一些常規的功能測試,我們還會做穩定性測試,比如對于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 指定測試種子 指定測試次數,然后將文件 >輸出到磁盤中。
二:Android介紹
2.1:android介紹
Android是一種基于Linux的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電 腦,由Google公司和開放手機聯盟領導及開發。尚未有統一中文名稱,中國大陸地區較多人使用“安卓”。
2.2:android版本
Android在正式發行之前,最開始擁有兩個內部測試版本,并且以著名的機器人名稱來對其進行命名,它們分 別是:阿童木(AndroidBeta),發條機器人(Android 1.0)。后來由于涉及到版權問題,谷歌將其命名 規則變更為用甜點作為它們系統版本的代號的命名方法。甜點命名法開始于Android 1.5發布的時候。作為每 個版本代表的甜點的尺寸越變越大,然后按照26個字母數序:市場上最常見的版本andorid6.0至 andorid10.0
2.3:android架構
Android的系統架構和其操作系統一樣,采用了分層的架構。 從架構圖看,Android分為四個層,從高層到低層分別是應用程序層、應用程序框架層、系統運行庫層和 Linux內核層
image.png
image.png
2.4:Android之四大組件
Android四大組件分別為activity、service、content provider、broadcast receiver。 參考: https://blog.csdn.net/shenggaofei/article/details/52450668
三:ADB命令
3.1:ADB介紹
ADB全稱Android Debug Bridge, 是android sdk里的一個工具, 用這個工具可以直接操作管理 android模擬器或者真實的andriod設備(如G1手機) 它的主要功能有: * 運行設備的shell(命令行) * 管理模擬器或設備的端口映射 * 計算機和設備之間上傳/下載文件 * 將本地apk軟件安裝至模擬器或android設備
3.2:配置ADB環境變量
1:在系統變量中新建ANDROID_HOME變量,賦值路徑(D:\sdk\sdk)
2:在系統變量path中添加%ANDROID_HOME%\platform-tools
3:驗證adb配置是否成功
3.1:如圖顯示配置失敗
3.2:如圖顯示配置成功
3.3: ADB常用指令
3.3.1:查看移動端設備
adb devices(描述:這個命令是查看當前連接的設備, 連接到計算機的android設備或者模擬器將會列出顯
示)
Offline(不能調試僅是連接,原因很可能是adb與安卓系統不匹配) unauthorized(連接后不能調試,原因是沒有在手機上同意調試) device(正常狀態可調試)
image.png
image.png
3.3.2:開啟服務
adb start-server3.3.3:關閉服務
adb kill-server3.3.4:安裝軟件
adb install apk路徑
3.3.5:覆蓋安裝
adb install -r apk路徑(-r 代表如果apk已安裝,重新安裝apk并保留數據和緩存文件)
3.3.6:查看(系統)包名
系統應用:adb shell pm list packages –s
3.3.6:查看(第三方)包名
第三方應用:adb shell pm list packages -3
3.3.6:查看(全部)包名
adb shell pm list packages3.3.7:卸載軟件
adb uninstall 軟件包名
3.3.8:將電腦文件傳輸到移動端
adb push 電腦路徑 移動端路徑
3.3.9:將移動端文件傳輸到電腦
adb pull 移動端路徑 電腦路徑
3.3.10:截屏
adb shell screencap -p 截圖文件路徑
3.3.11:查看手機CPU情況
adb shell dumpsys cpuinfo
3.3.12:查看應用內存使用情況
adb shell dumpsys meminfo +包名:應用的內存使用情況
3.3.13:顯示磁盤使用信息
adb shell dumpsys diskstats
3.3.14:查看電池狀態
adb shell dumpsys battery3.3.15:查看手機日志
adb logcat
adb logcat 命令格式 : adb logcat [選項] [過濾項], 其中 選項 和 過濾項 在 中括號 [] 中, 說明這是可選的; ">"輸出 : ">" 后面跟著要輸出的日志文件, 可以將 logcat 日志輸出到文件中, 使用adb logcat > log 命令(adb logcat >C:\log\1.txt)
image.png
image.png
image.png
指定 logcat 的日志輸出格式 : -- "-v"選項 : 使用adb logcat -v time 命令, 可以啥看日志的輸 出時間; 將手機日志輸出到本地文件中:adb logcat -v time > C:/log/aa.txt
image.png
Android 的日志分為如下幾個級別: V —— Verbose(最低,輸出得最多) D —— Debug I —— Info W —— Warning E —— Error F —— Fatal S —— Silent(最高) 過濾指定等級日志:按某級別過濾日志則會將該級別及以上的日志輸出。 比如,命令:adb logcat *:W 將 Warning、Error、Fatal 和 Silent 日志輸出 顯示所有優先級大于等于“warning”的日志
擴充:輸出最近的日志:adb logcat -t 5 輸出最近5行的數據