美文网首页持续集成Android技术知识
利用jenkins在多部手机上并发跑android测试

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

作者: muco | 来源:发表于2016-07-12 23:56 被阅读1866次

    一、 梗概介绍

    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 .

    相关文章

      网友评论

      • 托森:大哥能详细点儿吗 docker的部分 根本看不明白

      本文标题:利用jenkins在多部手机上并发跑android测试

      本文链接:https://www.haomeiwen.com/subject/dzesjttx.html