app测试 - adb常用命令

160 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详

adb常用命令

  • 查看手机设备ID名称和状态:adb devices
adb devices
设备ID  设备在线状态(device(在线)/offine(不在线)
  • 启动adb服务:adb start-server
  • 关闭adb服务:adb kill-server

自动化过程中需要获取到app的包名和界面名才能对app进行操作

  • adb获取包名:app包名,通过app包名区分不同的app,app的包名是唯一的。
  • adb获取界面名:app中每个界面都会有一个名字。
  1. 需要在手机或者模拟器上打开app
  2. adb shell dumpsys window | findstr mFoucusedApp/'usedApp'
  3. adb shell dumpsys window windows | findstr mFoucusedApp/'usedApp'也可以
C:\Users\12801\Desktop> adb shell dumpsys window windows | findstr(wind)/grep(mac or linux)  mFocusedApp/'usedApp'
  mFocusedApp=AppWindowToken{2943bdad token=Token{1b544ac4 ActivityRecord{24ff11d7 u0 com.bjcsxq.chat.carfriend/.module_main.activity.MainActivity t2}}}

包名和界面名以/进行分隔 |

com.bjcsxq.chat.carfriend # 包名

.module_main.activity.MainActivity # 界面名

  • 通过aapt获取app的包名和界面名

需要注意的是aapt获取的界面名和adb获取的不一致,建议使用aapt获取界面名和包名

aapt dump badging apk路径 | findstr  package   # 获取包名
aapt dump badging apk路径 | findstr  launchable-activity  # 获取界面名
​
C:\Users\12801\Desktop> aapt dump badging C:\Users\12801\Desktop\UI自动化工具\app自动化工具集合\apk\xuechebu.apk | findstr package
package: name='com.bjcsxq.chat.carfriend' versionCode='100' versionName='7.2.4' platformBuildVersionName=''
​
C:\Users\12801\Desktop> aapt dump badging C:\Users\12801\Desktop\UI自动化工具\app自动化工具集合\apk\xuechebu.apk | findstr launchable-activity
launchable-activity: name='com.bjcsxq.chat.carfriend.module_main.activity.SplashActivity'  label='' icon=''

  • adb进行app安装
adb install apk路径
  • app卸载
adb uninstall app包名
  • 上传文件:将电脑上的文件上传到手机
adb push 电脑上的文件路径 手机路径
  • 文件下载:将手机上的文件下载到电脑
adb pull 手机文件路径 电脑路径

  • adb查看日志信息
adb logcat  # 查看日志
adb logcat > log.log  # 将日志保存在文件中

  • adb测试app的启动速度(性能测试)

需要关注的结果是totaltime,在实际的测试过程中会进行多次测试,然后取平均值。也可以和同类型的产品进行对比测试

# adb shell am start-W 包名/界面名
​
adb shell am start-W com.bjcsxq.chat.carfriend/.module_main.activity.MainActivity
# 结果
thistime
totaltime:主要关注的
waittime

  • adb稳定性测试

需要借助集成在adb工具中的monkey工具进行稳定性测试,monkey是通过java编写的稳定性测试工具,主要用于测试app会不会出现崩溃的情况。

相当于让一只猴子随机操作app,所有的操作都有可能出现,通过长时间的操作来测试app会不会出现问题。

monkey常用的参数和命令:

  • adb shell monkey -p app包名 n

    -p app包名:对指定的app进行随机操作

    n:对app进行随机操作的次数

  • adb shell monkey -p app包名 -v n

    adb shell monkey -p app包名 -v -v n # 推荐使用

    -v:表示的是记录信息的级别

    一个-v表示level0,显示的信息最少,是默认的级别

    两个-v表示level1,将本程序的相关信息输出的比较详细

    三个-v表示level2,会将其他程序的相关信息也输出出来

    可以将信息输出至文件中

  • adb shell monkey -p app包名 -v -s -s的值 n

    -s:用于指定伪随机数,如果两次的伪随机数相同,那么两次的操作步骤、流程和操作时间完全一样。主要的作用就是用于复现操作中出现的问题

  • adb shell monkey -p app包名 --throttle -v -s -s的值 n

    --throttle:用于指定随机事件的间隔时间,单位是ms

组合使用:

adb shell monkey -p app包名 --throttle --pct--touch 10 --pct-motion 50 -v -v -s -s的值 n
--pct--touch 10:表示触摸操作,10表示触摸操作在整个随机操作中占10%
--pct-motion 50:表示滑屏操作,50表示滑屏操作在整个随机操作中占50%

  • 日志分析:

如果在日志中出现了ANR(application not responsing)表示程序卡死。

如果在日志中出现了Exception,程序可能出现崩溃


  • adb模拟手势操作
# 模拟点击操作,xy表示点击的坐标点
adb shell input tap x,y
​
# 模拟滑屏操作
adb shell input swip startx,starty,endx,endy
​
# 模拟home 返回 回车操作
adb shell input keyevent '键值'
重要键值:3-home 4-返回键 66-回车键
​
# 模拟输入操作,需要注意的是不能输入中文
adb shell input test '输入内容'

  • 多个设备的注意点

如果adb连接了多个模拟器或者手机,需要使用-s参数指定设备ID。

adb  -s 设备名称 shell 命令