利用jenkins在多部手机上并发跑android测试

一、 梗概介绍

1.1 效果图

利用jenkins在多部手机上并发跑android测试_第1张图片
并行测试效果

1.2 机器情况

利用jenkins在多部手机上并发跑android测试_第2张图片
jenkins nodes

其中master为主节点,node1和node2为两个slave节点。node1 和 node2分别和一台实际手机连接。

1.3 任务情况(Job)

任务名称:AppiumPipeline
构建工具:Gradle
执行的测试脚本为:

./gradlew test --rerun-tasks

代码地址:

https://github.com/MuchContact/appium_java_android.git

1.4 并行任务

并行任务是并行地在多个slave上跑AppiumPipeline任务,借助于jenkins中的Multijob插件。
任务名称:multijob


利用jenkins在多部手机上并发跑android测试_第3张图片
任务配置

二、 使用docker搭建完整slave节点

2.1 使用docker构建slave节点

在1.2节中看到的两个slave节点是运行起来的两个docker container,每个container 内部通过adb connect ip:port的方式和一部真实的android手机连接。对应的docker镜像中包含以下内容:

  • android sdk
  • nodejs
  • npm
  • appium

docker container通过web start的方式和主节点建立连接,成为主节点的slave节点。

wget http://{master-ip:master-jenkins-port}/jnlpJars/slave.jar
java -jar slave.jar -jnlpUrl http://{master-ip:master-jenkins-port}/computer/{node-name}/slave-agent.jnlp

2.2 准备手机测试设备

由于docker container 本身没有UI桌面支持,所以并没有内部create android emulator。不过即使有UI支持,能够创建android虚拟机,也不会去用:1)慢;2)不适合跑集成测试。所以,最终的思路是连接外部手机设备。
手机无论是真机还是虚拟机,只要有独立的ip地址,和slave节点处在同一个网络内能够被访问就可以被用作测试机。我在测试时是在主机上开启了多个genymotion虚拟机,然后通过脚本给每个slave分配一个虚拟手机。
关于如何访问真机可以参照http://adbshell.com/commands/adb-connect .

你可能感兴趣的:(利用jenkins在多部手机上并发跑android测试)