做app的测试,你大概率会用到这个命令,尤其是做monkey测试
yuyutoo 2024-10-11 23:55 9 浏览 0 评论
1.普通命令
1.1 devices命令
# 语法格式 :adb devices [-l]
# 作用 :返回已连接设备的信息
# 示例 :
adb devices : 返回设备的信息
adb devices -l : 返回设备的详细信息
1.2 help命令
# 语法格式 :adb --help
# 作用 : 查看adb命令的帮助信息
# 示例 : adb --help : 返回adb命令的帮助信息
1.3 version命令
# 语法格式 :adb version
# 作用 :查看adb命令的版本信息
# 示例 :
adb version : 返回设备的版本信息
2.网络命令
2.1 connect命令
# 语法格式 :adb connect host[:port]
# 作用 :连接到一个设备上
# 示例 :
adb connect 127.0.0.1:21503 : 连接电脑上的模拟器
2.2 disconnect命令
# 语法格式 :adb disconnect host[:port]
# 作用 :断开设备的连接
# 示例 :
adb disconnect 127.0.0.1:21503 : 与模拟器断开连接
3.文件传输
3.1 push命令
# 语法格式 :adb push 本地文件 手机的路径
# 作用 :将电脑端的文件推到到手机上
# 示例 :
adb push abcd.log /data/test : 将本地文件abcd.log推送到手机的/data/test目录下
3.2 pull命令
# 语法格式 :adb pull 手机文件 本地路径
# 作用 :将手机文件拉倒本地
# 示例 :
adb pull /data/test/monkey.log . : 将手机路径下/data/test/monkey.log拷贝到电脑端的当前路径下
4.shell脚本
安卓系统是基于Linux系统开发,也就支持常见的Linux的命令,若在window客户端下执行时需要用adb shell 命令 。或者是先输入adb shell 。进入shell程序后,然后执行下面的命令 。
4.1 普通命令
普通命令是指在shell执行的命令和Linux下的命令是一样的 ,比如:ls , cp ,cd ,touch ,mkdir等命令在adb shell下都可以执行。
4.2 screencap 命令
# 截图当前手机屏幕
adb shell screencap -p 路径/png图片
4.3 monkey命令
作用:主要用于Android上的应用进行压力测试或稳定性测试的一个工具, 主要目的是测试app在长时间压力下是否产生Crash(崩溃)或无响应.
语法格式 : monkey [基本参数] [事件参数] [调试参数]
基本参数
参数 | 说明 |
-p 应用包名 | 指定一个或多个包名,加上此参数后,monkey将只允许系统启动该包名对应的APP。多个包的话,加多个-p参数即可 |
-s 种子值 | -s 指定测试的种子值(编号),如果两次的种子值相同,则两次测试的随机指令完全相同。主要用于回归和重现出现的Bug。 |
--throttle 时间(毫秒) | 每个事件结束后的间隔时间。用于降低系统压力。如果不指定,系统对事件进行连续执行 。 |
-v | 用于指定日志级别,这个日志级别公有3个级别。Level 1 : -v ,Level 2 : -v -v ,,Level 3 : -v -v -v ,每多一个-v,日志就越详细 |
-f 脚本文件 | 运行指定的monkey脚本 |
### 以下命令是指定基本操作的情况
# 1.发送200个随机指令 (不带任何参数)
abd shell monkey 200
# 2.指定具体包名,并指定比较详细的日志 ,运行200次 :
abd shell monkey -p com.lchr.diaoyu -v -v 200
# 3.每个事件结束后,用于设置间隔时间,用于降低系统压力 。
adb shell monkey -p com.lchr.diaoyu --throttle 500 200 #每个指令之间延时500毫秒 。
# 4.设置种子值,以预备后续重复执行相同指令 。
adb shell monkey -p com.lchr.diaoyu -s 1001 200 # 设置种子值1001,随便指定即可,主要用于回归测试。
事件参数
事件参数 | 说明 | 备注 |
--pct-touch <percent> | 指定触摸事件百分比 | 触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作 |
--pct-motion <percent> | 指定动作事件百分比 | motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成,需注意的是移动事件是直线滑动 。向上滑动或向下滑动,向左滑动或向右滑动 |
--pct-trackball <percent> | 指定轨迹事件百分比 | 滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件。 注:不常使用参数,现在手机几乎没有滚动球,但滚动球事件中包含曲线滑动事件,在被测程序需要曲线滑动时可以选用此参数。 |
--pct-syskeys <percent> | 指定系统按键事件百分比 | 这些按键通常由系统保留使用,如Home、Back、Start Call、EndCall、音量调节 |
--pct-nav <percent> | 指定基本导航事件百分比 | 导航事件由方向输入设备的上下左右按键所触发的事件组成 。注:不常用操作。 |
--pct-majornav <percent> | 指定主要导航事件百分比 | 这些导航事件通常会导致UI界面中的动作事件,如5-way键盘的中间键,回退按键、菜单按键 |
--pct-appswitch <percent> | 指定应用启动事件百分比 | 在随机的时间间隔中,Monkey将执行一个startActivity()调用,作为最大程度覆盖被测包中全部Activity的一种方法) |
--pct-anyevent <percent> | 指定其他类型事件百分比 | 调整其他事件的百分比。(这包含所有其他事件,如按键、其他在设备上不常用的按钮等) |
--pct-pinchzoom <percent> | 指定缩放事件百分比 | 缩放事件即智能机上的放大缩小手势 |
# 设置各事件运行的比率,总比率之和需等于100
adb shell monkey -p com.lchr.diaoyu --pct-touch 50 --pct-motion 10 --pct-majornav 20 --pct-syskeys 10 --pct-anyevent 10 -s 15 --throttle 500 -v -v -v 500
调试参数
调试参数 | 说明 | 备注 |
--ignore-crashes | 忽略因崩溃或异常引起的停止运行 | 长时间运行时必备参数 |
--ignore-timeouts | 忽略应用程序发生超时错误(ANR) | 长时间运行时必备参数 |
--ignore-security-exceptions | 忽略应用发生任何权限错误 | |
--monitor-native-crashes | 监视并报告monkey运行时native code的崩溃事件 | |
-kill-process-after-error | 当应用程序发生错误时,应用程序停止运行并保持在当前状态 | |
-ignore-native-crashes | 忽略因native code的崩溃事件 | |
--hprof | 在事件序列前后立即生成profilfing report | |
--dbg-no-events | 监视应用程序所调用的包之间的转换 | |
--wait-dbg | 暂停执行中的monkey,直到有调试器与它连接 |
# 设置各事件运行的比率,同时忽略应用程序崩溃和无影响导致的停止。
adb shell monkey -p com.lchr.diaoyu --pct-touch 50 --pct-motion 10 --pct-majornav 20 --pct-syskeys 10 --pct-anyevent 10 -s 15 --throttle 500 -v -v -v --ignore-crashes --ignore-timeouts 50000 > monkey.log
4.4 pm命令
# 语法格式 :
pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]
pm install [-lrtsfd] [-i PACKAGE] [PATH]
pm uninstall [-k] [--user USER_ID] PACKAGE
pm clear [--user USER_ID] PACKAGE
# 作用 :包管理应用程序
# 示例
pm install /data/test/diaoyu_3.5.20_wap_release1.apk # 安装apk应用程序
pm list packages -3 # 显示所有第三方应用程序
pm uninstall com.lchr.diaoyu
list packages 参数
packages参数 | 显示列表 | 备注 |
无 | 所有应用 | 重点 |
-f | 显示应用关联的文件 | |
-d | 只显示 disabled 的应用 | |
-e | 只显示 enabled 的应用 | |
-s | 只显示系统应用 | 重点 |
-3 | 只显示第三方应用 | 重点 |
-i | 显示应用的 installer | |
-u | 包含已卸载应用 | |
<FILTER> | 包名包含 <FILTER> 字符串 | 重点 |
install 安装参数
参数 | 说明 |
-l | 锁定应用程序 |
-r | 重新安装应用,且保留应用数据 |
-t | 允许测试apk被安装 |
-i <INSTALLER_PACKAGE_NAME> | 指定安装包的包名 |
-s | 安装到sd卡 |
-f | 安装到系统内置存储中(默认安装位置) |
-d | 允许降级安装(同一应用低级换高级) |
-g | 授予应用程序清单中列出的所有权限(只有6.0系统可用) |
uninstall 参数
参数 | 说明 |
-k | 卸载应用且保留数据与缓存(如果不加-k则全部删除) |
5.apk安装
5.1 install命令
# 语法格式 :adb install apk安装包
# 作用 :将电脑端的apk安装包安装到移动设备上
# 示例 :
adb install diaoyu_3.5.20_wap_release1.apk
# 说明 : 此安装命令和pm里的安装基本一样 。 adb install = push apk安装包 + pm install apk安装包
5.2 install-multiple命令
# 语法格式 :adb install apk安装包
# 作用 :将电脑端的apk安装包安装到移动设备上
# 示例 :
adb install-multiple BaiduTranslate_webbannerfinal.apk diaoyu_3.5.20_wap_release1.apk # 同时安装两个包
5.4 uninstall命令
# 语法格式 :adb uninstall [-k] 包名
# 作用 :将移动端的app卸载掉 ,其中-k 代表保留app的数据和缓存
# 示例 :
adb uninstall com.lchr.diaoyu
# 说明 : 此卸载命令和pm里的安装基本一样 。 adb uninstall 应用包名 = pm uninstall 应用包名
6.内部调试
6.1 bugreport命令
# 语法格式 :adb bugreport [-k] 包名
# 作用 :输入指令后开始抓取移动端上的日志,不需要按Ctrl+C来停止,会自动化停止Log打印,并将日志文件保存在本地。抓取日志的步骤:主要抓取执行命令时往前10分钟左右的日志信息,所以在出现bug后立即采用此方法才有效,问题出现时间太长不建议使用此方法。此命令运行Android7.0以上的系统上。
# 示例 :
adb bugreport . # 将日志输出到本地的当前路径下
6.2 logcat命令
作用 :抓取移动设备上的日志 。
格式 : adb logcat [选项] [过滤器设置]
选项说明 :
- -s : 设置默认过滤器日志为silent
- -f 日志文件 : 输出日志到具体的文件中
- -n <conut> : 设置最大日志行数
- -v <format> :设置日志输出格式 ,只能设置一项。
- -c : 清空所有的日志缓存信息
- -d : 将缓存的日志输出到屏幕上, 并且不会阻塞;
- -t <count>: 输出最近的几行日志, 输出完退出, 不阻塞;
- -t <time> : 输出最近时间的几行日志,输出完退出 。
- -T <count> : 输出最近的几行日志 ,输出完不退出
- -T <count> : 输出最近时间的几行日志,输出完不退出
- -g : 查看日志缓冲区信息
过滤器设置
- 设置的格式为 : <tag> [:日志级别] ,其中tag一般为* .
- 根据以上的格式,可以设置的日志为 : *.D ,代表输出debug以及以上的日志 。
- 并且以下的日志级别是由低到高 。
- V — 明细 verbose(最低优先级)
- D — 调试 debug
- I — 信息 info
- W — 警告 warn
- E — 错误 error
- F — 严重错误 fatal
- S — 无记载 silent
# 格式 :adb logcat [**选项**] [过滤器设置]
# 说明 :根据以上日志格式可以看出 ,可以有如下组合 。
# 1. 不加任何选项和过滤器
adb logcat # 查看所有的日志信息
# 2. 只加上选项
adb logcat -c # 清空所有日志
adb logcat -t 10 # 输出最近10行的日志
adb logcat -v time # 日志加上时间
adb logcat -v time -f /data/test/a.log # 将有时间的日志输出到文件 。
adb logcat -s WifiStateMachine # 输出tag为WifiStateMachine的日志,相当于筛选的关键字
# 3. 只加上过滤器
adb logcat *:I #输出大于等于I级别的日志
adb logcat end:W # 输出end标签以及W及以上级别日志
# 4. 选项和过滤器都包含的情况
adb logcat -v time *:W # 输出日期格式并且为W级别以及以上的日志
# 5. 也可以加上findstr进行字符过滤 ,需要注意的是在windows下运行为findstr,在手机端运行为grep
adb logcat | findstr 过滤符
adb logcat | findstr com.motk
7.脚本及调试
7.1 start-server命令
# 语法格式 :adb start-server
# 作用 :启动adb服务,因为和真机连接时间长时,有可能出现异常,通过此命令可以重启此服务
# 示例 :
adb start-server
7.2 kill-server命令
# 语法格式 :adb kill-server
# 作用 :停止adb服务
# 示例 :
adb kill-server
7.3 get-state命令
# 语法格式 :adb get-state
# 作用 :查看adb服务
# 示例 :
adb get-state
7.4 get-devpath命令
# 语法格式 :adb get-devpath
# 作用 :获取设备路径
# 示例 :
adb get-devpath # 获取设备路径
7.5 remount命令
# 语法格式 :adb remount
# 作用 :重新挂载文件系统 ,一般运行此命令前需要先运行adb root
# 示例 :
adb remount
7.6 root命令
# 语法格式 :adb root
# 作用 :以root权限重启adbd守护进程
# 示例 :
adb root
7.7 usb命令
# 语法格式 :adb usb
# 作用 :通过usb重启adbd监听
# 示例 :
adb usb
7.8 tcpip命令
# 语法格式 :adb tcpip port
# 作用 :通过TCP重启adbd监听
# 示例 :
adb uninstall com.lchr.diaoyu
相关推荐
- 自卑的人容易患抑郁症吗?(自卑会导致抑郁吗)
-
Filephoto[Photo/IC]Lowself-esteemmakesusfeelbadaboutourselves.Butdidyouknowthatovert...
- 中考典型同(近)义词组(同义词考题)
-
中考典型同(近)义词组...
- BroadcastReceiver的原理和使用(broadcast-suppression)
-
一、使用中注意的几点1.动态注册、静态注册的优先级在AndroidManifest.xml中静态注册的receiver比在代码中用registerReceiver动态注册的优先级要低。发送方在send...
- Arduino通过串口透传ESP 13板与java程序交互
-
ESP13---是一个无线板子,配置通过热点通信Arduino通过串口透传ESP13板与java程序交互...
- zookeeper的Leader选举源码解析(zookeeper角色选举角色包括)
-
作者:京东物流梁吉超zookeeper是一个分布式服务框架,主要解决分布式应用中常见的多种数据问题,例如集群管理,状态同步等。为解决这些问题zookeeper需要Leader选举进行保障数据的强一致...
- 接待外国人英文口语(接待外国友人的英语口语对话)
-
接待外国人英文口语询问访客身份: MayIhaveyourname,please? 请问您贵姓? Whatcompanyareyoufrom? 您是哪个公司的? Could...
- 一文深入理解AP架构Nacos注册原理
-
Nacos简介Nacos是一款阿里巴巴开源用于管理分布式微服务的中间件,能够帮助开发人员快速实现动态服务发现、服务配置、服务元数据及流量管理等。这篇文章主要剖析一下Nacos作为注册中心时其服务注册与...
- Android面试宝典之终极大招(android面试及答案)
-
以下内容来自兆隆IT云学院就业部,根据多年成功就业服务经验,以及职业素养课程部分内容,归纳总结:18.请描述一下Intent和IntentFilter。Android中通过Intent...
- 除了Crontab,Swoole Timer也可以实现定时任务的
-
一般的定时器是怎么实现的呢?我总结如下:1.使用Crontab工具,写一个shell脚本,在脚本中调用PHP文件,然后定期执行该脚本;2.ignore_user_abort()和set_time_li...
- Spark源码阅读:DataFrame.collect 作业提交流程思维导图
-
本文分为两个部分:作业提交流程思维导图关键函数列表作业提交流程思维导图...
- 使用Xamarin和Visual Studio开发Android可穿戴设备应用
-
搭建开发环境我们需要做的第一件事情是安装必要的工具。因此,你需要首先安装VisualStudio。如果您使用的是VisualStudio2010,2012或2013,那么请确保它是一个专业版本或...
- Android开发者必知的5个开源库(android 开发相关源码精编解析)
-
过去的时间里,Android开发逐步走向成熟,一个个与Android相关的开发工具也层出不穷。不过,在面对各种新鲜事物时,不要忘了那些我们每天使用的大量开源库。在这里,向大家介绍的就是,在这个任劳任怨...
- Android事件总线还能怎么玩?(android实现事件处理的步骤)
-
顾名思义,AndroidEventBus是一个Android平台的事件总线框架,它简化了Activity、Fragment、Service等组件之间的交互,很大程度上降低了它们之间的耦合,使我们的代码...
- Android 开发中文引导-应用小部件
-
应用小部件是可以嵌入其它应用(例如主屏幕)并收到定期更新的微型应用视图。这些视图在用户界面中被叫做小部件,并可以用应用小部件提供者发布。可以容纳其他应用部件的应用组件叫做应用部件的宿主(1)。下面的截...
你 发表评论:
欢迎- 一周热门
-
-
前端面试:iframe 的优缺点? iframe有那些缺点
-
带斜线的表头制作好了,如何填充内容?这几种方法你更喜欢哪个?
-
漫学笔记之PHP.ini常用的配置信息
-
推荐7个模板代码和其他游戏源码下载的网址
-
其实模版网站在开发工作中很重要,推荐几个参考站给大家
-
[干货] JAVA - JVM - 2 内存两分 [干货]+java+-+jvm+-+2+内存两分吗
-
正在学习使用python搭建自动化测试框架?这个系统包你可能会用到
-
织梦(Dedecms)建站教程 织梦建站详细步骤
-
【开源分享】2024PHP在线客服系统源码(搭建教程+终身使用)
-
2024PHP在线客服系统源码+完全开源 带详细搭建教程
-
- 最近发表
-
- 自卑的人容易患抑郁症吗?(自卑会导致抑郁吗)
- 中考典型同(近)义词组(同义词考题)
- WPF 消息传递简明教程(wpf messagebox.show)
- BroadcastReceiver的原理和使用(broadcast-suppression)
- Arduino通过串口透传ESP 13板与java程序交互
- zookeeper的Leader选举源码解析(zookeeper角色选举角色包括)
- 接待外国人英文口语(接待外国友人的英语口语对话)
- 一文深入理解AP架构Nacos注册原理
- Android面试宝典之终极大招(android面试及答案)
- 除了Crontab,Swoole Timer也可以实现定时任务的
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)