赞
踩
目录
6) 参数:--ignore-timeouts (无响应ANR)
7) 参数:--ignore-security-exceptions (许可证书崩溃)
8) 参数:--kill-process-after-error(发生错误停止运行并保持当前状态)
9)参数:--monitor-native-crashes(监视并报告Androids系统本地代码的崩溃事件)
10) 参数: --pct-{+事件类别}{+事件类别百分比}
Monkey测试是一种随机测试的技术,用于检测软件系统的稳定性和健壮性。在这种测试中,测试工具会随机地执行各种操作,如点击、滑动、输入等,以模拟用户的行为,从而揭示系统中的潜在缺陷或问题。Monkey测试通常用于测试Android应用程序,但也可以应用于其他类型的应用程序。它可以帮助开发人员发现和修复应用程序中的问题,同时提高应用程序的质量和可靠性。
1) Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar;
2) Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey;
这样就可以通过在CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试了。
要获取Monkey命令自带的简单帮助,在CMD中执行命令:
adb shell monkey –help
- ```
- usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
- [-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
- [--ignore-crashes] [--ignore-timeouts]
- [--ignore-security-exceptions]
- [--monitor-native-crashes] [--ignore-native-crashes]
- [--kill-process-after-error] [--hprof]
- [--match-description TEXT | --pct-touch | --pct-motion |
- --pct-trackball | --pct-syskeys | --pct-nav |
- --pct-majornav | --pct-appswitch | --pct-flip |
- --pct-anyevent | --pct-pinchzoom | --pct-permission]
- [--pct-screenshot] [--pct-syskeys] [--randomize-throttle]
- [--wait-dbg] [--dbg-no-events] [--setup] [-s SEED]
- [--throttle MILLISEC] [--randomize-script] [--script-log]
- [--bugreport] [--periodic-bugreport] [--permission-target-system]
- [--permission-target-all] [-v [-v] ...]
- [--output-format {simple,compact,full}]
- [--agent-agent]
- COUNT
-
- -p ALLOWED_PACKAGE: 规定被允许测试的包名
- -c MAIN_CATEGORY: 规定测试时默认启动的 Activity 的 category
- --ignore-crashes: 忽略崩溃
- --ignore-timeouts: 忽略超时
- --ignore-security-exceptions: 忽略安全性异常
- --monitor-native-crashes: 监控并报告本地崩溃事件
- --ignore-native-crashes: 忽略本地崩溃事件
- --kill-process-after-error: 在发生错误后杀死进程
- --hprof: 在发生错误时生成内存转储文件
- --match-description TEXT: 匹配包含指定文本的事件
- --pct-touch: 规定“触摸”事件的百分比
- --pct-motion: 规定“移动”事件的百分比
- --pct-trackball: 规定“轨迹球”事件的百分比
- --pct-syskeys: 规定“系统”事件的百分比
- --pct-nav: 规定“导航”事件的百分比
- --pct-majornav: 规定“重要导航”事件的百分比
- --pct-appswitch: 规定“应用切换”事件的百分比
- --pct-flip: 规定“翻转”事件的百分比
- --pct-anyevent: 规定任何事件的百分比
- --pct-pinchzoom: 规定“双指缩放”事件的百分比
- --pct-permission: 规定“权限请求”事件的百分比
- --pct-screenshot: 规定“屏幕截图”事件的百分比
- --randomize-throttle: 随机化输入间隔时间
- --wait-dbg: 等待调试器连接后,再开始运行
- --dbg-no-events: 不向设备发送任何事件,只打印调试信息
- --setup: 只需启动设备,并不执行任何测试 (用于检查设备是否连接成功)
- -s SEED: 设置随机数种子
- --throttle MILLISEC: 规定事件输入之间的间隔时间,单位为毫秒
- --randomize-script: 随机播放事件脚本
- --script-log: 以脚本形式记录事件
- --bugreport: 在脚本执行结束后,收集设备信息并生成 Bug 报告
- --periodic-bugreport: 在脚本执行期间定期生成 Bug 报告
- --permission-target-system: 只测试系统权限
- --permission-target-all: 测试所有权限
- -v: 打印更详细的调试信息 (-v: verbose, -vv: extra verbose)
- --output-format {simple,compact,full}: 规定日志输出格式,分别为简单、紧凑、完整
- --agent-agent: 以 Agent 方式运行
-
- COUNT: 指定要执行的事件数量
- ```
参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。
* 指定一个包:
adb shell monkey -p com.htc.Weather 100
说明:com.htc.Weather为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。
* 指定多个包:
adb shell monkey -p com.htc.Weather –p com.htc.pdfreader -p com.htc.photo.widgets 100
* 不指定包:
adb shell monkey 100
说明:Monkey随机启动APP并发送100个随机事件。
* 要查看设备中所有的包,在CMD窗口中执行以下命令:
- >adb shell
-
- #cddata/data
-
- #ls
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:
示例
adb shellmonkey -p com.htc.Weather –v 100
说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息
示例
adb shellmonkey -p com.htc.Weather –v -v 100
说明 提供较为详细的日志,包括每个发送到Activity的事件信息
示例
adb shellmonkey -p com.htc.Weather –v -v –v 100
说明 最详细的日志,包括了测试中选中/未选中的Activity信息
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
* 示例:
Monkey测试1:
adb shell monkey -p com.htc.Weather –s 10 100
Monkey 测试2:
adb shell monkey -p com.htc.Weather–s 10 100
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽 然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;
用于指定用户操作(即事件)间的时延,单位是毫秒;
* 示例:
adb shell monkey -p com.htc.Weather –throttle 3000 100
用于指定当应用程序崩溃时(Force& Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。
* 示例1:
adb shellmonkey -p com.htc.Weather --ignore-crashes 1000
测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;
* 示例2:
adb shellmonkey -p com.htc.Weather 1000
测试过程中,如果Weather程序崩溃,Monkey将会停止运行。
"--ignore-timeouts"是一个adb命令的选项。当使用"adb shell am start"命令启动应用程序时,如果应用程序在启动过程中出现长时间等待或ANR(无响应)错误,则该命令可以忽略该错误,继续运行应用程序。
这个选项对于测试人员特别有用,因为它允许他们测试应用程序的性能和响应时间,而不必担心应用程序在启动过程中出现ANR错误而停止运行。但是,使用此选项时,请务必注意应用程序的行为,并确保其在真实设备上的性能与在模拟器上的性能相同。
"--ignore-security-exceptions" 是 Android 平台上的一个选项,用于忽略应用程序中的许可证书错误或异常,允许应用程序继续执行。通常情况下,Android 应用程序需要在运行时验证其许可证书是否有效,以确保应用程序只能在有效许可证下运行。但有时许可证书出现异常或错误,导致应用程序无法验证其许可证书,从而阻止应用程序继续执行。在这种情况下,使用该选项可以忽略许可证书错误或异常,使应用程序继续执行。但同时也可能会导致安全问题,因此需要谨慎使用。
--kill-process-after-error
是一个命令行参数,当设置为true
时,表示在程序发生错误时,立即停止运行并保持当前状态。这个参数通常用在自动化测试中,可以确保测试用例在失败时不会继续运行导致更多的错误。
例如,在运行自动化测试时,如果一个用例失败了,一般会停止执行所有用例,此时--kill-process-after-error
参数就派上用场了。当设置该参数为true时,程序在遇到失败的用例时就会立即停止,并保持当前状态,以便调试和分析错误。
--monitor-native-crashes
是 Android Debug Bridge(ADB)命令的一个选项,用于在应用程序崩溃时监视并报告 Android 系统本地代码的崩溃事件。当应用程序崩溃时,该选项启用 ADB 以便它可以监视崩溃堆栈跟踪中的本地库函数,并将这些信息报告回开发人员以便进行后续调试。
该选项的语法为:
adb shell am start -n com.example.app/.MainActivity --monitor-native-crashes
使用该选项可以更方便地调试应用程序崩溃问题,并快速找出根本原因。
用于指定每种类别事件的数目百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比)
使用说明:
调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)
示例:
adb shell monkey -p com.htc.Weather--pct-touch 10 1000
使用说明:
调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)
示例:
adb shell monkey -p com.htc.Weather --pct-motion 20 1000
使用说明:
调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)
示例:
adb shell monkey -p com.htc.Weather--pct-trackball 30 1000
使用说明:
调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)
示例:
adb shell monkey -p com.htc.Weather--pct-nav 40 1000
使用说明:
调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)
示例:
adb shell monkey -p com.htc.Weather--pct-majornav 50 1000
使用说明:
调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)
示例:
adb shell monkey -p com.htc.Weather--pct-syskeys 60 1000
使用说明:
调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法
示例:
adb shell monkey -p com.htc.Weather--pct-appswitch 70 1000
使用说明:
调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等
示例:
adb shell monkey -p com.htc.Weather --pct -anyevent 100 1000
* 指定多个类型事件的百分比:
示例:
adb shell monkey -p com.htc.Weather--pct-anyevent 50 --pct-appswitch 50 1000
注意:各事件类型的百分比总数不能超过100%;
无法连接到 SSH:这通常是由于网络连接问题引起的。请确保您的网络连接正常,并检查您的 SSH 配置是否正确。可以尝试使用 "ping" 命令来测试网络连接。
密码认证失败:如果您使用密码进行身份验证,并且认证失败,请确保您输入的密码是正确的,并且没有使用错误的大小写。如果您仍然无法登录,请尝试重新设置密码。
文件上传失败:如果您使用 "put" 命令上传文件并且失败,请确保您已经有权限将文件上传到目标文件夹,并且文件名是正确的。您还可以尝试将文件复制到您的主机上,并重新上传。
无法运行脚本:如果您尝试运行脚本,但出现错误,请确保您已经正确安装脚本需要的依赖项和版本。此外,您可以检查脚本文件是否具有可执行权限。
处理进程失败:如果您的进程在 Monkey 中运行失败,请确保您的代码没有出现任何错误或死锁。您可以尝试使用调试工具来查找问题。
无法正常关闭 Monkey:如果您无法正常关闭 Monkey,请尝试使用 "kill" 命令手动终止进程,或者重新启动您的主机。也可以检查您的日志文件以查找任何异常行为。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。