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 &
  1. -p 后面戒指对应的包名,如果是整机测试,就不需要 -p packages_name
  2. -s 后面是对应的种子数,好像就是操作步骤,根据它们测试的经验,一般种子数在23,同步它们测试的结果,一般种子的个数固定为23,和它们选择的操作步骤就是同步的。
  3. -- ingore-crashes --ingnore-timeouts 这里是在monkey测试的过程中遇到carash或者timeout的情况时忽略掉,一般不设置时,出现carash货哦这timeout时,monkey测试会终止。这里是防止moneky测试终止
  4. -v 指的是monkey测试时打印log级别
  5. 100000这里指点击的次数,根据它们测试的经验,对于单个应用程序这个次数设置在100000次就可以了;如果是整机,一般设置在500000次
  6. /data/local/tmp/log.txt测试的log记录路径
  7. 2>&1固定的写法,这个也很重要,代表的意思是中间忽略的日志一并输入到指定的文件中
  8. 最后单独一个&是一旦monkey测试开始了,之后可以拔掉数据线,不会影响monkey测试
  9. 测试所有模块 monkey -s 23 --ignore-crashes --ignore-timeouts -v-v -v 100000> /data/local/tmp/log.txt 2>&1 &

Monkey异常分析

一般我们可以一次发送5万次随机事件的请求,每个请求直接的间隔为150毫秒,测试大约会进行40min,完成之后就可以查看日志

日志中可能的错误:

  1. 程序异常退出,uncausedexception (ctrl+f搜索‘Fatal’)
  2. 程序强制关闭,ForceClosed (简称FC) (同上)
  3. 程序无响应,ApplicationNo Response(ctrl+f搜索‘ANR ’,加空格是为了屏蔽掉一些无效信息)
  4. 手动生成。

    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常用命令的更多相关文章

  1. adb、monkey常用命令

    adb.monkey常用命令 1.查看连接设备 adb devices 2.连接android模拟器 adb connect 127.0.0.1:62001 3.安装软件 adb install 这个 ...

  2. adb+monkey常用命令记录升级版

    为什么要叫升级版呢,本来打算自己写一下adb常用命令的,但是在网上看到一个比较好的,就没有自己从头开始写,但是该博主写的有点小瑕疵就是缺少日志过滤和关于monkey的命令,笔者就加了关于日志和monk ...

  3. monkey常用命令实例

    一.常用命令的使用 1.monkey进行压力测试的命令是什么呢? adb shell monkey -p <packagename> <count> eg: adb shell ...

  4. Monkey常用命令详解

    使用monkey help 命令查看命令参数,如下: C:\Users\chenfenping>adb shell monkey -help usage: monkey [-p ALLOWED_ ...

  5. [ADB Shell]Android Debug Bridge常用命令

    ADB用法 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important ...

  6. adb常用命令(转)

    1.Android Debug Bridge -adb常用命令 1.1简介 Android Debug Bridge,我们一般简称为adb,主要存放在sdk安装目录下的platform-tools文件 ...

  7. adb常用命令教程

    1.Android Debug Bridge - adb常用命令 1.1简介 Android Debug Bridge,我们一般简称为adb,主要存放在sdk安装目录下的platform-tools文 ...

  8. Appium_adb常用命令总结

    以下为在工作学习过程中总结的常用的adb命令,用来做后续参考和查阅: 一.常用命令 显示当前运行的全部模拟器: adb devices  安装应用程序: adb install 应用程序.apk 备注 ...

  9. 移动端 - adb shell常用命令

    一.文件操作相关命令 //进入设备 adb shell //进入指定目录"/data/local/tmp" cd /data/local/tmp //查看目录 ls //进入根目录 ...

  10. 移动端自动化测试之adb常用命令

    今天我们来聊聊自动化测试过程中常用的adb命令. 简介 首先介绍下什么是adb,adb全称叫“android debug bridge”,翻译过来就叫调试桥,通过命令行指令,可让你与移动端设备进行相互 ...

随机推荐

  1. 记一次有趣的hwclock写RTC的PermissionDenied错误

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明   无 前言   稍微接触过嵌入式板卡的,基本都知道嵌 ...

  2. TS版LangChain实战:基于文档的增强检索(RAG)

    LangChain LangChain是一个以 LLM (大语言模型)模型为核心的开发框架,LangChain的主要特性: 可以连接多种数据源,比如网页链接.本地PDF文件.向量数据库等 允许语言模型 ...

  3. 电子元器件工厂的金蝶 ERP 与赛意 WMS 系统数据集成平台进行对接

    项目背景 国内某晶振集成电路研发单位,涵盖从产品开发.设计.生产.销售.服务等各个环节.需要全面建成以ERP.WMS.BOM.PLM.DMS.SRM.OA 为核心的企业信息系统,支持研发.生产.营销. ...

  4. HTML5语法总结大全

    参考书籍: <HTML与CSS3基础教程> 参考视频: HTML5完整教学通俗易懂 2023新版前端Web开发HTML5+CSS3+移动web视频教程,前端web入门首选黑马程序员 参考网 ...

  5. 机器学习-ROC曲线:技术解析与实战应用

    本文全面探讨了ROC曲线(Receiver Operating Characteristic Curve)的重要性和应用,从其历史背景.数学基础到Python实现以及关键评价指标.文章旨在提供一个深刻 ...

  6. 离散傅里叶变换DFT的应用

    目录 一维DFT 1 DFT的相关内容 2 DFT计算结果验证 3 DFT的时频曲线分析 4 DFT的应用 二维DFT 1 DFT在图像处理时的相关内容 2 DFT滤波应用 一维DFT 1 DFT的相 ...

  7. C# 基础编程题集锦

    简单字符串加密 编写一个应用程序用来输入的字符串进行加密,对于字母字符串加密规则如下: 'a→d' 'b'→'e' 'w'→z' ...... x'→'a' 'y'→b' 'z→c' 'A'→'D' ...

  8. Mongodb数据增删改查

    RDB:数据库 → 表(列) → 行 Mongo:数据库 → 集合 → 文档 SQL和Mongodb的关系映射表(里面还有一些增删改查等等操作与SQL的对应的语句): https://www.mong ...

  9. String与StringBuilder的互相转换

    String与StringBuilder的互相转换 String转StringBulider StringBuilder sb = new StringBuilder(); sb.append(use ...

  10. 【scikit-learn基础】--『监督学习』之 随机森林回归

    随机森林回归(Random Forest Regression)是一种在机器学习领域广泛应用的算法,由美国科学家 Leo Breiman 在2001年提出.它是一种集成学习方法,通过整合多个决策树的预 ...