一、 梗概介紹
1.1 效果圖
1.2 機(jī)器情況
其中master為主節(jié)點(diǎn)图甜,node1和node2為兩個(gè)slave節(jié)點(diǎn)阱持。node1 和 node2分別和一臺(tái)實(shí)際手機(jī)連接瀑粥。
1.3 任務(wù)情況(Job)
任務(wù)名稱(chēng):AppiumPipeline
構(gòu)建工具:Gradle
執(zhí)行的測(cè)試腳本為:
./gradlew test --rerun-tasks
代碼地址:
https://github.com/MuchContact/appium_java_android.git
1.4 并行任務(wù)
并行任務(wù)是并行地在多個(gè)slave上跑AppiumPipeline任務(wù)饺蚊,借助于jenkins中的Multijob插件萍诱。
任務(wù)名稱(chēng):multijob
二、 使用docker搭建完整slave節(jié)點(diǎn)
2.1 使用docker構(gòu)建slave節(jié)點(diǎn)
在1.2節(jié)中看到的兩個(gè)slave節(jié)點(diǎn)是運(yùn)行起來(lái)的兩個(gè)docker container污呼,每個(gè)container 內(nèi)部通過(guò)adb connect ip:port的方式和一部真實(shí)的android手機(jī)連接裕坊。對(duì)應(yīng)的docker鏡像中包含以下內(nèi)容:
- android sdk
- nodejs
- npm
- appium
docker container通過(guò)web start的方式和主節(jié)點(diǎn)建立連接,成為主節(jié)點(diǎn)的slave節(jié)點(diǎn)燕酷。
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 準(zhǔn)備手機(jī)測(cè)試設(shè)備
由于docker container 本身沒(méi)有UI桌面支持籍凝,所以并沒(méi)有內(nèi)部create android emulator。不過(guò)即使有UI支持苗缩,能夠創(chuàng)建android虛擬機(jī)饵蒂,也不會(huì)去用:1)慢;2)不適合跑集成測(cè)試酱讶。所以退盯,最終的思路是連接外部手機(jī)設(shè)備。
手機(jī)無(wú)論是真機(jī)還是虛擬機(jī)泻肯,只要有獨(dú)立的ip地址渊迁,和slave節(jié)點(diǎn)處在同一個(gè)網(wǎng)絡(luò)內(nèi)能夠被訪(fǎng)問(wèn)就可以被用作測(cè)試機(jī)。我在測(cè)試時(shí)是在主機(jī)上開(kāi)啟了多個(gè)genymotion虛擬機(jī)灶挟,然后通過(guò)腳本給每個(gè)slave分配一個(gè)虛擬手機(jī)琉朽。
關(guān)于如何訪(fǎng)問(wèn)真機(jī)可以參照http://adbshell.com/commands/adb-connect .