1. 启动selenium hub
2. 启动selenium node(假设有2 node)
清单1. testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite1" parallel="methods" preserve-order="true" >
<test name="SeleGrid2">
<parameter name="seleniumHost" value="192.168.1.112"/>
<parameter name="seleniumPost" value="4444"/>
<parameter name="bs" value="*ie"/>
<classes>
<class name="server.TestDemo" />
<methods>
<include name="test022222" />
-->
</methods>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
清单2: TestDemo.java( Package name: server)
public class TestDemo {
public static WebDriver wd;
private static int sum = 0;
@BeforeClass
public void SetUp(){
long id = Thread.currentThread().getId();
System.out.println("Set Up: "+ Thread.currentThread().getStackTrace()[1].getMethodName()+", Thread# " + id);
}
@AfterClass
public void TearDown(){
long id = Thread.currentThread().getId();
System.out.println("Tear Down: "+ Thread.currentThread().getStackTrace()[1].getMethodName()+", Thread# " + id);
}
@BeforeTest
public void BeforeTest(){
long id = Thread.currentThread().getId();
System.out.println("Test Case: "+ Thread.currentThread().getStackTrace()[1].getMethodName()+", Thread# " + id);
}
@AfterTest
public void AfterTest(){
long id = Thread.currentThread().getId();
System.out.println("Test Case: "+ Thread.currentThread().getStackTrace()[1].getMethodName()+", Thread# " + id);
}
@Test(invocationCount = 15, threadPoolSize = 10)
@Parameters({"seleniumHost", "seleniumPost", "bs"})
public void test022222(String Host, String Port, String browser) throws MalformedURLException, InterruptedException, UnknownHostException{
sum ++;
System.out.println("sum = " + sum);
long id = Thread.currentThread().getId();
System.out.println("Test Case: "+ Thread.currentThread().getStackTrace()[1].getMethodName()+", Thread# " + id);
File file = new File("C:/Program Files (x86)/Internet Explorer/IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
//String hubURL = "http://192.168.1.112:4444/wd/hub";
String hubURL ="http://" +Host + ":" +Port + "/wd/hub" ;
System.out.println( "hubURL = " + hubURL);
DesiredCapabilities aDesiredCap = new DesiredCapabilities();
aDesiredCap.setBrowserName("internet explorer");
aDesiredCap.setVersion("");
aDesiredCap.setPlatform(Platform.WINDOWS);
aDesiredCap.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
//wd = new InternetExplorerDriver();
wd = new RemoteWebDriver(new URL(hubURL),aDesiredCap);
wd.get("http://www.qq.com");
Thread.sleep(3000);
System.out.println(wd.getCurrentUrl());
wd.quit();
}
}
运行testng.xml
Consle output:
[TestNG] Running:
E:\maven\SeleGrid2\testng_method.xml
Test Case: BeforeTest, Thread# 1
Set Up: SetUp, Thread# 11
sum = 1
Test Case: test022222, Thread# 16
hubURL = http://192.168.1.112:4444/wd/hub
sum = 2
Test Case: test022222, Thread# 15
hubURL = http://192.168.1.112:4444/wd/hub
sum = 3
Test Case: test022222, Thread# 20
hubURL = http://192.168.1.112:4444/wd/hub
sum = 4
Test Case: test022222, Thread# 12
hubURL = http://192.168.1.112:4444/wd/hub
sum = 5
Test Case: test022222, Thread# 13
hubURL = http://192.168.1.112:4444/wd/hub
sum = 6
Test Case: test022222, Thread# 19
hubURL = http://192.168.1.112:4444/wd/hub
sum = 7
Test Case: test022222, Thread# 18
hubURL = http://192.168.1.112:4444/wd/hub
sum = 8
Test Case: test022222, Thread# 14
hubURL = http://192.168.1.112:4444/wd/hub
sum = 9
Test Case: test022222, Thread# 21
hubURL = http://192.168.1.112:4444/wd/hub
sum = 10
Test Case: test022222, Thread# 17
hubURL = http://192.168.1.112:4444/wd/hub
http://www.qq.com/
sum = 11
Test Case: test022222, Thread# 18
hubURL = http://192.168.1.112:4444/wd/hub
http://www.qq.com/
sum = 12
Test Case: test022222, Thread# 14
hubURL = http://192.168.1.112:4444/wd/hub
http://www.qq.com/
sum = 13
Test Case: test022222, Thread# 12
hubURL = http://192.168.1.112:4444/wd/hub
http://www.qq.com/
sum = 14
Test Case: test022222, Thread# 21
hubURL = http://192.168.1.112:4444/wd/hub
http://www.qq.com/
sum = 15
Test Case: test022222, Thread# 20
hubURL = http://192.168.1.112:4444/wd/hub
http://www.qq.com/
http://www.qq.com/
http://www.qq.com/
http://www.qq.com/
http://www.qq.com/
http://www.qq.com/
http://www.qq.com/
http://www.qq.com/
http://www.qq.com/
http://www.qq.com/
Tear Down: TearDown, Thread# 11
Test Case: AfterTest, Thread# 1
===============================================
Suite1
Total tests run: 15, Failures: 1, Skips: 0
===============================================
总结现象: case运行invocationCount 次数,最大并发数threadPoolSize ,
这15次,被随机分配到2 node上面运行,但是存在这样的问题: 其中node运行用例的时间很慢,网页请求响应很慢,几乎等不到相应。卡死状态
假设只有一个node,运行15次,响应正常,执行用例15次,正常结束,可是这不是我们想要的并发场景。
selenium grid2真的适合性能测试吗?我突然有这样的困惑?望有人赐教,谢谢。