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. JavaScript高级程序设计笔记09 代理与反射

    代理与反射 ES6新增的代理和反射为开发者提供了拦截并向基本操作嵌入额外行为的能力. 具体就是,可以给目标对象定义一个关联的代理对象,而这个代理对象可以作为抽象的目标对象来使用. 在对目标对象的各种操 ...

  2. Chinese Bank Card and Credit Card ID

    Regular match expression: [^0-9]((3|4|5|6|9)\d{15,18})[^0-9] Rule characteristics: first number:3 or ...

  3. freeswitch的一个性能问题

    概述 freeswitch是一款简单好用的VOIP开源软交换平台. 在fs的使用过程中,会遇到各种各样的问题,各种问题中,性能问题是最头疼的. 最近在测试某些场景的时候,压测会造成fs的内存占用持续升 ...

  4. LabVIEW基于机器视觉的实验室设备管理系统(2)

    目录 功能计划 普通用户 欢迎登录 信息查询 返回退出程序 效果演示 在前期的准备完成之后呢,就要开始实现我们的程序啦,不过在编程之前,我们一定要计划好这个系统需要什么功能. 功能计划 既然我们做的是 ...

  5. Cadence SPB 22.1 -- 元件库的创建02Day

    一.原理图元件库工程 (1).新建工程:执行菜单命令"File"→"New"→"Project",输入工程名字.存储位置等基本信息保存即可: ...

  6. 【Android】做一个简单的每日打卡app-day01【还没做好】

    任务: 第一阶段目标: 1.用户注册:用户注册信息包括用户ID(学号).用户名(姓名),手机号码,用户单位(班级),用户班级四项基本信息,用户第一次注册后,用户姓名不用每次输入 . 2.每日总结打卡: ...

  7. Go笔记(4)-流程控制

    5.Go语言流程控制 程序流程的控制结构一般有三种,顺序结构,选择结构,循环结构 (1)选择结构 if语句 if流程控制与其他语言的if流程控制基本相同 package main import &qu ...

  8. Linux笔记02: Linux环境_2.3 Linux网络连接

    2.3 Linux网络连接 本节介绍VMware Workstation Player 17下CentOS 7的网络连接. 2.3.1 VMware网络类型 VMware提供的网络连接有5种: ●桥接 ...

  9. 一篇文章带你掌握性能测试工具——Jmeter

    一篇文章带你掌握性能测试工具--Jmeter 在目前的中大型企业中,仅仅进行功能测试已经不足以满足企业的需求,在重大客户基数下性能测试将会直接影响到用户体验 所以在这篇文章中我们将会学习性能测试的相关 ...

  10. Python:单元测试框架unittest

    1.什么是单元测试 测试函数/方法或者一段代码,用于检验被测代码的一个很小的.很明确的功能是否正确,通常是开发做. 在Python中的单元测试框架有Unittest和Pytest,现在总结Unitte ...