2022年Monkey测试方法 .pdf
11.环境搭建1.1.软件安装步骤1.1.1.Java Jdk安装1.安装 Java JDK 2.系统变量配置在电脑【属性】【高级系统设置】【环境变量】【系统变量】中设置;JAVA_HOME;PATH;CLASSPATH。JAVA_HOME:输入指明 JDK安装路径,没有需新建;PATH:输入%JAVA_HOME%bin;%JAVA_HOME%jrebin,没有PATH 则新建,有则编辑,添加上述值;PATH使得系统可以在任何路径下识别 java 命令;CLASSPATH:%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;没有此环境变量需新增,有则编辑,添加上述值;为 java 加载类(class or lib)路径,只有类在 classpath中,java 命令才能识别3.验证 Java Jdk 环境变量配置成功与否;“开始”;“运行”,键入“cmd”;输入命令“java-version”,“java”,“javac”几个命令,出现画面,说明环境变量配置成功;名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 26 页 -21.1.2.Android SDK 1.下载最新的 Android SDK;2.解压Android SDK文件,里面有两个应用程序:“SDK Man ager.exe”(负 责 下 载 或 更 新SDK 包)和AVD Manager.exe(负责创建管理虚拟机)。我们先运行“SDK Manager.exe”进行 SDK下载。3.运行后出现下面的界面,我们选择自己想安装的 Android 版本,我选择了最新版本,然后点击“Install X packages”安装。4.在新出现的界面上,选择接受并遵守所有许可内容(Accept All),再点击“Install”。*Android SDK 管理器就开始下载并安装你所选的包了,等待下载完成。1.2.连接真机调试1.2.1.设备设置1.测试真机需要进行root 处理,获取 root 权限;使用 360 一键 root 工具;2.设置手机,开发者模式,启动【开发者选项】中 开启开发者选项,启动USB调试;3.使用 USB数据线连接测试机;4.确认设备连接正确名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 26 页 -32.App性能测试2.1.启动控制台启动 CMD 控制台。2.2.启动 adb 2.2.1.启动 adb 工具在 CMD 控制台中,进入adb 程序所在路径,使用:adb version命令可以查看当前adb 版本。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 26 页 -42.2.2.查看版本在 adb 目录下,使用:adb version 命令查看 adb 当前版本,如下图;2.2.3.查看设备列表在 adb目录下,使用:adb devices 命令查看设备列表2.3.启动 adb shell 2.3.1.启动 adb shell 在 adb目录下,使用:adb shell 命令启动 adb shell 2.3.2.unknown host service异常排除如果在启动 adb shell时,出现“failed to start daemon*error:unknown host service”错误,是由于测试PC的 5037端口被占用了,在CMD 控制台中“netstat-aon|findstr 5037”查找占用 5037端口的进程 ID,关闭该进程;或者使用“tasklist/fi 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 26 页 -5pid eq 2244”命令关闭进程。2.3.3.more than one device/emulator异常排除如 果 在 启 动 adb shell时,出 现“error:more than one device/emulator”错误,是由于连接了多个设备或者模拟器导致,进行测试时,需要指定设备,使用s 参数;Adb s 022NQS145L001556 shell 2.3.4.查看设备 Data 目录下的包名在 adb shell下使用:su 命令获取 root 权限,后再使用:#ls data/data 命令,连接设备 Data 目录下的包名。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 26 页 -62.4.进行 monkey测试2.4.1.进行 monkey 测试明确要测试的包名后,在进入root权限后使用:#monkey-p com.android.calculator2-v 500;将其中com.android.calculator2替换为要测试的目标即可。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 26 页 -7*如果要将测试 Log 导出到计算机,需要在adb 目录下直接输入命令开始测试,在原始测试命令后追加用于存放测试Log的目录及文件名称,例:如“e:log.txt”;Adb shell monkey p com.yuxuan.dancing v 200 e:log.txt 名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 26 页 -8测试结果 Log 会被存放在 e:log.tx中2.4.2.Adb shell参数设置2.4.2.1.参数:-p 参数-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 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 26 页 -9说明:Monkey随机启动 APP并发送 100个随机事件。*要查看设备中所有的包,在CMD 窗口中执行以下命令:adb shell#cd data/data#ls 2.4.2.2.参数:-v 用于指定反馈信息级别(信息级别就是日志的详细程度),总共分 3 个级别,分别对应的参数如下表所示:1.日志级别 Level 0 示例 adb shell monkey-p com.htc.Weather v 100 说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息;2.日志级别 Level 1 示例 adb shell monkey-p com.htc.Weather v-v 100 说明提供较为详细的日志,包括每个发送到Activity的事件信息;3.日志级别 Level 2 示例 adb shell monkey-p com.htc.Weather v-v v 100 说明最详细的日志,包括了测试中选中/未选中的 Activity信息;名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 26 页 -102.4.2.3.参数:-s 用于指定伪随机数生成器的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值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;2.4.2.4.参数:-throttle 用于指定用户操作(即事件)间的时延,单位是毫秒;*示例:adb shell monkey-p com.htc.Weather throttle 3000 100 2.4.2.5.参数:-ignore-crashes 用于指定当应用程序崩溃时(Force&Close 错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey 依然会名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 26 页 -11发送事件,直到事件计数完成。*示 例1:adb shell monkey-p com.htc.Weather-ignore-crashes 1000;测试过程中即使Weather 程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000 为止;*示例 2:adb shell monkey-p com.htc.Weather 1000;测试过程中,如果Weather 程序崩溃,Monkey将会停止运行。2.4.2.6.参数:-ignore-timeouts 用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey 是否停止运行。如果使用此参数,即使应用程序发生 ANR 错误,Monkey依然会发送事件,直到事件计数完成。2.4.2.7.参数:-ignore-security-exceptions 用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey 是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。2.4.2.8.参数:-kill-process-after-error 用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 26 页 -122.4.2.9.参数:-monitor-native-crashes 用于指定是否监视并报告应用程序发生崩溃的本地代码。2.4.2.10.参数:-pct-+事件类别+事件类别百分比用于指定每种类别事件的数目百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比)参数:使用说明:示例:-pct-touch+百分比;调整触摸事件的百分比(触摸事件是一个down-up 事件,它发生在屏幕上的某单一位置);adb shell monkey-p com.htc.Weather-pct-touch 10 1000-pct-motion+百分比;调整动作事件的百分比(动作事件由屏幕上某处的一个down 事件、一系列的伪随机事件和一个up 事件组成);adb shell monkey-p com.htc.Weather-pct-motion 20 1000-pct-trackball+百分比;调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击);adb shell monkey-p com.htc.Weather-pct-trackball 30 1000 名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 26 页 -13-pct-nav+百分比;调整“基本”导航事件的百分比(导航事件由来自方向输入设备的 up/down/left/right组成);adb shell monkey-p com.htc.Weather-pct-nav 40 1000-pct-majornav+百分比;调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way 键盘的中间按键、回退按键、菜单按键);adb shell monkey-p com.htc.Weather-pct-majornav 50 1000-pct-syskeys+百分比;调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如 Home、Back、Start Call、End Call 及音量控制键);adb shell monkey-p com.htc.Weather-pct-syskeys 60 1000-pct-appswitch+百分比;调整启动 Activity的百分比。在随机间隔里,Monkey将执行一个 startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法;adb shell monkey-p com.htc.Weather-pct-appswitch 70 1000 名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 26 页 -14-pct-anyevent+百分比;调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等;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%;3.Monkey测试结果分析3.1.测试 Log 导出需要将测试Log 导出到计算机时,需要在在adb 目录下,进行monkey测试,在 adb 目录下输入测试命令,在原始测试命令后追加用于存放测试 Log 的目录及文件名称,例如:“e:log.txt”;Adb shell monkey p com.yuxuan.dancing v 200 e:log.txt 名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 26 页 -153.2.测试结果分析3.2.1.初步分析Monkey测试出现错误后,一般的差错步骤为以下几步:1、找到是 monkey里面的哪个地方出错2、查看 Monkey里面出错前的一些事件动作,并手动执行该动作3、若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed 值要一样一般的测试结果分析:1、ANR 问题:在日志中搜索“ANR”2、奔溃问题:搜索“Crash”2、异常问题:在日志中搜索“Exception”名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 26 页 -163.2.2.详细分析将执行 Monkey生成的 log,从手机中导出并打开查看该log;在log 的最开始都会显示Monkey执行的 seed 值、执行次数和测试的包名。首先我们需要查看Monkey测试中是否出现了ANR 或者异常,具体方法如上述。然后我们要分析log 中的具体信息,方法如下:查看 log 中第一个 Switch,主要是查看 Monkey执行的是那一个Activity,譬如下面的log中,执行的是com.tencent.smtt.SplashActivity,在下一个 swtich 之间的,如果出现了崩溃或其他异常,可以在该Activity中查找问题的所在。:Switch:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0 x10000000;component=com.tencent.smtt/.SplashActivity;end/Allowing start of Intent act=android.intent.action.MAIN cat=android.intent.category.LAUNCHERcmp=com.tencent.smtt/.SplashActivity in package com.tencent.smtt 在下面的log中,Sending Pointer ACTION_DOWN 和 Sending Pointer ACTION_UP 代表当前执行了一个单击的操作;Sleeping for 500 milliseconds这句 log 是执行 Monkey测试时,throttle设定的间隔时间,每出现一次,就代表一个事件。名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 26 页 -17SendKey(ACTION_DOWN)/KEYCODE_DPAD_DOWN 代表当前执行了一个点击下导航键的操作;Sending Pointer ACTION_MOVE 代表当前执行了一个滑动界面的操作。:Sending Pointer ACTION_DOWN x=47.0 y=438.0:Sending Pointer ACTION_UP x=47.0 y=438.0 Sleeping for 500 milliseconds:SendKey(ACTION_DOWN):20 /KEYCODE_DPAD_DOWN:SendKey(ACTION_UP):20 /KEYCODE_DPAD_DOWN Sleeping for 500 milliseconds:Sending Pointer ACTION_MOVE x=-2.0 y=3.0:Sending Pointer ACTION_MOVE x=4.0 y=-3.0:Sending Pointer ACTION_MOVE x=-5.0 y=-3.0:Sending Pointer ACTION_MOVE x=3.0 y=4.0:Sending Pointer ACTION_MOVE x=-4.0 y=1.0:Sending Pointer ACTION_MOVE x=-1.0 y=-1.0:Sending Pointer ACTION_MOVE x=-2.0 y=-4.0 如果 Monkey测试顺利执行完成,在log 的最后,会打印出当前执行事件的次数和所花费的时间;/Monkey finished代表执行完成。Monkey执行中断,在 log 的最后也能查看到当前已执行的次数。Monkey执行完成的 log 具体如下:Events injected:6000 名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 26 页 -18:Dropped:keys=0 pointers=9 trackballs=0 flips=0#Network stats:elapsed time=808384ms(0ms mobile,808384ms wifi,0msnot connected)/Monkey finished 3.2.3.Log 时间标识Monkey 测试 Log 中标识操作的具体时间使用calendar_time:标识Calendar_time 4.Android 设备性能监视4.1.环境搭建测试设备安装腾讯GT工具,直接安装 GT_2.2.6.5.apk。安装 GT(GT.apk)后,不需要连接 PC 和在被测应用中插入代码,即可通过 GT 快速方便地进行基本性能测试。GT 支持获取手机整机的:CPU,内存,帧率(FPS,Android4.x 版本需在开发者选项中勾选“禁用硬件叠加”后,才能得到准确的帧率数值,见注 1),流量(WIFI/3G/2G),信号强度,电流电量(有限机 型 支 持);单 个应 用(支 持 多 进 程的 应 用)的CPU,内 存(PSS/PrivateDirty),流量信息。名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 26 页 -194.2.腾讯 GT 工具配置4.2.1.选择测试目标 App 按照下图操作,选择要测试的目标App 名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 26 页 -204.2.2.设置关注的性能参数PSS:系统内存CPU:设备 CPU NET:使用流量名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 26 页 -214.2.3.启动应用程序,设置监视的性能指标点击 启动 按钮启动 App,然后返回 GT界面,设置要监视的性能指标,名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 26 页 -22进入【参数】界面及【编辑】界面,选择要监视的性能指标;名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 26 页 -234.2.4.设置悬浮窗实时显示指标在【参数】_【编辑】界面,设置悬浮窗口中实时显示的性能指标,此项设置非必须。名师资料总结-精品资料欢迎下载-名师精心整理-第 23 页,共 26 页 -244.2.5.设置保存历史记录的性能指标在【参数】界面,设置需要历史数据的性能指标;4.3.测试4.3.1.开始/停止监控性能指标并收集数据参数、指标设置完成后,点击,开始收集数据。测试完成后点击,停止收集数据。4.3.2.查看测试数据及保存腾讯 GT能够查看实时测试数据;名师资料总结-精品资料欢迎下载-名师精心整理-第 24 页,共 26 页 -25测试完成后,保存测试数据;名师资料总结-精品资料欢迎下载-名师精心整理-第 25 页,共 26 页 -264.3.3.测试数据导出4.4.与 Android Monkey测试同步启动 GT性能数据收集后,启动 Android Monkey测试,同步进行。名师资料总结-精品资料欢迎下载-名师精心整理-第 26 页,共 26 页 -