网站如何做导航条下拉菜单,网站策划与建设,免费软件下载中心,个人备案网站描述Monkey 1. Monkey1.1 Monkey 是什么1.2 Monkey 测试场景1.3 Monkey 特点1.4 Monkey 在哪里1.5 测试准备事项1.6 Monkey 参数列表 2. 基本命令3. 常用参数4. 事件类型5. 调试参数6. 日志管理7. 日志错误定位8. Monkey测试可以发现的问题 1. Monkey
1.1 Monkey 是什么 Monkey是一… Monkey 1. Monkey1.1 Monkey 是什么1.2 Monkey 测试场景1.3 Monkey 特点1.4 Monkey 在哪里1.5 测试准备事项1.6 Monkey 参数列表 2. 基本命令3. 常用参数4. 事件类型5. 调试参数6. 日志管理7. 日志错误定位8. Monkey测试可以发现的问题 1. Monkey
1.1 Monkey 是什么 Monkey是一款Android app的自动化测试工具主要用于app的压力测试和稳定性测试。 工作原理是通过向系统发送伪随机的用户事件流如按键输入、触摸屏输入、手势输入等操作来对设备上的程序进行测试检测程序长时间的稳定性多久的时间会发生异常。
1.2 Monkey 测试场景
app压力测试、稳定性测试。(功能测试—专项测试(DFX 兼容性稳定性)app的耗资源情况(耗电量流量内存cpu等)
1.3 Monkey 特点
没法指定具体业务,发送一些伪随机事件(seed值)通过参数来做一些设定
1.4 Monkey 在哪里 Monkey工具存在Android 系统中使用Java语言写成jar包在 Android 文件系统中的存放路径是:/system/framework/monkey.jar; Monkey.jar 程序是由一个名为“monkey”的 shell脚本来启动执行shell脚本在Android文件系统中的存放路径是:/system/bin/monkey; monkey需要通过adb来唤醒即通过在cmd窗口中执行: adb shell monkey{命令参数} 来进行 Monkey测试。
1.5 测试准备事项
手机准备
1开发者模式: usb调试 2解锁(常亮) 3充足电量 4放在不影响其它人的地方 5打开wifi/数据通信
环境准备
1jdk 2sdk 3adb
app应用准备
登录状态关闭免密支付
1.6 Monkey 参数列表 图中的参数并不算全下面会介绍常用的参数
2. 基本命令
adb devices #测试当前连接设备adb shell pm list packages #查看你的手机所有的安装包adb shell pm list packages -3 #查看你的手机所有的第三方安装包#注尽量少安装第三方软件这样可以尽快的找到想要的安装包名称adb shell #可执行shell命令top | grep 包名 #获取该包的CPU内存使用率adb shell dumpsys activity | findstr mFocusedActivity # 获取当前手机运行的包名3. 常用参数
1-p 参数表示指定测试的程序空格后面跟安装包名字
例指定一个app包执行
adb shell monkey -p 包名 100 解析此时指定的软件会被打开并开始乱点乱按100次。
例指定多个app包执行
adb shell monkey -p 包名 -p 包名 100 解析此时2个app一起执行 可以去测试两个软件/安装包同时打开是否产生冲突
例不指定包
adb shell monkey 100 解析此时随机打开一个软件乱点乱按100次。
2-v日志详细程度最高支持‘-v -v -v’三级
指定日志级别 -v
adb shell monkey -p cn.mopon.film -v 100说明:日志级别-v 缺省值仅提供启动提示、测试完成和最终结果等少量信息。
指定日志级别 -v -v
adb shell monkey -p cn.mopon.film-v - 108说明:日志级别-v -v提供提供较为详细的日志包括每个发送到Activity的信息。
指定日志级别 -v -v -v
adb shell monkey -p cn.mopon.film -v -v -v 108说明:日志级别-v -v -v:提供更详细的日志包括了测试中选中/未选中的Activity信息。
3-s种子记忆功能一条命令无论执行几次顺序全一样方便问题复现
举例monkey1点击-滑屏-系统按键-屏幕翻转——对应的命令为adb shell monkey......seed 123.......
解析当发现此用例/执行有问题就可以利用种子123做复现再次执行命令只要种子是seed 123即可。
4- throttle种子记忆功能操作间隔时间单位毫秒
举例adb shell monkey -p com.tencent.news -v -s 13 -throttle 500 1000
举例解析 指定包名com.tencent.news Log日志 -v 一级 最多三个-v -v -v 最高级 三级 种子记忆13自定义之后再执行命令执行顺序一样 单步间隔时间500毫秒 半秒1000毫秒 1秒 总计执行事件1000操作 在导出的log/txt中 Sleeping for xxxx milliseconds 就是- throttle xxxx毫秒
4. 事件类型 图片解析 0触摸事件百分比参数–pct-touch 1滑动事件百分比参数–pct-motion 2缩放事件百分比参数–pct-pinchzoo 3轨迹球事件百分比参数–pct-trackball 4屏幕旋转事件百分比参数–pct-rotation 5基本导航事件百分比参数–pct-nav 6主要导航事件百分比参数–pct-majornav 7系统事件百分比参数–pct-syskeys 8Acitivity启动事件百分比参数–pct-appswitch 9键盘翻转事件百分比参数–pct-flip 10其它事件百分比参数–pct-anyevent --ignore-crashes --ignore-timeouts等
举例
1命令–pct-touch 空格后加数字设定触屏时间生成的百分比。触屏事件是一个有手指按下抬起事件的手势。
adb shell monkey --throttle 3000 --pct-touch 50 -p com.tencent.news 1000解析向腾讯新闻发送1000次随机事件每次事件间隔为3秒。其中设定触屏的事件占比为50%。
2命令: --pct-motion 设定滑动事件生成的白分比。滑动事件是一个先在某一个位置手指按下滑动一段距离后再抬起手指的手势。
adb shell monkey --throttle 3000 --pct-motion 50 -p com.tencent.news 1000解析向腾讯新闻发送1000次随机事件每次事件间隔为3秒。其中设定滑动的事件占比为50%。
3命令: --pct -trackball 设定轨迹球事件生成的百分比。轨迹球事件是包含一系列随机移动和单击事件的事件。
adb shell monkey --throttle 3000 --pct-trackball 50 -p com.tencent.news 1000解析向腾讯新闻发送1000次随机事件每次事件间隔为3秒。其中设定轨迹球的事件占比为50%。
4命令: --pct-nav 设定基本导航事件生成的百分比。基本导航事件是模拟方向性在设备上输入向上、向下、向左、向右的事件。
adb shell monkey --throttle 3000_--pct-nav 40 -p com.tencent.news 1000解析向腾讯新闻发送1000次随机事件每次事件间隔为3秒。其中设定基本导航事件的占比为40%。
5命令 : --pct-majornav 设定主要导航事件生成的百分比。主要导航事件通常会导致UI产生回馈信息如单击Back键、Home键、Menu键等。
adb shell monkey --throttle 3000 --pct-majornav 40 -p com.tencent.news 1000解析向腾讯新闻发送1000次随机事件每次事件间隔为3秒。其中设定主要导航事件的占比为40%。
6命令 : --ignore-security-exceptions 通常情况下指定应用程序发生许可错误时如证书许可网络许可等monkey将停止运行。现在会继续
adb shell morkey --throttle 3000 --pct-trackball 50 -p com.tencent.news --ignore-security-exceptions 100解析指定了该参数即使应用程序发生许可错误monkey会继续向系统发送事件直到指定事件全部运行完毕。
注在log/txt文件中每个时间后面的百分比占用可以自己设置例如滑动事件要占比20% 则在命令中adb shell monkey…–pct-motion 20…就可以在log/txt文件中看到没有指定其它事件占比则其它时间随机瓜分占比。
5. 调试参数
1–ignore-crashes 指即使应用程序崩溃(Force Close错误) ,Monkey依然会发送事件直到事件计数达到指定的次数为止。
如 : adb shell monkey -p cn.mopon.film --ignore-crashes 10000
解析即使应用程序崩溃Monkey依然会发送事件直到事件计数达到10000为止。
2–ignore-security-exceptions 指APP发生许可证书错误时Monkey依然继续发送事件直到事件数目达到目标值为止。 如adb shell monkey -p cn.mopon.film --ignore-security-exceptions 1000
3–ignore-timeouts 指app在发生ANR(Application No Responding)错误时Monkey是否停止运行如果使用-ignore-timeouts参数即使应用程序发生ANR错误Monkey依然会发送事件直到事件计数完成。
如adb shell monkey -p cn.mopon.film -ignore-timeouts 1000
4–kill-process-after-error 指APP发生错误时应用程序停止运行并保持在当前状。
如adb shell monkey -p cn.mopon.film --kill-process-after-error 1000
当应用程序发生错误时应用程序停止运行并保持在当前状态注意系统并不会结束该应用程序的进程。
也可以多个控制参数一起使用
adb shell monkey -p cn.mopon.film --ignore-crashes --ignore-timeouts 10000注当app崩溃发生ANR错误时继续测试。
6. 日志管理
作用 Monkey日志管理是Monkey测试中非常重要的一个环节通过日志管理分析可以获取当前测试对象在测试过程中是否会发生异常以及发生的概率同时还可以获取对应的错误信息帮助开发定位和解决问题。 查看 1直接在dos窗口下执行命令后会显示出来 2例如adb shell adb shell monkey -p 包名 -v -v -v 100在命令最后加上E:\monkey.log monkey 日志保存方法 1保存在PC中 2保存在手机上 3标准流和错误流分开保存 保存在PC中 举例adb shell monkey -v -v 100 e:\monkeylog.txt 或者adb shell monkey -v -v 100 e:\monkeylog.log 保存在手机上
adb shell monkey -v 100 /sdcard/monkeylog.txt打开文件管理器就可以查看。
标准流和错误流分开保存
举例 1adb shell monkey -v 100 1e:\monkey.txt 2e:\error.txt
解析在E盘中会显示monkey.txt和error.txt文本monkey.txt保存着Monkey正常运行日志error.txt保存着Monkey异常日志。
举例 2指定手机文件运行日志和异常日志保存到E盘下。
adb shell monkey - f /sdcard/wxz.txt -v -v 1 1e:\monkey.txt 2e:error.txt解析第一个1代表一个文件第二个1代表正常运行日志执行上述命令Monkey的运行日志和异常日志将被分开保存。
7. 日志错误定位
1程序无响应的问题,在日志中搜索:ANR 无响应。
可能的原因有:
a、当前有耗时操作在UI线程指定导致卡UI了。
b、在5s内没有响应输入事件( eg:按键、触摸屏幕)。
c、BroadcastReceiver在特定时间内(10s无法处理完成在logcat将出现anr问题的进程号复制,然后在trace.txt文件里。
按ctrlF查找,粘贴进程号查找对应的问题。
2崩溃问题
在日志中搜索:Exception如果出现空指针则肯定有bug
常见错误类型
异常与错误类型 说明
java.lang.NullPointException 空指针异常
java.lang.ArrayIndexOutOfBoundsException 数组溢出
java.lang.classNotFoundException 类不存在
java.lang.ArithmeticException 数学运算异常
java.lang.IllegalArgumentException 方法参数错误
java.io.FileNotFoundException 文件未找到
java.lang.NumberFormatException 数值转化异常
java.lang.StackOverFlowError 推展异常错误
java.lang.OutOfMemoryError 内存溢出错误3monkey执行中断搜索:crash、error
8. Monkey测试可以发现的问题
Android平台应用程序可能产生以下四种Crash:
App层(JAVA应用程序):
1、Force Close Crash
2、ANR Crash
Native层(本地框架):
3、Tombstone Crash(Native Crash)
Kernel层(LINUX内核空间)
4、Kernel Panic
注Monkey的参数没有顺序要求但是随机事件数是一定要放在最后的