Qtest测试之道 Jenkins 集成 monkey
jenkins
jenkins 是基于 java 开发的一款持续集成工具,用于监控持续重复的工作,多用于搭建持续集成环境。相信各位测试同学对 jenkins 并不陌生。
monkey
Monkey 是 google 提供的一个命令行工具,可以运行在模拟器或者物理设备中。monkey 通过向系统发送按钮、手势、触摸屏输入等伪随机用户事件,对软件进行稳定性与压力测试。从事移动端测试的同学,想必对 monkey 工具的使用也轻车熟路。
jenkins+monkey
很多移动端测试团队都使用 jenkins 搭建了持续集成环境,用于自动代码拉取、构建和打包。然而有的测试同学,在使用 monkey 工具进行稳定性测试的时候,仍是通过手动执行命令的方式启动测试。其实我们可以将 monkey 测试集成到 jenkins 中,这样在构建新任务过程中可以在闲置的测试手机上立马进行稳定性测试。
下面,我们来看看如何将 monkey 集成到 jenkins 中。执行 monkey 测试有两种方式,一种是在模拟器中进行测试,另一种是在真机上进行测试。如果手头没有测试机,可以选择在 android 模拟器中进行 monkey 测试。
模拟器配置
安装 android 模拟器插件
在 jenkins 的系统管理--》管理插件中,选择 android emulator plugin 进行安装。安装插件后,在已安装列表中可以查看到该插件。
构建环境配置
安装了 android emulator plugin 之后,在构建环境中勾选 “Run an Android emulator during build” 选项。并对 android 模拟器进行配置。主要对 android 系统版本、屏幕分辨率、sd 卡容量进行配置。我们可以依据自己的测试需求,进行相应的配置。
构建配置
构建的配置,需要进行两项配置,Install android package 和 Run android monkey tester。
Install android package 主要目的是把构建包安装到手机。
Run android monkey tester 主要是启动 monkey 测试,并对运行参数进行配置。运行参数包括 monkey 测试过程中模拟的事件数量、事件间隔时间等。在高级选项中测试者可以依据自身需求添加更多配置。output filename 选项对 monkey 测试结果文件名进行配置,默认情况下生成的测试结果存放在工作空间根目录下的 monkey.txt 文件中。
构建后操作
构建后操作可以选择 Publish android monkey tester result。
这样在构建完成之后,可以一目了然的看到 monkey 测试是否成功。该选项需要设置两个参数,分别是 filename 和 set build result。参数 Filename 顾名思义是指定 monkey 测试生成的结果文件名称。如果没有指定 filename 的值,默认情况下会到该任务的根目录下面读取 monkey.txt 文件。如果在 Run android monkey 中对 output filename 进行了修改,那么 filename 应该与 output filename 保持一致。set build result 选项是设置当 monkey 测试出现 Crash 或 ANR,应该呈现的结果状态,默认情况下为 unstable。
真机配置
很多情况下我们选择真机做 monkey 测试,结果更加可靠。下面,我们看一下如何用 jenkins 搭配真机进行 monkey 测试。在配置 jenkins 之前,我们需要确保 PC 端已经配置好了 android adb 的环境变量。
1.参数化构建
由于 monkey 测试需要进行一系列参数配置,所以我们可以在 jenkins 的 General 中配置一些构建过程中需要使用的参数。例如,monkey 运行的参数 evencount,seed 都可以在此进行输入配置,可以更加灵活的控制 monkey 测试。
同时,我们可以配置一个布尔变量,作为此次构建是否执行 monkey 测试的判断依据。这样便可以将普通构建任务和执行 monkey 测试的构建任务放在一个任务配置中,而不需要配置多个任务。如果该选项被勾选,那此次构建执行 monkey 测试,否则不执行。
2.构建
采用真机进行 monkey 测试,需要通过 adb 命令来启动 monkey 测试。所以需要在构建步骤中增加 execute shell 选项。然后在选项中,添加执行 monkey 测试的脚本。脚本主要执行两项任务,首先将构建的包安装到手机端,然后启动 monkey 测试。脚本中可以使用前面配置的参数,这样方便测试者依据不同的测试需求,构建不同的测试任务。
命令行执行 monkey 测试,基本语法:
adb shell monkey [options] <event-count>
- event-count: 为必选参数,用于指定 monkey 测试过程中模拟的用户事件数量。
[options] 主要参数如下:
- -p packageName :该参数指定需要执行 monkey 测试的包名。如果需要测试多个包,需要添加多个-p 参数,每个参数后带一个包名。
- -s seed :该参数指定伪随机生成器的 seed 值。
- -v: 指定 monkey 测试结果中输出 log 信息的详细程度,总共分为三个级别。默认级别是 0:-v,测试结果中只包含启动信息,测试完成信息和最终结果信息。级别 2:-v -v,打印测试过程中执行的一些信息,如模拟的用户点击事件。级别 3:-v -v -v,打印最详细的信息。
- --throttle milliseconds:指定 monkey 模拟事件的前后间隔时间。通过这个选项可以减缓 monkey 的执行速度。如果不指定该选项,monkey 模拟事件将会持续执行,事件间不会有停顿。
- --ignore-crashes: 该参数指定 monkey 测试过程中是否忽略 crash。如果设置了该参数,测试过程中如果发生了 crash,monkey 测试会继续执行。否则测试过程中遇到 crash,停止测试。
- --ignore-timeouts:该参数指定 monkey 测试过程中忽略 ANR。如果测试过程中出现了 ANR,将忽略此现象,继续执行 monkey 测试。
小结
在业务测试中,笔者已经将 monkey 测试集成到 jenkins 中,方便在构建任务的同时进行 monkey 测试。本次尝试并没有将 monkey 测试结果的展示整合到 jenkins 中。后续可以开发一个小插件,对 monkey 测试结果进行分析,然后以更直观的方式展示测试结果。
更多干货,扫码关注Qtest公众号