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

一、 梗概介绍

1.1 效果图

并行测试效果

1.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


任务配置

二、 使用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 .

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,323评论 25 709
  • 一、Docker 简介 Docker 两个主要部件:Docker: 开源的容器虚拟化平台Docker Hub: 用...
    R_X阅读 9,854评论 0 27
  • 写这篇文章主要是为了今后毕业论文素材上的整理,同时对docker进行巩固温习。大纲: docker简介docker...
    胡图仙人阅读 12,225评论 2 96
  • 大人问我今天的文章写什么,我回答:咸菜 大人说:今天的话题好接地气儿。 我喜欢吃的咸菜其实只有一种,那就是我老爸炒...
    阿荻阅读 4,288评论 3 7
  • 风吹啊吹 时间走啊走 我不知风要将我吹向何处 也不知时间会带我去向何方 我就在这儿 摇曳啊摇曳 飘啊飘 想要到达的...
    _你好我是小黄黄阅读 1,405评论 0 0

友情链接更多精彩内容