柚子快报邀请码778899分享:ADB+Monkey

http://yzkb.51969.com/

文章目录

ADB用途介绍工作原理常见adb命令安装应用卸载应用将文件复制到设备/从设备复制文件设置端口转发adb logcatadb shell

MonkeyMonkey介绍Monkey路径Monkey启动Monkey基本参数与事件参数Monkey基本参数设置Monkey测试的约束条件Monkey发送的事件类型和频率

Monkey调试参数Android常见错误类型

Monkey黑白名单Monkey结果解读Monkey结果分类

Monkey异常结果Java常见错误类型

Monkey测试策略介绍Monkey的综合应用应用选取策略:随机种子策略:事件策略:异常策略:延时策略:事件数量:依据软件处于不同的阶段,软件的成熟度,选用不同的策略

Monkey使用步骤Monkey结果分析常见问题Monkey脚本

ADB

用途

adb(Android Debug Bridge)是Android的主要调试工具,是连接android手机与pc的桥梁,主要用于Android。借助adb工具,可以管理设备或手机模拟器的状态。还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等待。注意:adb.exe位于sdk开发platform-tools目录下

介绍

它是一个客户端/服务器架构的命令行工具,其中客户端是用来操作的电脑, 服务器端是android设备。由三部分组成

adb客户端:运行于PC的客户端,通过命令行的方式启动adb服务器:用于开发的机器上作为后台进程运行的服务器,该服务器负责管理客户端与运行于模拟器或设备上的守护进程之间的通信adb daemon(守护进程):一个以后台进程的形式运行于模拟器或手机设备上的守护进程

工作原理

当用户启动一个adb客户端,客户端先检查是否已有一个adb服务进程在运行。如果没有,则启动服务器进程。服务器在启动后会与本地 TCP 端口 5037 绑定,并监听 adb 客户端发出的命令 所有 adb 客户端均通过端口 5037 与 adb 服务器通信。然后,服务器将所有运行中的模拟器或设备实例建立连接。它通过扫描所有5555到5585范围内的奇数端口来定位所有的模拟器或设备。服务器一旦发现 adb 守护进程 (adbd),便会与相应的端口建立连接。服务器与所有设备均建立连接后,用户可以使用 adb 命令访问这些设备。由于服务器管理与设备的连接,并处理来自多个 adb 客户端的命令,因此用户可以从任意客户端(或从某个脚本)控制任意设备。

常见adb命令

查看adb的版本序列号:adb version显示当前运行的Android设备:adb devices查看adb所支持的所有命令:adb -help启动adb服务进程:adb start-server终止adb服务进程:adb kill-serveradb devices可能包含三种状态

device:表示设备或模拟器已经连接到服务器上offline:表示设备没有连接到服务器上或者没有响应no device:表示没有设备连接 获得模拟器的列表emulator -list -avds启动模拟器 emulator -avd Nexus_6_API_25 -port 5555

安装应用

adb install –r *.apk

只连接一个设备

adb  install  安装包路径 连接多个设备,需要指定一个设备

adb –s 设备序列号 install 安装包路径 覆盖安装,保留数据

adb –s 设备序列号 install -r 安装包路径 例:adb -s 192.168.56.101:5555 install - r E:/test.apk

卸载应用

方法1:

adb –s 设备名称 uninstall  应用的包名-k 移除软件包后保留数据和缓存目录 方法2:

adb –s 设备名称 shell pm uninstall -k 应用的包名adb -s 192.168.56.101:5555 uninstall com.example.think.today 或者使用两条命令完成:

adb  shellpm uninstall -k 应用的包名adb -s 192.168.56.101:5555 uninstall com.example.think.today

将文件复制到设备/从设备复制文件

adb push PC源文件  设备的路径adb pull 设备文件  PC的路径 例: adb push d:/demo/a.bat /data/ adb -s 192.168.56.101:5555 pull /data/a.bat d:/demo

设置端口转发

forward 命令设置任意端口转发,将特定主机端口上的请求转发到设备上的其他端口。 例:设置了主机端口 6100 到设备端口 7100 的转发 adb forward tcp:6100 tcp:7100 例:查看设置的设置端口转发 adb forward --list

adb logcat

adb logcat 将日志数据输出到屏幕上adb logcat > E:/demo/test.log(查找包名)优先级按照从低到高顺利排列

V VerboseD DebugI InfoW WarningE ErrorF FatalS Silent 例:下面的过滤语句指显示优先级为waring或更高的日志信息 adb logcat *:W adb logcat *:W |findstr PackageManager

adb shell

adb shell本身就是一个Linux的Shell,可以调用Android内置命令adb shelladb shell lspm:调用软件包管理器adb shell pm list packages 打印所有包信息adb shell pm list packages -f keyword (查看它们的关联文件)adb shell pm list packages -3 keyword (进行过滤以仅显示第三方软件包)adb shell pm list packages -i keyword(查看软件包的安装程序)adb shell pm uninstall com.example.MyApp 卸载adb shell pm clear com.example.MyApp 删除与软件包关联的所有数据(例如获取位置权限)使用adb启动停止一个app

-W 等待启动完成–S强制停止再次启动adb shell am start –W –S package/activityadb shell am force-stop package查看包名aapt dump badging d:\meituan.apk | findstr launchable-activity启动程序:adb shell am start –W –S com.sankuai.meituan/.acvity.Welcome 获取CPU、内存状态

adb shell dumpsys meminfoadb shell dumpsys cpuinfo 获取当前界面元素

adb shell dumpsys activity top 获取任务列表

adb shell dumpsys activity activities 获取当前 activity

adb shell dumpsys activity top 获取特定包基本信息

adb shell dumpsys package com.example.myapplication0922截屏

adb shell screencap /data/local/test1.png 录屏

adb shell screenrecord /data/local/test2.mp4

Monkey

Monkey介绍

Monkey是Android系统自带的一个命令行工具,可以运行在Android模拟器里或真实设备中。它可以向被测应用发送伪随机(pseudo-random)的用户事件(如点击、触摸、手势等),对软件进行稳定性与压力测试。

Monkey路径

Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/Monkey.jar。Monkey.jar程序是由一个名为“Monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/Monkey;由adb shell命令启动:adb shell Monkey {+命令参数}来进行Monkey测试。

Monkey启动

命令格式:

1)直接PC启动

adb shell monkey [options] 2)Shell端启动

adb shellmonkey [options] 保存Monkey运行log

保存在PC adb shell monkey [options] > d:\monkey.txt保存在手机 monkey [options] > /mnt/sdcard/monkey.txt标准流与错误流分开保存 monkey [options] 1> /mnt/sdcard/monkey.txt 2> /mnt/sdcard/error.txt

Monkey基本参数与事件参数

Monkey基本参数设置

Monkey测试的约束条件

Monkey发送的事件类型和频率

Monkey调试参数

Android常见错误类型

ANR:

在5秒内没有响应输入的事件(例如,按键按下,屏幕触摸)BroadcastReceiver在10秒内没有执行完毕 Crash:

异常停止异常退出

Monkey黑白名单

黑名单:不测试的应用白名单:只测试这部分应用注意不能同时设置黑名单和白名单

Monkey结果解读

Monkey结果分类

Monkey运行log输出,按以下顺序输出 各事件截取一个事件

Monkey异常结果

ANR输出异常格式:

System.err.println("// NOT RESPONDING: " + processName + " (pid " + pid + “)”); Crash输出异常格式:

System.err.println("// CRASH: " + processName + " (pid " + pid + “)”);System.err.println("// Short Msg: " + shortMsg);System.err.println("// Long Msg: " + longMsg);System.err.println("// Build Label: " + Build.FINGERPRINT);System.err.println("// Build Changelist:“+Build.VERSION.INCREMENTAL);System.err.println("// Build Time: " + Build.TIME);System.err.println(“// " + stackTrace.replace(”\n", "\n// "));

Java常见错误类型

Monkey测试策略介绍

策略例子1:整机测试,而不测试拨号应用,忽略所有错误,次数100万次

adb shell monkey --ignore-crashes --ignore-timeouts --pkg-blacklist-file /data/local/tmp/blacklist.txt -v -v 1000000 策略例子2:测试计算器30万次,随机种子为100,随机延迟0-1秒,忽略所有错误

adb shell monkey -p com.android.calculator2 -s 100 --throttle 1000 --randomize-throttle --ignore-crashes --ignore-timeouts -v -v 300000 策略例子3:测试计算器,触摸事件30%,其他按键50%,错误停止,延时200

adb shell monkey -p com.android.calculator2 --throttle 200 --pct-touch 30 --pct-anyevent 50 -v -v 100000 策略例子4:对计算器进行旋转压力测试,事件延时2秒,10万次

adb shell monkey -p com.android.calculator2 --pct-rotation 100 --throttle 2000 100000 策略例子5:仅对整机的应用开启测试,事件延时5秒,10万次

adb shell monkey --pct-appswitch 100 --throttle 5000 100000

Monkey的综合应用

命令的组合: 应用选取策略+随机种子策略+事件策略+异常策略+延时策略+事件数量

应用选取策略:

1、单应用 2、多应用组合 3、黑白名单组合 4、整机测试

随机种子策略:

1、固定种子,从小到极大的种子 2、随机种子

事件策略:

1、用户故事策略:依据常见的用户场景划分各事件百分比 2、应用特性策略:依据应用策略对Monkey各事件进行划分百分比 3、专项测试策略:对某个事件提高到很高的百分比,对应用进行专项测试

异常策略:

1、跑完:全部异常忽略 2、专门测试某个异常出现:不忽略某个异常,出现某个异常即停止测试 3、人在时候:上班过程中跑不忽略异常,出现异常马上停止,可以马上分析 4、验收策略:去除全部异常,出现错误则停止,则验收不通过

延时策略:

1、低延时 2、高延时 3、随机延时 4、用户操作延时

事件数量:

1、常规测试:10万 2、压力型测试:30万 3、稳定性测试:50万 4、长时间执行:100万

依据软件处于不同的阶段,软件的成熟度,选用不同的策略

Monkey使用步骤

启动模拟器或者连接真机,adb devices验证确定被测应用的包名

方式一:问开发方式二:uiautomatorviewer.bat 查看AppData\Local\Android\sdk\tools方式三:aapt dump badging d:\group-612_0-meituan.apk | findstr launchable-activity方式四: adb logcat |findstr "Displayed " 使用Monkey发一条测试命令,分析结果

adb shell monkey -p 包名 --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000 > D:\demo\Monkey1.log向系统发送1000000 次随机事件,各个随机事件的时间间隔为500 毫秒,测试过程忽略安全、超时、崩溃等异常。

Monkey结果分析

ANR问题:在日志中搜索“ANR”

Application Not Responding,在Android上,如果应用有一段时间不够灵敏,系统会向用户显示一个对话框。“强制关闭或等待”。 崩溃问题:在日志中搜索“Exception/Error”

常见问题

连接真机,不稳定一般是usb本身连接不够稳定,可以提升usb的供电量,不要使用一般的连接线。检查是否是接触不良。Monkey执行过程中有时候会触碰到通知栏等其他地方,如何避免?官网下载Monkey源代码,进行二次开发。Monkey命令的使用需要组合多种参数方式来实现覆盖

Monkey脚本

Monkey脚本简单、快捷、不需要借助任何工具,就可以实现简单自动化脚本优势:简单、快捷、不需要借助任何工具,只要一个记事本文件脚本缺点:实现坐标、按键等基本操作的相应步骤,顺序脚本无逻辑性脚本源码:\development\cmds\monkey\src\com\android\commands\monkey\MonkeySourceScript.java 脚本实例

打开浏览器,输入www.baidu.com, 测试10次步骤分解:

1.打开浏览器2.清空网址3.输入网址4.确认,载入网址5.完成退出浏览器adb push d:\demo\browser.ms /data/tmp/目的:有针对性的进行稳定性测试 参考资料 monkeyscript - 定制化monkey流程 https://www.cnblogs.com/YatHo/p/7205162.html

柚子快报邀请码778899分享:ADB+Monkey

http://yzkb.51969.com/

参考链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: