• 【adb】一篇文章入门adb和monkey


    一、adb基础

    打开应用
    adb shell am start -n pakeage_name/antivty_name

    二、adb工作原理

    client端向server端发送请求,server端去操作手机设备,执行结果返回server,再返回client
    一个手机和server通信需要两个端口

    三、adb环境搭建

    jdk
    android sdk

    四、adb连接设备及查看设备状态

    可以去模拟器的官网查看连接命令
    点击手机版本号,开启开发者模式
    查看状态:adb get-state | adb devices

    五、adb命令格式

    5.1 adb [-d|-e|-s]
    -s 存在多个设备时,指定设备
    5.2 普通安装 :adb install
    覆盖安装 : adb install -r
    debug包安装 adb install -t
    5.3 卸载
    卸载应用:adb uninstall package_name
    卸载应用(不删除配置文件,保存数据缓存):adb uninstall -k package_name

    六、adb启动页面

    package包:app的唯一标识
    activity活动页:android应用页面,一个页面就是一个activity
    获取当前app的包名和当前页面的activity名称:adb shell dumsys window|grep mCurrentFocus
    获取启动页的名称:adb logcat ActivityManager:I |grep cmp(先执行命令,再打开app)

    七、adb shell清理缓存

    目录结构:adb shell ls
    查看系统当前日期:adb shell date
    查看系统cpu使用:adb shell cat /proc/cpuinfo
    查看系统内存使用:adb shell cat /proc/meminfo [<包名>]
    查看系统安装的app: adb shell pm list package [-3|-s]
    -s 系统自带应用
    -3 自己安装的第三方应用
    删除缓存:
    查看app缓存信息:adb shell cd /data/data
    模糊查询QQ:ls |grep qq
    删除缓存:adb shell pm clear <包名>

    八、手机与电脑如何传输文件

    电脑传输文件到android:adb push 电脑路径 设备路径
    拉取设备文件到电脑:adb pull 设备路径 点按哦路径

    九、日志

    日志级别
    V 明细verbose
    D :调试debug
    I:信息info
    W:警告warn
    E:错误error
    F:严重错误Fatal
    S:无记录silent(最高优先级,绝不会输出任何内容)
    时间 进程号 日志级别 tag号:内容
    adb logcat -v color 根据日志级别使用不同颜色
    adb logcat -v time 打印时间
    adb logcat -f <设备filepath> 日志保存到设备的指定路径
    adb logcat > filepath 日志保存到电脑
    adb logcat -c 清理已缓存的日志
    过滤:
    adb logcat [tag:level] [tag:level] …
    adb logcat “:W”打印W级别及以上的日志
    adb logcat “ActivityManager:D” “
    :S” 过滤tag为ActivityManager的D级别的日志,“*:S”必填项,使其他tag静默
    常见问题:https://developer.android.com/topic/performance/vitals/crash(需梯子)

    十、adb模拟手机的按键操作

    打开【指针】
    adb shell input tap x坐标 y坐标 点击坐标
    adb shell input text macbookpro 输入文字
    adb shell swipe <起点x> <起点y> <终点x> <终点y> <滑动时长> 滑动时间
    adb shell input keyevent 4 返回键
    adb shell input keyevent 3 Home建
    按键文档:https://developer.android.com/reference/android/view/KeyEvent

    十一、adb获取性能指标

    查看系统内存使用:adb shell cat /proc/meminfo [<包名>]
    查看系统cpu使用:adb shell cat /proc/cpuinfo [<包名>]
    top命令:
    adb shell top | grep <包名> 隔一段时间打印
    adb shell top -d 1 |grep <包名> 间隔1s打印
    top和dumpsys cpuinfo区别:
    top实时获取
    dumpsys cpuinfo:获取均值
    电池电量: adb shell dumpsys battery

    其他:https://developer.android.com/docs

    十二、monkey测试

    什么是monkey

    Monkey 是 Google 提供的一个用于 稳定性与压力测试 的命令行工具

    为什么要对app做压力测试

    随机性
    完整性
    持续性

    monkey 命令格式

    adb shell --help
    adb shell monkey [参数] {随机发送事件数}
    monkey 基本用法
    在命令提示符中输入adb devices 查看有无连接的设备
    确认有设备连接
    获取 app 的包名
    执行命令:adb shell monkey [参数] {随机发送事件数}
    monkey 参数解析
    添加时间数:adb shell monkey <事件数>
    打印详细日志:
    adb shell monkey -v <事件数>
    adb shell monkey -vv <事件数>
    adb shell monkey -vvv <事件数>
    monkey测试停止条件
    指令执行完成
    遇到崩溃,或者异常
    杀掉进程:ps |grep monkey ,kill 进程号
    monkey运行某个包
    指定一个包 adb shell monkey -p 包名 [事件数]
    指定多个包 adb shell monkey -p 包名 -p 包名 [事件数]
    指定时间间隔
    –throttle :每个事件结束后的间隔时间 :adb shell monkey -p 包名 --throttle 时长(秒)
    设置种子数
    -s : 用于指定伪随机数生成器的seed值
    设置事件比例
    –pct-touch:触摸(点击)事件 ( 设定点击事件百分比)
    –pct-motion :滑动事件(设定动作事件百分比 )
    –pct-trackball :轨迹球事件( 设定轨迹球事件百分比 )
    –pct-nav :导航事件( 设定基本导航事件百分比,比如输入设备上、下、左、右键 )
    –pct-majornav:主要导航事件( 设定主要导航事件百分比,比如中间键、返回键、菜单键 )
    –pct-syskeys:系统按键事件( 设定系统导航事件百分比,比如HOME键、BACK建、拨号键及音量键 )
    –pct-appswitch:activity之间的切换( 设定启动Activity事件百分比)
    –pct-pinchzoom:缩放事件
    –pct-rotation:屏幕旋转事件 -
    -pct-flip:键盘事件
    –pct-anyevent :任意事件 (设定不常用事件百分比)
    忽略异常
    –ignore-crashes:忽略崩溃
    –ignore-timeouts:忽略超时
    –ignore-security-exceptions:忽略安全异常
    –kill-process-after-error:发生错误后直接杀掉进程
    –dbg-no-events:初始化启动的activity,但是不产生任何事件
    –hprof:指定该项后在事件序列发送前后会立即生成分析报告
    –monitor-native-crashes:跟踪本地方法的崩溃问题 -
    -wait-dbg:直到连接了调试器才执行monkey测试
    –bugreport:当ANR,系统无响应,Crash的时候获得bugreport

    保存日志

    adb shell monkey 1000> 文件路径/文件名
    adb logcat -v time ‘*E’ > monkey.log

    日志分析

    crash 闪退
    exception 异常
    force closed 强制退出
    anr(application no response) 程序无响应
    实战
    对雪球进行自动遍历测试
    确定测试app的包名:com.xueqiu.android
    执行8小时:8_60_60*1000/300 = 96000
    日志级别:-v -v -v
    确定雪球中常用的操作类型和比例 点击
    (点击 70% 滑动 10% 系统按键 10% 其它10%)
    确定seed值:1234567
    确定调试选项:忽略崩溃、忽略超时、忽略安全异常
    重定向日志到文件中 > monkey.log
    答案:

    adb shell monkey -p com.xueqiu.android  --pct-touch 70%  --pct-motion 10% --pct-syskeys 10% -s 1234567890 --ignore-crashes --ignore-timeouts --ignore-security-exceptions —throttle 300 -vvv 96000 > monkey.log
    
    • 1
  • 相关阅读:
    Mysql中的锁机制
    SpringCloud FeignClient声明式服务调用采坑记录(A调用服务B/C,B/C重启后必须重启A后才能成功调用配置项)
    Java日期与时间 LocalDate、LocalDateTime函数
    数据库--【基础篇】
    一篇文章带你掌握主流办公框架——SpringBoot
    JS力扣刷题经典100题——寻找两个正序数组的中位数
    Threejs及TypeScript教程
    【buildroot】buildroot使用笔记-04 | 重构的规则和方法
    《算法通关村——幂运算问题解析》
    可缩放矢量图形svg
  • 原文地址:https://blog.csdn.net/weixin_43840640/article/details/133299791