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真的適合性能測試嗎?我突然有這樣的困惑?望有人賜教,謝謝。