ADB移动端及Monkey常用命令
ADB
ADB全程Android Debug Bridge,是android sdk里的一个工具,用这个工具可以直接操作管理android模拟器或者真实的android设备
它的主要功能:
运行设备的shell(命令行)
管理模拟器或设备的端口映射
计算机和设备之间上传/下载文件
将本地apk软件安装至模拟器或android设备
ADB常用命令
查看设备
adb devices
开启服务
adb start-server
关闭服务
adb kill-server
安装软件
adb install -r (APK路径)
-r 代表如果apk已安装,重新安装apk并保存数据和缓存文件。apk路径则可以直接将apk文件拖进cmd窗口,记得加空格
卸载软件
adb uninstall <软件名>
adb uninstall -k <软件名>
如果加 -k 参数,为卸载软件但是保留配置和缓存文件
查询包名
系统应用: adb shell pm list packages -s
第三方应用: adb shell pm list packages -3
查询当前应用程序的包名和启动项
adb shell dumpsys window w |findstr \/ |findstr name=
将移动端文件传输到电脑
add pull 移动端路径 电脑路径
将电脑文件传输到移动端
adb push 电脑路径 移动端路径
查看adb命令帮助信息
adb help
性能测试
adb shell dumpsys cpuinfo 查看cpu信息
adb shell dumpsys meminfo 内存信息
adb logcat 查看手机日志
adb logcat 命令格式:adb logcat[选项] [过滤项],其中选项和过滤项在中括号中[]中,说明这是可选的;
在命令行中输入 adb logcat --help命令,就可以显示该命令的帮助信息;
'>'输出: '>'后面跟着要输出的日志文件,可以将logcat日志输出到文件中,使用 adb logcat> log 命令
(adb logcat >C:\log\c.txt)
指定logcat的日志输出格式:
--'v'选项:使用adb logcat -v time 命令,可以看日志的输出时间
将手机日志输出到本地文件中
adb logcat -v time > C:/log/aa.txt
Android的日志分为如下几个级别:
V-- verbose (最低,输出的最多)
D -- Debug
I --info
W --Warning
E --Error
F -- Fatal
S --Silent(最高,啥也不输出)
按某级别过滤日志则会将该级别以上的日志输出
比如,命令, adb logcat *:W 将warning,error,Fatal和silent日志输出
显示所有优先级大于等于'warning'的日志
Monkey
monkey主要用于Android的压力测试,自动的一个压力测试小工具,主要目的就是为了测试app是否会Crash(崩溃)
Monkey命令启动方式:
可以通过PC机CMD窗口中执行:adb shell monkey {+命令参数} 来进行monkey测试
使用monkey测试手机所有程序
adb shell monkey 100
-p <允许的包名列表>
adb shell monkey -p com.exanple.login 100
用此参数指定一个包或多个包。指定包之后,monkey将只允许系统启动指定的app.如果不指定包,monkey将允许系统启动设备中的所有app
指定一个包
adb shell monkey -p com.android.settings 200
显示日志详细程度
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分为3个级别,分别对应相应参数
-v : adb shell monkey -p com.example.login -v 100
仅提供启动提示,测试完成和最终结果等少量信息
-v -v adb shell monkey -p com.example.login -v -v
提供较为详细的日志
-v -v -v adb shell monkey -p com.example.login -v -v -v 100
最详细的日志,包括了测试选中/未选中的activity信息
Monkey日志分析
将log信息写到文档中中
adb shell monkey 100 >c:/log/1.txt
正常情况,如果Monkey测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的事件
随机数种子
用于指定伪随机数生成器的seed值,如果seed相同,则两次monke测试所产生的事件序列也相同的
monkey测试1:adb shell monkey -p com.shjt.map –s 10 100
monkey测试2:adb shell monkey -p com.shjt.map –s 10 100
--throttle(毫秒)
用于指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的生成和发送消息
例:adb shell monkey -p com.example.login --throttle 300 100
表示执行100个伪随机用户事件流,事件间隔为300毫秒。
注:一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件。
--pct-touch
调整触摸事件的百分比(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)
例如:adb shell monkey --pct-touch 67 -v 10
表示执行10个伪随机用户事件柳,并调整其中触摸事件的百分比为67%
--pct-motion
调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)
–pct-motion:动作事件。以Down(ACTION_DOWN)开始,Up(ACTION_UP)结尾,中间至少有一次Move(ACTION_MOVE)。
如:adb shell monkey --pct-motion 67 -v 10
表示执行10个伪随机用户事件流,并调整其中动作事件的百分比为67%。
注:这里的移动是直线滑动
--ignore-crashes
作用:通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
正常操作,不忽略异常
adb shell monkey --ignore-crashes –v 10
--ignore-timeouts(ANR)
作用:通常,应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
adb shell monkey --ignore-timeouts –v 10
Monkey 实例
用monkey 命令 对登录apk进行性能

monkey -p com.tencent.mtaexample -s 23 --throttle2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>/data/local/tmp/log.txt 2>&1 &
- -p 后面戒指对应的包名,如果是整机测试,就不需要 -p packages_name
- -s 后面是对应的种子数,好像就是操作步骤,根据它们测试的经验,一般种子数在23,同步它们测试的结果,一般种子的个数固定为23,和它们选择的操作步骤就是同步的。
- -- ingore-crashes --ingnore-timeouts 这里是在monkey测试的过程中遇到carash或者timeout的情况时忽略掉,一般不设置时,出现carash货哦这timeout时,monkey测试会终止。这里是防止moneky测试终止
- -v 指的是monkey测试时打印log级别
- 100000这里指点击的次数,根据它们测试的经验,对于单个应用程序这个次数设置在100000次就可以了;如果是整机,一般设置在500000次
- /data/local/tmp/log.txt测试的log记录路径
- 2>&1固定的写法,这个也很重要,代表的意思是中间忽略的日志一并输入到指定的文件中
- 最后单独一个&是一旦monkey测试开始了,之后可以拔掉数据线,不会影响monkey测试
- 测试所有模块 monkey -s 23 --ignore-crashes --ignore-timeouts -v-v -v 100000> /data/local/tmp/log.txt 2>&1 &
Monkey异常分析
一般我们可以一次发送5万次随机事件的请求,每个请求直接的间隔为150毫秒,测试大约会进行40min,完成之后就可以查看日志
日志中可能的错误:
- 程序异常退出,uncausedexception (ctrl+f搜索‘Fatal’)
- 程序强制关闭,ForceClosed (简称FC) (同上)
- 程序无响应,ApplicationNo Response(ctrl+f搜索‘ANR ’,加空格是为了屏蔽掉一些无效信息)
- 手动生成。
Monkey 执行中断, 在log最后也能看到当前执行次数
Monkey事件百分比
1.触摸事件
2.手势事件
3.二指缩放事件
4.轨迹事件
5.屏幕旋转事件
6.基本导航事件
7.主要导航事件
8.系统按键事件
9.启动Activity事件
10.键盘事件
11.其他类型事件

Event percentages:
0:--pct-touch//touch
events percentage触摸事件百分比(触摸事件是一个在屏幕单一位置的按下-抬起事件)
1:--pct-motion//motion
events percentage手势事件百分比(手势事件是由一个在屏幕某处的按下事件、一系列的伪随机移动、一个抬起事件组成)即一个滑动操作,但是是直线的,不能拐弯
2:--pct-pinchzoom//pinch
zoom events percentage二指缩放百分比,即智能机上的放大缩小手势操作
3:--pct-trackball//trackball 即单纯的Move(ACTION_MOVE)
events percentage轨迹球事件百分比(轨迹球事件包括一个或多个随机移动,有时还伴有点击。轨迹球现在智能手机上已经没有了,就是类似手柄的方向键一样)
4:--pct-rotation//screen
rotation events percentage屏幕旋转百分比,横屏竖屏
5:--pct-nav//nav 基本导航事件。即来自于方向输入设备的上下左右操作。
events percentage”基本”导航事件百分比(导航事件包括上下左右,如方向输入设备的输入)老手机的上下左右键,智能机上没有
6:--pct-majornav//major 即Navigation Bar的确认,菜单,返回键等
nav events percentage”主要”导航事件百分比(这些导航事件通常会引发UI的事件,例如5-way pad的中间键、回退键、菜单键)
7:--pct-syskeys//system(key)
operations percentage”系统”按钮事件百分比(这些按钮一般专供系统使用,如Home, Back, Start Call, End Call,音量控制)
8:--pct-appswitch//app
switch events percentage启动activity事件百分比。在随机的间隔里,Monkey会执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法
9:--pct-flip//keyboard
flip percentage键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回
10:--pct-anyevent//anyevents 该事件可能包含其他上述事件。
percentage其他类型事件百分比。包括了其他所有的类型事件,如按键、其他不常用的设备上的按钮等等。
案列
adb shell monkey -p com.tencent.mtaexample -s 23 --throttle2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>/data/local/tmp/log.txt 2>&1 &
1. -p后面接着的对应的包名,如果是整机测试,就不需要 -p package_name
2. -s后面是对应的种子数,好像就是操作步骤,根据她们测试的经验,一般种子数在23,同步她们测试的结果,一般种子的个数固定为23,和她们选择的操作步骤就是同步的。
3. --ignore-crashes --ignore-timeouts 这里是在monkey测试的过程中遇到carash或者timeout的情况时忽略掉,一般不设置时,出现carash或者timeout时,Monkey测试会终止。这里是防止Monkey测试终止。
4. -v 指的是Monkey测试时打印log级别。
5. 100000 这里是指点击的次数,根据她们测试的经验,对于单个应用程序这个次数设置在100000次就可以了;如果是整机,一般设置在500000次。
/data/local/tmp/log.txt测试的log记录在手机上/data/local/tmp/ 下面的log.txt里面,这个名字可以自己写。
6. 2>&1 固定的写法,这个也很重要,代表的意思是中间忽略的东东的日志一并输入到指定的文件中。
7. 最后单独的一个"&" 是一旦Monkey测试开始了,之后可以拔掉数据线,不会影响Monkey测试。
8. 测试所有模块 monkey -s 23 --ignore-crashes --ignore-timeouts -v-v -v 100000>
ADB移动端及Monkey常用命令的更多相关文章
- adb、monkey常用命令
adb.monkey常用命令 1.查看连接设备 adb devices 2.连接android模拟器 adb connect 127.0.0.1:62001 3.安装软件 adb install 这个 ...
- adb+monkey常用命令记录升级版
为什么要叫升级版呢,本来打算自己写一下adb常用命令的,但是在网上看到一个比较好的,就没有自己从头开始写,但是该博主写的有点小瑕疵就是缺少日志过滤和关于monkey的命令,笔者就加了关于日志和monk ...
- monkey常用命令实例
一.常用命令的使用 1.monkey进行压力测试的命令是什么呢? adb shell monkey -p <packagename> <count> eg: adb shell ...
- Monkey常用命令详解
使用monkey help 命令查看命令参数,如下: C:\Users\chenfenping>adb shell monkey -help usage: monkey [-p ALLOWED_ ...
- [ADB Shell]Android Debug Bridge常用命令
ADB用法 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important ...
- adb常用命令(转)
1.Android Debug Bridge -adb常用命令 1.1简介 Android Debug Bridge,我们一般简称为adb,主要存放在sdk安装目录下的platform-tools文件 ...
- adb常用命令教程
1.Android Debug Bridge - adb常用命令 1.1简介 Android Debug Bridge,我们一般简称为adb,主要存放在sdk安装目录下的platform-tools文 ...
- Appium_adb常用命令总结
以下为在工作学习过程中总结的常用的adb命令,用来做后续参考和查阅: 一.常用命令 显示当前运行的全部模拟器: adb devices 安装应用程序: adb install 应用程序.apk 备注 ...
- 移动端 - adb shell常用命令
一.文件操作相关命令 //进入设备 adb shell //进入指定目录"/data/local/tmp" cd /data/local/tmp //查看目录 ls //进入根目录 ...
- 移动端自动化测试之adb常用命令
今天我们来聊聊自动化测试过程中常用的adb命令. 简介 首先介绍下什么是adb,adb全称叫“android debug bridge”,翻译过来就叫调试桥,通过命令行指令,可让你与移动端设备进行相互 ...
随机推荐
- go 中如何实现定时任务
定时任务简介 定时任务是指按照预定的时间间隔或特定时间点自动执行的计划任务或操作.这些任务通常用于自动化重复性的工作,以减轻人工操作的负担,提高效率.在计算机编程和应用程序开发中,定时任务是一种常见的 ...
- Node.js如何处理多个请求?
Node.js如何处理多个请求? 前言 在计算机科学领域,关于并发和并行的概念经常被提及.然而,这两个术语常常被混为一谈,导致很多人对它们的理解存在着很多混淆.本文小编将通过对并发和并行的深入解析,帮 ...
- Spring5学习随笔-Spring5的基本介绍、工厂设计模式
学习视频:[孙哥说Spring5:从设计模式到基本应用到应用级底层分析,一次深入浅出的Spring全探索.学不会Spring?只因你未遇见孙哥] Spring系列-工厂 第一章.引言 Spring I ...
- 一文彻底看懂Python切片
1.什么是切片 切片是Python中一种用于操作序列类型(如列表.字符串和元组)的方法.它通过指定起始索引和结束索引来截取出序列的一部分,形成一个新的序列.切片是访问特定范围内的元素,就是一个Area ...
- dev-c++ 使用教程
Dev C++ 支持单个源文件的编译,如果你的程序只有一个源文件(初学者基本都是在单个源文件下编写代码),那么不用创建项目,直接运行就可以:如果有多个源文件,才需要创建项目. 一.新建源文件 1.通过 ...
- The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission,iphone手机video标签报错
The request is not allowed by the user agent or the platform in the current context, possibly becaus ...
- nordic的nrf52系列32M速率的SPI-SPIM3
简介:在nordic的nrf52系列中的nrf52833和nrf52840的SPIM3都是支持最大32M的spi速率,其余的只有8M,当在需要刷屏,或者一些需要高速32M-SPI时,这是一个很好的使用 ...
- C++学习笔记七:输出格式<ios><iomanip>
这一篇主要总结一下C++标准库里输出格式相关的库函数. https://en.cppreference.com/w/cpp/io/manip 1.库: <ostream> <ios& ...
- 一文讲透消息队列RocketMQ实现消费幂等
这篇文章,我们聊聊消息队列中非常重要的最佳实践之一:消费幂等. 1 基础概念 消费幂等是指:当出现 RocketMQ 消费者对某条消息重复消费的情况时,重复消费的结果与消费一次的结果是相同的,并且多次 ...
- 如何使用 Helm 在 K8s 上集成 Prometheus 和 Grafana|Part 1
本系列将分成三个部分,您将学习如何使用 Helm 在 Kubernetes 上集成 Prometheus 和 Grafana,以及如何在 Grafana 上创建一个简单的控制面板.Prometheus ...