adb简记
Android Debug Bridge(安卓调试桥) tools。它就是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互。在某些特殊的情况下进入不了系统,adb就派上用场啦!
前提条件:开启调试模式
adb 使用的端口号:5037
安装adb:brew cask install android-platform-tools
连接
adb devices , 获取设备列表及设备状态
nox_adb.exe connect 127.0.0.1:6201
adb start-server
adb logcat
adb shell
adb shell getprop ro.build.version.release
adb push C:\Users\win\Desktop\xx.png /sdcard
adb pull /sdcard/xx.png C:\Users\win\Desktop
adb shell dumpsys window windows | grep mFocusedApp’(windows为findstr)
adb install 路径/xxx.apk
adb uninstall app
adb shell am start -W 包名/.启动名
adb get-state , 获取设备的状态
adb kill-server , adb start-server , 结束 adb 服务, 启动 adb 服务,通常两个命令一起用
adb shell dumpsys window | grep mCurrentFocus,获取当前程序的activity(把里面的信息复制出来用于下面)
adb shell am start -n com.tencent.mobileqq/com.tencent.mobileqq.activity.SplashActivity,启动qq
adb shell monkey -p com.android.settings 1000,压测
adb shell,输入monkey,exit;
adb shell monkey 5;这就是压力测试;
adb shell monkey -v 5;接日志结果信息,两个-V时间,三个-v安装;5个事件太小没反应一般 几w起步;有这么多请求就是压力。事件数根据业务场景填的或者页面,来确定使用个数是多少。
日志分流输出:正常和异常分别输出。一句命令的事情。
adb shell monkey -p 包名 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --pct-touch 40 -s 11 -v -v -v -p 100
-s:记录上一次操作的事件的复现;
adb shell monkey -s 123 20 表示发送20个事件,有失败不要紧。
想慢一点加时间间隔--throttle 3000(毫秒)adb shell monkey -v --throtle 3000 5。
11种事件参数
--pct-touch 40 5 触摸事件,不设置则为随机;
--pct-motion 上下手滑动事件;
--pct-pinchzoom
--Pct-rotation
--pct-nav
--pct-majornav
--pct-syskeys
--pct-appswitch
--pct-flip
--pct-anyevent
针对某一个指定APP测试
adb shell monkey -p <allowed-package-name><event> count>
<allowesd-package-nuaIne>app的包名
例: adb shell monkey -v -p com.taLl.kaoyan 500
adb shell monkey -p 包名1 -p 包名2 事件数
例: adlb shell monkey -v -p com.al.kaoyan -p con.wanloujia.phoenix2 500
获取包名:aapt dump badging App的存放地址
测试实践
如:测试某app,测试希望通过Monkey来模拟用户的随机操作,检查被测应用是否会出现异常(应用崩溃或者无响应)。
adb shell monkey -p com.tal.linshoutong --pct-touch 40 --pct-motion 25 --pct-appswitch 10 --pct-rotation 5 -s1666 --throttle 400 --ignore-crashes --ignore-timeouts -v -v 200
手势
%表示手势的事件,
若崩溃了,monkey会停止运行。
--ignore-crashes 崩溃后继续发送事件;
--ignore-timeouts 超时运行;