移动测试基础—adb、monkey命令
最近打算把移动测试相关的知识总结一下,先从基础开始吧,总结一下adb、monkey命令
adb常用命令总结
adb / adb -help使用帮助adb devices查看连接到电脑的设备adb install example.apk安装程序adb -s emulator-5554 install example.apk安装程序到指定的设备上(模拟器)adb pull <remote> <local>将设备上文件保存到电脑上adb push <local> <remote>将本地的文件上传到设备上adb start-server重启adb服务adb kill-server杀掉adb服务adb shell进入命令行交互模式,进入之后可以像在linux输入shell命令一样来操作手机设备(android本来就是基于linux的)adb logcat <信息显示优先级参数>显示日志信息 优先级从低到高顺序排序:V —— Verbose(lowest priority)
D —— Debug
I —— Info
W —— Warning
E —— Error
F —— Fatal
S —— Slient (highest priority,on which nothing is printed)
下面的过滤语句只显示优先级为warning或更高的日志信息
adb logcat *:W
Monkey命令实战
1.Monkey是什么?
- Monkey是Android中的一个命令行工具,可以运行在模拟器或者实际设备中
- 向系统发送伪随机的用户事件流(按键输入、触摸屏输入、手势输入等)
- 实现对正在开发的应用程序进行测试
- Monkey测试之一种为了测试软件的稳定性、健壮性的快速有效的方式
2.Monkey的特征
- 测试对象仅为应用程序包,有一定的局限性(不能对源码进行测试)
- Monkey测试使用的事件流数据是随机的,不能进行自定义
- 可以对MonkeyTest对象,事件数量,类型、频率等进行设置
3. Monkey使用
adb shell monkey [options]
adb shell monkey -p 包名 -v 500
-p 指定测试程序包名
-v 显示默认程度的信息
500 事件数设定为500
例如: adb shell monkey -p com.android.calculator2 -v 500
4. Monkey命令结果分析
- 找monkey里面那个出错的地方
- 查看monkey里面出错前的一些事件动作,并手动执行该动作
- 若以上步骤还不能找出,使用之前执行的monkey命令再执行一遍,seed值要一样(seed值一样,发送的伪随机事件流也一样)
注意第一个switch以及其他信息
seed值和,不同event类型比例

5.Monkey测试的目的
- ANR问题:在日志中搜索“ANR”
崩溃的问题:在日志中搜索“Exception”
ANR:Application Not Responding,在Android中,如果应该程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”应用。 好的程序应该能流畅运行,不能出现ANR问题
Monkey命令进阶
1.运行时机
产品功能稳定之后进行
2. monkey更复杂的命令
adb shell monkey -p packagename -v -v -- throttle 600 88
-v :代表整个Monkey运行的次数,多个 -v 可以定制Monkey报告的等级
--throttle 600 : 每个操作都间隔时间600ms
88 :执行的事件数
adb shell monkey -p packagename -v -v --pct-touch 50 --pct-trackball 30 --throttle 600 88
adb shell monkey -p packagename -v -v --pct-touch 50 --pct-trackball 30 -s 1234 --throttle 600 88
--pct-touch :设置在整个过程中点击操作所占的百分比
--pct-trackball: 设置滚轮在所用操作中的百分比
--ignore-crashes:崩溃之后继续测试,重新启动程序
--ignore-timeouts:遇到超时,也继续执行 -v:
命令行的每一个-v将增加反馈信息的级别
Level 0(缺省值)除启动提示、测试完成和最终结果之外,提供较少信息
Level 1提供较为详细的测试信息,如逐个发送到Activity的事件
Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity
实测命令(经常用到的,可以参考):
adb shell monkey -p com.xx.xxx(包名)--throttle 500 --ignore-crashes --igonre-timeouts --ignore-security-exceptions --igonre-native-crashes --monitor-native-crashes -v -v -v 1000000 >> D:\monkeyScreenLog.log
- 说明:忽略crashes、timeout等是为了出问题是monkey继续运行下去,希望能抓取更多的出错信息
3.可以练习使用的apk包名
- com.android.calculator2
- com.android.browser
- com.android.music
- com.android.email
- com.android.contacts
- com.android.camera
移动测试基础—adb、monkey命令的更多相关文章
- adb adb monkey命令及介绍
1.adb的组成部分 守护进程,客户端,服务器端` 2.Monkey程序是Google公司提供的一个压力和稳定性测试的工具 3.命令 命令 参数 功能 adb version 查看当前a ...
- app测试基础知识之命令
app测试点:功能测试,安全测试,用户体验测试,交叉事件测试,兼容性测试,性能测试,安装/升级/卸载 ,UI测试 命令操作: adb connect 名 adb devices adb instal ...
- adb Monkey用法
以这条Monkey指令为例: #monkey -s --throttle -p com.android.cameraswitch -- 这条monkey指令是测试:在camera模块中产生1万次伪随机 ...
- 安卓测试【三】adb简单命令及monkey使用
Ⅰ 配置好android sdk环境变量之后,将android手机连接到电脑上,进行一些adb的简单命令的操作. adb,安卓调试桥,android sdk的一个工具.直接操作管理安卓模拟器或者真 ...
- Monkey测试4——Monkey命令行可用的全部选项
Monkey命令行可用的全部选项 常规 --help 列出简单的用法. -v 命令行的每一个-v将增加反馈信息的级别. Level 0(缺省值)除启动提示.测试完成和最终结果之外,提供较少信息. Le ...
- Android自动化测试基础知识——MONKEY测试工具(转的)
本周开始启动手机输入法simeiji的自动化测试,同时开始接触手机浏览器自动化测试.接下来会对android自动化测试工具和方法做一个专题研究. 第一篇介绍monkey测试工具. 1 自动化测试背景 ...
- monkey测试基础
一.环境配置 Java JDK和android SDK 二.基本命令 *安卓手机链接电脑,打开手机的开发者模式,允许usb调试 adb:检查adb是否安装成功 adb devices:查看连接的设备 ...
- monkey测试入门2--测试步骤、常用参数、常规monkey命令
<凤栖梧> 柳永 伫倚危楼风细细,望极春愁,黯然生天际.草色烟光残照里,无言谁会凭栏意? 拟把疏狂图一醉,对酒当歌,强乐还无味,衣带渐宽终不悔,为伊消得人憔悴. 简要步骤:adb devi ...
- monkey实战--测试步骤、常用参数、常规monkey命令
简要步骤:adb devices---了解包名--adb shell monkey -p 包名 -v 运行次数(多个参数的组合形成不同的用例以求最大的覆盖)--当崩溃或无响应时分析monkey日志 常 ...
随机推荐
- vim之快速跳转
光棍节啦, 淘东西的闲暇上来发vim旅途第一篇日志. 为什么呢? 因为今天是我媳妇的生日, 我用这种只有我知道的方式来纪念一下. ^_^, 宝宝生日快乐! 开篇先说明日志布局, vim学习记录连载中所 ...
- spring boot jpa 无法使用findOne
(findOne(id))说我无法转换成相应的类型,换一种即可,如下: user = userRepository.findOne(id);//spring 2.x用不了 @GetMapping(&q ...
- python 各个地方导航(方便查询,持续更新!)
老男孩python全栈开发教程,武沛齐老师的知识点!:戳这里>>> 老男孩python全栈开发教程,linhaifeng老师的知识点!:戳这里>>> 老男孩pyth ...
- 1016 部分A+B (15 分)
正整数 AAA 的“DAD_ADA(为 1 位整数)部分”定义为由 AAA 中所有 DAD_ADA 组成的新整数 PAP_APA.例如:给定 A=3862767A = 3862767 ...
- SQL中IS NOT NULL与!=NULL的区别
平时经常会遇到这两种写法:IS NOT NULL与!=NULL.也经常会遇到数据库有符合条件!=NULL的数据,但是返回为空集合.实际上,是由于对二者使用区别理解不透彻. 默认情况下,推荐使用 IS ...
- SBC37x交叉编译平台QT+OPENCV
一.构建交叉编译器 [随机手册]Angstrom是一个界面友好的嵌入式发行版本,用亍手持设备,机顶盒和网络存储设备等嵌入式设备. 光盘的文件系统是定制的The Angstrom Distributio ...
- JavaSE 学习笔记之Java语法基础(二)
1,关键字:其实就是某种语言赋予了特殊含义的单词. 保留字:其实就是还没有赋予特殊含义,但是准备日后要使用过的单词. 2,标示符:其实就是在程序中自定义的名词.比如类名,变量名,函数名.包含 0-9. ...
- POJ 4046 Sightseeing
Sightseeing Time Limit: 5000ms Memory Limit: 65536KB This problem will be judged on PKU. Original ID ...
- Java 中 synchronized的用法详解
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 1.方法声明时使用,放在范围操作符(public等)之后,返回类型声明(void等)之 ...
- 0708关于理解mysql SQL执行顺序
转自 http://www.jellythink.com/archives/924,博客比价清晰 我理解上文的是SQL执行顺序 总体方案.当你加入索引了以后,其实他的执行计划是有细微的变化,比方说刚开 ...