測試開發進階(四十六)
- 2019 年 12 月 19 日
- 筆記
為什麼要做APP專項測試
- 奔潰(crash)
- 卡頓
- 兼容性問題(佔據大多數時間)
- 發熱/發燙
硬件耗電->產生熱量
- 響應慢
2-5-8原則 2秒鐘 -> 優 5秒鐘 -> 可以接受 8秒鐘 -> 不能接受
專項緯度
場景測試
兼容性測試
- testin雲測
- STF實驗室平台
壓力穩定性測試
- Monkey
弱網測試
- fiddler代理
- network Emulator toolkit
- Facebook ATC
安全測試
- BurpSuite
- ApkTool/Dex2Jar/JD-GUI反編譯
- 安裝包簽名
- 賬戶安全
性能測試
CPU
- proc文件-Jiffies
- GT/soloPi
電量測試
- 騰訊GT
- battery historian
流量測試
- proc文件
- 騰訊GT
啟動時間
- adb shell am start
- soloPi插件
流暢度專項
- 卡頓root cause
- FPS/SM
- GPU呈現模式/GT
- 卡頓分析
- 頁面多度繪製
- TraceView/StrictMode
- 頻繁GC
內存專項
- 內存泄露/溢出
- 內存佔用
- LMK
- leakcanary

兼容性測試
由於移動端的碎片化特徵,需要確保App產品能夠在不同系統版本,不同屏幕分辨率,不同系統定製ROM也能夠有好的用戶體驗
- 系統版本兼容
Android:
- 2.2 2.3 milestone
- 4.0 4.1 4.2 4.4
- 5.0 5.1
- 6.0 6.1
- 7.0 7.1
- 8.0 8.1
- 9
IOS:
- 8
- 9
- 10
- 11
- 12
- 13
- 系統定製ROM兼容(Android)
小米MIUI
華為EMUI
魅族flyme
- 屏幕分辨率兼容
APP流量數據
https://tongji.baidu.com/research/app

方案
- 雲測平台
- 自建STF平台:http://www.lemfix.com/topics/341
壓力穩定性測試
App長時間在前/後台運行,用戶對於App的穩定性有更高的要求。
通過穩定性測試來避免奔潰(crash)/無響應(ANR)/內存泄露等問題。
- Monkey 支持Android
優點:
Google原生工具,使用簡單,開源
缺點:
基於坐標,遍歷深度不夠,無詳細報告
- Maxim 支持Android
優點:
基於uiautomator引擎實現,多種模式運行
缺點:
不開源,無法定製
- FastMonkey 支持IOS
優點:
基於XCTestWD,swiftmonkey二次開發,無需插樁 效率高
缺點:
配置複雜
adb
- 安裝
https://www.douban.com/note/701408420/
- 查看版本
$ adb version

- 查看設備連接情況
$ adb devices
使用「夜神模擬器」

- 殺死/重啟adb服務
$ adb kill-server$ adb start-server
- 查看當前運行的包名
$ adb shell dumpsys activity | find "mFocusedActivity"
dumpsys:解析信息
activity:頁面名字
monkey
亂點1000次
$ adb shell monkey 1000

-p
用於約束限制,用此參數指定一個或多個包(App名字)
指定包之後,Monkey將只允許系統啟動指定的App,如果不指定則允許啟動設備中的所有APP
$ adb shell monkey -p com.lemon.lemonban 1000
-s
用於指定偽隨機數生成器的seed值
如果seed相同,則兩次Monkey測試所產生的事件序列也相同
# 提前指定,第一次Monkey測試出了bug $ adb shell monkey -p com.lemon.lemonban -s 101 1000 # 第二次測試的流程和第一次一樣就可以保證復現 $ adb shell monkey -p com.lemon.lemonban -s 101 1000
-v
日誌級別
-v
默認值,僅提供啟動提示,測試完成,最終結果
-v-v
提供較為詳細的日誌,包括每個發送到Activity的事件信息
-v-v-v
最詳細的日誌,包括了測試中選中/未選中的Activity信息
$ adb shell monkey -p com.lemon.lemonban -v -v 1000 $ adb shell monkey -p com.lemon.lemonban -v -v -v 1000
--throttle<毫秒>
指定用戶操作間的時延
$ adb shell monkey -p com.lemon.lemonban --throttle 3000 1000
--randomize-throttle
指定隨機延時,單位毫秒
執行1000次隨機事件,間隔在0~300毫秒之間
$ adb shell monkey -p com.lemon.lemonban --throttle 300 --randomize-throttle 1000
- 殺死monky
$ adb shell # 進入shell $ shell $ kill -9 <monky-pid>
事件百分比

$ adb shell monkey -p com.lemon.lemonban --pct-touch 100 1000
設置全部(100%)為點擊事件執行1000次
弱網測試
現在APP網絡環境複雜,如果APP沒有對網絡異常進行兼容處理,那麼用戶可能在日常使用中遇到APP閃退,ANR(程序無響應),數據丟失等問題
低於2G速度屬於弱網,3G也可以劃分為弱網,一般WIFI不劃入弱網測試範疇

工具:
- fiddler/charles
代理限速,設置延時
按照Charles抓取手機報文的方式設置代理
- Network Emulator Toolkit
網卡限速,設置丟包和延時
- facebook ATC
Linux 工具,需要部署環境,後續設備接入熱點即可