【自動化測試】移動端測試輔助工具 - adb

Joseph312發表於2023-03-27


1. 概念

  adb(android debug bridge)是android提供的基於CS架構的命令列除錯工具,使PC與安卓裝置之間實現通訊

2. 基礎原理:
  互動圖:
      

  主要由三部分組成:
    adb client: 執行在PC端,傳送adb命令,就相當於新建了客戶端
    adb server: 執行在PC端,預設繫結本地TCP埠5037,一方面監聽來自客戶端的命令,另一方面識別並連結安卓裝置實現與daemon之間的通訊
    adb daemon: 執行在android裝置端的守護程式,執行來自client發來的adb命令,完成對裝置的操作

3. 常用命令
  dumpsys指令:獲取服務資訊與系統診斷
    # 獲取當前app的包名和Activity(頁面名稱)
    <1> 點選進入該app
    <2> 執行adb shell dumpsys window | findstr mCurrentFocus
    adb shell dumpsys cpuinfo # 檢視系統cpu使用情況
    adb shell dumpsys meminfo # 檢視系統記憶體使用情況
    adb shell dumpsys battery # 檢視系統電池使用情況

  pm指令(packages manager):獲取android裝置上的應用資訊
    adb shell pm list packages #列出所有的應用
    adb shell pm list packages -3 #列出所有的第三方應用
    adb shell pm list packages instrumentation #列出所有的測試應用 (Android的官方測試框架是instrumentation)
    adb shell pm list packages | findstr xxx #列出所有包含關鍵字xxx的應用包名

  am指令(activity manager): 活動管理
    adb shell am start -n 包名/activity名 #開啟指定應用的指定頁面
    adb shell am force-stop 包名 #停止應用

  input指令:模擬使用者行為操作
    adb shell input keyevent {keycode} #執行keyevent事件, keycode較多參考官方:https://developer.android.com/reference/android/view/KeyEvent
    adb shell input tab x y #點選指定座標(x,y)
    adb shell input swip x1 y1 x2 y2 #從(x1,y1)滑動到(x2,y2)

  安卓裝置與電腦檔案傳輸指令:
    path1:檔案在Android裝置上的路徑
    path2: 檔案在PC本地的路徑
    adb pull path1 path2 #從Android裝置中匯出檔案到PC端
    adb push path2 path1 #將PC上的檔案匯入android裝置中


  monkey指令(穩定性測試):
    (1) Monkey程式由Android系統自帶的java程式, 在Android檔案系統中的存放路徑是:/system/framework/monkey.jar
    (2) Monkey.jar 程式是由一個名為 “monkey” 的Shell指令碼來啟動執行,shell指令碼在 Android 檔案系統中的存放路徑是:/system/bin/monkey
    (3) 觸發指令: adb shell monkey {+引數}, 範例如下:

    I. adb shell monkey 100 隨機測試100次
    II. adb shell monkey -p 包名 100 指定執行軟體100次
    III. adb shell monkey -p com.jd.jrapp --ignore-crashes --ignore-timeouts --ignore-security-exceptions -s 100 --throttle 300 -v -v -v 1000 > ./monkey_log.txt

      引數說明:
          -v 預設級別,僅提供啟動、測試完成和最終結果等少量資訊
          -v -v 提供較為詳細的日誌,包括每個傳送到Activity的事件資訊
          -v -v -v 提供最詳細的日誌,包括了測試中選中/未選中的Activity資訊
          -s 用於指定偽隨機數生成器的seed值
          --throttle 用於指定使用者事件的操作間隔時延,單位是毫秒
          --ignore-timeouts 忽略超時錯誤
          --ignore-crashes 忽略crash
          --ignore-security-exceptions忽略許可錯誤

  注意:命令中的findstr和grep作用相同均是過濾
  區別:findstr用於windows環境命令列,grep用於linux環境命令列 (執行adb shell之後就進入了裝置的安卓核心,即linux環境)

4. 安卓常見問題:
  ANR: 系統無響應
      可能原因:資料量太大,導致前端頁面各種計算超時
      日誌獲取:data/anr
  crash: 閃退
      可能原因:記憶體不足,版本不相容等
      日誌獲取:adb logcat -c # 先清理一下日誌
           adb logcat -b crash >error.txt # 再操作閃退步驟後,輸出乾淨的閃退日誌

 

相關文章