測試開發進階(四十六)

  • 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 工具,需要部署環境,後續設備接入熱點即可