【APP自动化测试】Monkey测试入门

今天开始学习monkey,记录一下整个流程一遍后面温习

文章目录

    • 测试步骤:
        • 1. 安装JDK及SDK并且配置其环境:
        • 2. 测试ADB是否安装成功:
        • 3. 连接模拟器并安装apk:
        • 4. 对安装的apk进行测试:
    • 常用命令
        • 1.标准的monkey 命令:
          • options(选项)通常分为四大类—— 常用选项 、 事件选项 、 约束选项 、 调试选项
        • 2.杀Monkey进程:
        • 3. 抓取日志
          • 3.1 无响应日志抓取方法
          • 3.2 一般日志(先输命令,再进行重现操作)
    • 参数详解
        • seed:

测试步骤:

1. 安装JDK及SDK并且配置其环境:

1.1 JDK安装及java环境配置

首先下载JDK,解压到本地,本文解压到E盘根目录;
【APP自动化测试】Monkey测试入门_第1张图片
之后右键我的电脑->属性->高级->环境变量->系统变量
注意:是下面的系统变量,不是上面的用户变量
新建变量名 JAVA_HOME,变量值 E:\JDK
修改变量 Path ,在最前面加上 %JAVA_HOME%\bin;
注意:“Path"是首字母大写,不要改成"PATH” bin后面要有分号;
注意:系统变量上面的用户变量里,不要有这两个,如果有应该去掉,以避免被干扰。
注意:Win10 下PATH的配置有所不同;
【APP自动化测试】Monkey测试入门_第2张图片
【APP自动化测试】Monkey测试入门_第3张图片
1.2 SDK安装与环境配置:
可以直接下载我上传的SDK,就不需要下面这些繁杂的步骤啦。
如果没有下载我上传的SDK,也可以浏览器打开www.android-studio.org,点击下载,然后选择下载windows版本的SDK。
安装完之后,我们点击一下SDK Manager.exe;如果网速好的,可以点击全部,然后进行安装。我这里点击默认安装12个包。为什么要安装这个了,因为安装之后,会产生一个platform-tools的文件夹,里面就有我们需要的adb.exe,现实安装过程,很容易失败,连接google网络问题经常遇到。

下载完成后我同样解压到E盘根目录,然后在之前的环境变量中配置ANDROID_HOME及Path
新建变量名 ANDROID_HOME,变量值 E:\sdk
修改变量 Path ,在最后面加上 %ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools
【APP自动化测试】Monkey测试入门_第4张图片

2. 测试ADB是否安装成功:

打开cmd(快捷键:WIN+R),输入命令adb version
这里写图片描述
结果如图表示已经安装成功。
接下来连接手机或者是模拟器。
手机连接:使用数据线将手机连接至电脑,打开设置->开发者选项->允许usb调试;
模拟器直接打开即可;
我是用的是模拟器进行的测试,接下来介绍模拟器的连接方法和shell命令的使用。

3. 连接模拟器并安装apk:

我使用的是mumu模拟器,连接端口号为7555(注:不同模拟器的连接端口并不相同,详情百度)
首先进入sdk的安装目录,然后连接本地mumu模拟器:
这里写图片描述
首次连接成功后会出现 success 字样,我因为之前已经连接了,所以提示已经connected。
连接成功后使用命令adb devices能够查看当前已经连接的设备,有时候我们连接了多个设备,也能够使用命令对指定的设备进行测试,后面再提。
这里写图片描述
图中可以看到我只连接了一个设备,设备连接成功后就可以对设备进行测试啦。
手机端可以使用install命令将电脑上的apk安装至手机,模拟器可以直接将apk拖入安装。
这里写图片描述
上图使用adb -s 127.0.0.1:7555 install e:\\doctor.apk命令,意思是将e盘的doctor.apk文件安装到端口号为7555的设备上,这里就是我的mumu模拟器。

-s :对指定的设备进行操作,通常用于多设备连接情况

4. 对安装的apk进行测试:

apk安装好了之后就可以对其进行测试啦,因为手机和模拟器上安装的应用程序众多,我们可以使用命令行adb shell dumpsys activity|find "mFocusedActivity"用来查看当前正在运行的应用程序,前提是你要把要测试的应用程序打开哦,效果如下图:
这里写图片描述
因为我只开启了这一个应用程序,所以当前运行的只有这一个。红框圈起来的部分就是我准备测试的应用程序名称了。
知道名称之后就可以对这个程序进行monkey测试了,我演示一下几个基本的shell命令:

4.1 随机点击命令adb shell monkey -p 应用程序名称 点击数
我这里是对刚刚的应用程序进行1000次点击,运行期间你可以看到模拟器上apk被操作
这里写图片描述
4.2 进行点击后将日志导出命令adb shell -p 应用名 -v 点击数 >电脑某一位置
这里写图片描述
我这里是将其导出到e盘的test.txt文件中,打开其文件能够看到本次测试的基本信息和一些重要参数,具体意义会在下一章节讲到。
【APP自动化测试】Monkey测试入门_第5张图片
在log的最开始都会显示Monkey执行的seed值、执行次数和测试的包名。

首先我们需要查看Monkey测试中是否出现了ANR或者异常,无响应问题(ANR问题):在日志中搜索“ANR ”(此处有空格), 崩溃问题:在日志中搜索“Exception”,快速定位到关键事件信息 。然后查看Monkey里面出错前的一些事件动作,并手动执行该动作,找出重现步骤,给开发

常用命令

1.标准的monkey 命令:

[adb shell] monkey [options] ,

options(选项)通常分为四大类—— 常用选项 、 事件选项 、 约束选项 、 调试选项

常用选项

--help:打印帮助信息
-v:指定打印信息的详细级别,一个 -v增加一个级别 , 默认级别为 0 。
Level 0  :  adb shell monkey  -p fishjoy.control.menu  -v 100   最简单(默认),除了启动、测试完成和最终结果外只提供较少的信息。
Level 1  :  adb shell monkey  -p fishjoy.control.menu  -v  -v 100  提供了较为详细的测试信息,如逐个发送到Activity的事件信息
Level 2  :  adb shell monkey  -p fishjoy.control.menu  -v  -v  -v 100 提供了更多的设置信息,如测试中选中或未选中的Activity信息
比较常用的是-v -v -v,一般会保存到指定文件中供开发人员查找bug原因时使用

事件选项

-s:指定产生随机事件种子值,相同的种子值产生相同的事件序列。如: -s 200
--throttle:每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列)。如:--throttle 100
--pct-touch:指定触摸事件的百分比,如:--pct-touch 5% , 相关的还有以下option:
--pct-motion  (滑动事件)、 --pct-trackball  (轨迹球事件) 、 --pct-nav  (导航事件 up/down/left/right)、 --pct-majornav  (主要导航事件 back key 、 menu key)、 --pct-syskeys  (系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl)、 --pct-appswitch  (activity之间的切换)、 --pct-anyevent (任意事件)

约束选项

-p:指定有效的package(如不指定,则对系统中所有package有效),一个-p 对应一个有效package, 如:-p com.ckt -p com.ckt.asura;
-c:activity必须至少包含一个指定的category,才能被启动,否则启动不了;

调试选项

--dbg-no-events:初始化启动的activity,但是不产生任何事件。
--hprof:指定该项后在事件序列发送前后会立即生成分析报告  —— 一般建议指定该项。
--ignore-crashes:忽略崩溃
--ignore-timeouts:忽略超时
--ignore-security-exceptions:忽略安全异常
--kill-process-after-error:发生错误后直接杀掉进程
--monitor-native-crashes:跟踪本地方法的崩溃问题
--wait-dbg:知道连接了调试器才执行monkey测试。

2.杀Monkey进程:

首先查询进程号:

adb shell ps | grep monkey

然后根据返回的进程号,kill它!

adb shell kill [刚才查到的进程号]

3. 抓取日志

如果手机出现崩溃问题,这时候我们一般就需要抓取其崩溃日志给开发。
日志分为两种,一种是无响应日志,一种是一般日志。

3.1 无响应日志抓取方法

什么无响应?通俗的说点了半点也没有动静的,确认是否等待,八九不离十是无响应的。用下面命令来抓日志*(先重现问题,再抓取日志)*:

adb pull /data/anr/traces.txt 自己的保存的路径+要保存的文件名字

举例个例子:adb pull /data/anr/traces.txt D:\SDK\traces.txt,我把抓取的日志放在D:\SDK,文件名字为traces.txt,到这就可以找到了,注意路径中的空格。

3.2 一般日志(先输命令,再进行重现操作)
adb logcat -v time >自己的保存的路径+要保存的文件名字

例如:   adb shell logcat >D:\SDK\log.txt

注意路径中的空格,命令输入完后一定要重现问题。
问题重现完毕后,点击ctrl+c退出日志抓取,再到指定目录下查看刚刚抓取的日志。

参数详解

在导出的日志中有许多的参数,其中有些重要参数将详细介绍:

seed:

指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。

-s 
示例:
 monkey测试:adb  shell  monkey  -p fishjoy .control.menu  –s 10  100

以上只介绍了很基础的一些命令和日志中的参数,更多资料可以参考下面两个大佬的博客,写的很详细的。
命令参考:https://blog.csdn.net/xiangyunwan/article/details/71642114
参数参考:https://blog.csdn.net/jlminghui/article/details/38238443

你可能感兴趣的:(软件测试工具学习)