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”,翻译过来就叫调试桥,通过命令行指令,可让你与移动端设备进行相互 ...
随机推荐
- Petals
------------恢复内容开始------------ 打开发现一堆地址冒红 滑倒后面发现E8,根据经验应该是花指令考点 然后D-->nop-->C-->P得到正常结果 然后第 ...
- 大白话说Python+Flask入门(一)
写在前面 技术这东西就得用,不用就会忘,之前写博客感觉就是给自己记笔记用,还有大部分,估计睡在语雀里都落灰了,哈哈! 在Python领域,我觉得我还是算个小白吧,会写讲不明白,所以我决定想做一件事,先 ...
- 3种Sentinel自定义异常,你用过几种?
Spring Cloud Alibaba Sentinel 是目前主流并开源的流量控制和系统保护组件,它提供了强大的限流.熔断.热点限流.授权限流和系统保护及监控等功能.使用它可以轻松的保护我们微服务 ...
- OpenAI宫斗反转反转再反转,到底是资本任性还是人性扭曲?
最近OpenAI发生了一件大事,创始人山姆·奥特曼被董事会开除了,这在AI界引起了轩然大波. 事件经过 我们先来捋一下事件经过,时间以美国旧金山当地时间为准. 11月17日 11月17日12点(北京时 ...
- Flask 运用Xterm实现交互终端
Xterm是一个基于X Window System的终端仿真器(Terminal Emulator).Xterm最初由MIT开发,它允许用户在X Window环境下运行文本终端程序.Xterm提供了一 ...
- 如何在 PyQt 中实现异步数据库请求
需求 开发软件的时候不可避免要和数据库发生交互,但是有些 SQL 请求非常耗时,如果在主线程中发送请求,可能会造成界面卡顿.这篇博客将会介绍一种让数据库请求变得和前端的 ajax 请求一样简单,且不会 ...
- Java的构造函数
构造函数就是名字相同,名字前面可以不加东西,要加就只能加public或者其他的访问权限,其作用是赋初值.
- Linux笔记03: Linux常用命令_3.2目录操作命令
3.2 目录操作命令 3.2.1 ls命令 ●命令名称:ls. ●英文原意:list directory contents. ●所在路径:/usr/bin/ls. ●执行权限:所有用户. ●功能描述: ...
- [ABC263E] Sugoroku 3
Problem Statement There are $N$ squares called Square $1$ though Square $N$. You start on Square $1$ ...
- Harbor安装和镜像推送
安装前提: yum -y install docker-compose-plugin 安装: tar -zxvf harbor-offline-installer-v2.6.1.tgz cd harb ...