移動端測試: 移動應用,特性(功能) 滿足 需求(產品文檔,隱性需求)
一。App功能測試: 死活背下來
1.業務邏輯正確性測試: 產品文檔,隱性需求- 寫成測試用例
2.兼容性測試:
1.系統版本:
android版本:官方版本(5.1 4.3 6.0…) 華為 小米 魅族
iOS版本:官方版本
2.分辨率:480x720 1920x 1080,關注點:圖片展示
3.網絡情況:2G 3G 4G Wi-Fi
(閑話:圖片下載時網絡切換會壓縮圖片但是保證APP流暢可用)
3.異常測試:
1.熱啟動應用:應用置於后台,應用置於前台過程
2.網絡切換&中斷恢復
3.電話&信息中斷恢復
4.升級&安裝卸載測試
1.升級:系統升級,渠道升級,臨近版本(1.0->1.1),跨版本(1.0->1.5)
2.安裝卸載測試:系統版本,首次安裝,覆蓋安裝,卸載后安裝,卸載->安裝->卸載
5.健壯性測試:
1.手機資源消耗:cpu(閑話,如果應用有死循環那么占用率特別高,應用打開后占用超過50%就沒法用了),內存(閑話:和cPU一樣,后面會講如何監控)
2.流量消耗:圖片(閑話:一個圖片起來就要4M流量,不好),傳輸數據壓縮(盡量數據壓縮再傳輸上去,耗費太多安全助手安裝好后看到流量使用用戶覺得不好 直接刪除該APP)
3.崩潰恢復測試:閃退(閑話:自啟動或者點擊可啟動),報錯誤(再啟動要能用)
二。自動化測試:
1.重復的工作交給機器去做,解放初一部分人新功能測試和探索性測試
2.新功能和一些很難通過腳本模擬的業務
ADB原理:
1.幫助:adb —help
2.啟動adb server:adb start-server
3.關閉adb server: adb kill-server
4.設備號:adb devices
5.系統版本號:adb shell getprop ro.build.version.release
6.電腦文件發送到手機:adb push 電腦文件路徑/文件 手機存儲路徑
7.從手機拉取文件: adb pull 手機文件路徑 電腦文件存儲路徑
8.查看手機運行日志:adb logcat 擴展 可以通過過濾報名取到指定app運行日志(mac/linux:| grep 包名 win: | findstr 包名)
9.進入手機shell命令行: adb shell 可以操作類Linux命令 top 過濾app占用資源
(舉例:
測試正在被測的應用占用的實時內存是多少
top|grep com.avatar.settings(操作的時候有變化)
)
10.獲取app包名和啟動名:(記住斜杠前面的就是包名,不一定都是com開頭)
1.mac/linux:adb shell dumpsys window windows | grep mFocusedApp
2.win:adb shell dumpsys window windows | findstr mFocusedApp
(舉例:機器人打開這個應用,adb輸入
com.avatar.settings/.Settings 是包名 和啟動名 )
下面來介紹一下,如何查看手機中安裝的apk信息
方法一:進入cmd窗口,輸入adb shell,進入手機,在輸入ls /data/data,即能顯示出手機中安裝apk的包名
方法二:查看手機中非系統的apk包名信息,adb shell pm list package -3,這個命令很實用。這和命令后面不加-3表示查看手機中使用的apk包名,這個有很多就不截圖了。
方法三:知道手機中的包名,還想知道其他的信息,使用adb shell dumpsys package 包名:查看某個包的具體信息,如圖:
11.安裝apk到手機:adb install apk文件路徑
12.卸載app/包:adb uninstall 包名
13.獲取app 啟動時間:adb shell am start -W 包名/啟動名
(舉例:
TotalTime:app自身啟動時間
WaitTime:系統啟動應用時間
)
14.指定某台設備:adb -s 設備號
Appium:
appium: 封裝android官方自動化工具uiautomator
appium原理圖:腳本 <-> appium服務 <-> 手機端 ->uiautomator
appium聲明手機驅動對象:webdriver.remote(服務地址,啟動參數)
關閉app: close_app() # 關閉當前app 但不關閉driver
關閉驅動對象: quit() # 退出手機驅動對象,同時關閉所有關聯窗口
啟動新的app:start_activity(包名,啟動名)
appium-安裝app:install_app(app在電腦端的路徑)
appium-卸載app:remove_app(包名)
判斷app是否安裝:is_app_installed(包名) # 安裝返回True, 未安裝:返回False
appium-電腦文件發送到手機:push_file(手機存儲路徑,data) # data:base64編碼數據
appium-從手機拉取文件:pull_file(手機存儲路徑) # 返回是base64編碼數據
獲取當前屏幕內元素結構:page_source # 返回的是<<當前>>屏幕