11.5、并行测试

设计思路

1、对框架进一步改进,使其实现并行测试,由于物理机资源有限,暂时只进行两台安卓设备并行测试。

对SelectDriver.java进行修改,增加设备udid的获取与自动设置。

以selenium-server-standalone为支撑,由selenium-grid分配测试。

利用testng进行xml传参,设置测试用例执行机的udid,实现并行测试。


2、windos下并行测试bat脚本编写

运行顺序Grid-》appiumA,appiumB

2.1、启动AppiumGrid服务

@echo off

echo 正在启动Appium grid服务,请稍等。

echo 启动完毕之后,请不要关闭此窗口。

echo 当你看到"Selenium Grid hub is up and running"则表示启动成功。

java -jar selenium-server-standalone-2.53.0.jar -role hub -port 4444

2.2、启动AppiumServer[A]

@echo off

echo 启动appium server中,请不要关闭此窗口。

appium -a 127.0.0.1 -p 4723 -bp 4724   --selendroid-port 8090 --chrom edriver-port 9515 --session-override --nodeconfig nodeconfig_1.json

2.3、启动AppiumServer[B]

@echo off

echo 启动appium server中,请不要关闭此窗口。

appium -a 127.0.0.1 -p 4725 -bp 4726   --selendroid-port 8091 --chromedriver-port 9516 --session-override --nodeconfig nodeconfig_2.json

2.4、nodeconfig_1.json

{
    "capabilities":
    [
        {
        "browserName": "zuk",
        "version":"6.0.1",
        "maxInstances": 1,
        "platform":"WINDOWS"
        }
    ],
    "configuration":
    {
        "cleanUpCycle":2000,
        "timeout":30000,
        "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
        "url":"http://127.0.0.1:4723/wd/hub",
        "host": "127.0.0.1",
        "port": 4723,
        "maxSession": 1,
        "register": true,
        "registerCycle": 5000,
        "hubPort": 4444,
        "hubHost": "127.0.0.1"
    }
}

2.5、nodeconfig_2.json

{
    "capabilities":
    [
        {
        "browserName": "redmi",
        "version":"6.0.1",
        "maxInstances": 1,
        "platform":"WINDOWS"
        }
    ],
    "configuration":
    {
        "cleanUpCycle":2000,
        "timeout":30000,
        "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
        "url":"http://127.0.0.1:4725/wd/hub",
        "host": "127.0.0.1",
        "port": 4725,
        "maxSession": 1,
        "register": true,
        "registerCycle": 5000,
        "hubPort": 4444,
        "hubHost": "127.0.0.1"
    }
}

3、linux下shell脚本编写

其中nodeconfig_1.json和nodeconfig_2.json内容不变

3.1、appiumServiceA.sh

*#!/bin/bash*

echo 启动appium server中,请不要关闭此窗口。

./appium-desktop-1.10.0-x86_64.AppImage -a 127.0.0.1 -p 4723 -bp 4724   --selendroid-port 8090 --chrom edriver-port 9515 --session-override --nodeconfig nodeconfig_1.json

3.2、appiumServiceB.sh

*#!/bin/bash*

echo 启动appium server中,请不要关闭此窗口。

./appium-desktop-1.10.0-x86_64.AppImage -a 127.0.0.1 -p 4725 -bp 4726   --selendroid-port 8091 --chromedriver-port 9516 --session-override --nodeconfig nodeconfig_2.json

3.3、gridService.sh

*#!/bin/bash*

echo 正在启动Appium grid服务,请稍等。

echo 启动完毕之后,请不要关闭此窗口。

echo 当你看到"Selenium Grid hub is up and running"则表示启动成功。

java -jar selenium-server-standalone-2.53.0.jar -role hub -port 4444

3.4、shuoming.txt,方便复制开启服务

./gridService.sh
./appiumServiceA.sh
./appiumServiceB.sh

4、快速上手

4.1、开启服务配置

由于windos和centos都安装的是桌面版appium,所以配置参数部分都在appium中配置,即配置脚本中4723和4725两个appium服务,并设置,

图中直接设置了node配置为nodeconfig_1.json和nodeconfig_2.json是因为通过脚本打开时Appium面板时自动读取到脚本中nodeconfig设置,故不需配置路径。

运行时,先启动Grid脚本,再启动appiumA,appiumB两个脚本,然后会自动打开桌面版appium两个窗口,选择保存好的4723和4725两个appium服务依次启动。必须是脚本启动面板,点击运行两个Appium服务才可以

即可进行测试。

说明:设备名称在nodeconfig_1.json和nodeconfig_2.json中配置

"browserName": "zuk",

"browserName": "redmi"

设备udid获取

adb devices

设备的udid在testng.xml中需要运行的测试用例下配置,如

<test name="管理员界面切换" preserve-order="true">
        <parameter name="udid" value="113a20777d33"/> 
        <parameter name="deviceName" value="redmi"/>
        <packages>
            <package name="com.xiaolanyun.appium.DataTest.testCase.RootNavigation" />
        </packages>
    </test>
    <test name="管理员登陆添加买家卖家账户并购买商品发货" preserve-order="true">
        <parameter name="udid" value="63a7b810"/>
        <parameter name="deviceName" value="zuk"/>
        <packages>
            <package name="com.xiaolanyun.appium.DataTest.testCase.RootAddUserAndBuyGoods" />
        </packages>
    </test>

4.2、测试用例编写顺序,格式参照Appium测试框架。


4.3、增加测试设备

相应的按照格式增加nodeconfig配置文件,按照格式编写Appium启动脚本,增加Appium面版服务配置,进行testng.xml中的测试用例设备udid分配。

results matching ""

    No results matching ""