Qtest测试之道 Jenkins 集成 monkey

360Qtest团队 · November 12, 2018 · 1325 hits

jenkins

jenkins是基于java开发的一款持续集成工具,用于监控持续重复的工作,多用于搭建持续集成环境。相信各位测试同学对jenkins并不陌生。

monkey

Monkey是google提供的一个命令行工具,可以运行在模拟器或者物理设备中。monkey通过向系统发送按钮、手势、触摸屏输入等伪随机用户事件,对软件进行稳定性与压力测试。从事移动端测试的同学,想必对monkey工具的使用也轻车熟路。

jenkins+monkey

很多移动端测试团队都使用jenkins搭建了持续集成环境,用于自动代码拉取、构建和打包。然而有的测试同学,在使用monkey工具进行稳定性测试的时候,仍是通过手动执行命令的方式启动测试。其实我们可以将monkey测试集成到jenkins中,这样在构建新任务过程中可以在闲置的测试手机上立马进行稳定性测试。
下面,我们来看看如何将monkey集成到jenkins中。执行monkey测试有两种方式,一种是在模拟器中进行测试,另一种是在真机上进行测试。如果手头没有测试机,可以选择在android模拟器中进行monkey测试。

模拟器配置

  1. 安装android模拟器插件
    在jenkins的系统管理--》管理插件中,选择android emulator plugin进行安装。安装插件后,在已安装列表中可以查看到该插件。

  2. 构建环境配置
    安装了android emulator plugin之后,在构建环境中勾选“Run an Android emulator during build”选项。并对android模拟器进行配置。主要对android系统版本、屏幕分辨率、sd卡容量进行配置。我们可以依据自己的测试需求,进行相应的配置。

  3. 构建配置
    构建的配置,需要进行两项配置,Install android package和Run android monkey tester。
    Install android package主要目的是把构建包安装到手机。
    Run android monkey tester主要是启动monkey测试,并对运行参数进行配置。运行参数包括monkey测试过程中模拟的事件数量、事件间隔时间等。在高级选项中测试者可以依据自身需求添加更多配置。output filename选项对monkey测试结果文件名进行配置,默认情况下生成的测试结果存放在工作空间根目录下的monkey.txt文件中。

  4. 构建后操作
    构建后操作可以选择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公众号
@描述 | center  |

No Reply at the moment.
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up