selenium TestNG 프로젝트에서 다중 브라우저 병렬 테스트를 수행하는 방법
34235 단어 xmlseleniumtestngautomation
본문에서 토론할 주제.
병렬 테스트란?
테스트라니요?xml?
pom에 의존항을 추가합니다.xml 파일
Java 클래스 만들기
테스트 환경을 만듭니다.xml 파일
데모 테스트 실행
스레드 수
병렬 테스트란?
병렬 테스트에서, 우리는 여러 브라우저에서 각기 다른 모듈이나 응용 프로그램을 병렬 테스트하는 것이지, 각각의 테스트가 아니다.
병행 테스트는 순서 테스트와 다르다. 순서 테스트에서 우리는 각각 다른 모듈이나 기능을 테스트한다.
이런 테스트 방법은 매우 시간을 소모한다.
병행 테스트는 집행 시간과 작업량을 줄이고 납품 시간을 단축시키는 데 도움이 된다.크로스 브라우저 테스트의 경우 특히 편리하다는 사실이 증명되었다.
따라서 이 문서에서는 TestNG를 사용하여 Selenium을 테스트합니다.xml 파일.병렬 테스트, 병렬 루틴 계수, 그리고 여러 브라우저에서 어떻게 병렬 테스트를 실행하는지 실제적으로 토론했다.
그럼 시작해 볼까요...
테스트라니요?xml?
selenium 프로젝트에서 TestNG를 테스트 프레임워크로 사용하면 테스트를 진행하십시오.xml 파일은TestNG의 프로필입니다. 이 파일을 사용하여 테스트에 실행 설정을 설정할 수 있습니다.
기본적으로 테스트야.xml 파일은TestNG 테스트의 실행을 제어하는 데 사용됩니다. 예를 들어 어떤 가방/클래스/방법을 포함해야 하는지, 어떤 가방/클래스/방법을 배제하지 말아야 하는지, 의존항을 설정해야 하는지 등입니다.
따라서pom에 의존항을 추가함으로써TestNG를 사용하여 간단한 테스트를 시작합니다.xml 파일.
pom에 의존항을 추가합니다.xml 파일
먼저 maven 프로젝트를 만들고 Testing으로 이름을 붙입니다.XML.다음 의존항을pom에 추가합니다.xml 파일.
우선selenium 의존항을 복사하여pom에 설정합니다.xml 파일.
https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java/3.141.59
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
TestNG 의존 항목을 복사하고pom에서 설정합니다.xml 파일.https://mvnrepository.com/artifact/org.testng/testng
<! — https://mvnrepository.com/artifact/org.testng/testng →
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.4.0</version>
<scope>test</scope>
</dependency>
Chrome과 Firefox 드라이버에 대한 WebDriver maven 의존도를 설정합니다.https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager/4.4.3
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>4.4.3</version>
</dependency>
우리가 해야 할 일은 모두 선결 조건이다. 우리는 준비가 되었다.Java 클래스 만들기
테스트라는 새 Java 클래스를 만듭니다.패키지 "테스트"의 자바입니다.
간단한 테스트는'www.ebay.com'으로 이동해 제목에 따라 사이트를 검증하고 내용을 검색한 다음enter 키를 눌러보자.
프로젝트에 코드를 붙여넣고 TestNG 테스트로 실행합니다.
package test;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import io.github.bonigarcia.wdm.WebDriverManager;
public class DarazSearchTestNG {
WebDriver driver = null;
static String expectedTitleebay ="Electronics, Cars, Fashion, Collectibles & More | eBay";
@BeforeTest
public void setUp(){
String browserName = "chrome";
if(browserName.equalsIgnoreCase("chrome")) {
//initializing and starting the Chromebrowser
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver();
}else if(browserName.equalsIgnoreCase("firefox")) {
//initializing and starting the Chromebrowser
WebDriverManager.firefoxdriver().setup();
driver = new FirefoxDriver();
}
}
@Test
public void test1() throws InterruptedException {
//maximize the window
driver.manage().window().maximize();
driver.get("https://www.ebay.com");
Thread.sleep(1000);
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitleebay);
driver.findElement(By.xpath("//*[@id=\"gh-ac\"]")).sendKeys("Mobile");
Thread.sleep(1000);
driver.findElement(By.xpath("//*[@id=\"gh-btn\"]")).sendKeys(Keys.RETURN);
Thread.sleep(1000);
}
@Test
public void test2() throws InterruptedException {
//maximize the window
driver.manage().window().maximize();
driver.get("https://www.ebay.com");
Thread.sleep(1000);
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitleebay);
driver.findElement(By.xpath("//*[@id=\"gh-ac\"]")).sendKeys("Mobile");
Thread.sleep(1000);
driver.findElement(By.xpath("//*[@id=\"gh-btn\"]")).sendKeys(Keys.RETURN);
Thread.sleep(1000);
}
@AfterTest
public void tearDown() {
driver.quit();
}
}
두 브라우저가 하나씩 열리고 제목을 확인하고 '모바일' 을 입력한 다음 enter 키를 누르는 것을 볼 수 있습니다.이 TestNG 클래스는 두 개의 주석을 포함하고 사이트는 한 브라우저에서 실행됩니다.이 예에서는 @BeforeTest에서 브라우저를 선택하는 코드를 작성했습니다. 필요하면 다른 클래스에서 호출할 수 있습니다.매개 변수에서 그것을 전달하고 변경할 수 있습니다.
따라서 같은 것을 시험적으로 운행해 봅시다.클래스에 매개 변수 값을 전달해서 xml 파일을 만듭니다.
테스트 환경을 만듭니다.xml 파일
시험을 보러 가다.java 클래스에서 오른쪽 단추를 누르면TestNG 부분으로 이동하고convert to TestNG 옵션을 누르십시오.너는 이런 창문을 볼 수 있을 것이다.
보시다시피 제 세트 이름은'Suite1'이고 테스트 이름은'Test1'입니다.
클래스 선택: 여기서 XML 문서를 만들 단계를 선택할 수 있습니다.(범주 또는 포장)
병렬 모드: 병렬 모드 (클래스/방법/테스트) 로 테스트를 실행할지 여부를 선택할 수 있습니다.
스레드 수: 테스트를 실행하려는 스레드 수를 선택합니다.
이제 클래스 레벨에서 XML 파일을 만듭니다.너는 우리의 테스트를 보게 될 것이다.bellow 같은 xml 파일입니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite1">
<test thread-count="5" name="Test1">
<classes>
<class name="test.test"/>
</classes>
</test> <!-- Test1 -->
</suite> <!-- Suite1 -->
브라우저가 열리고 작업이 수행되는 것을 볼 수 있습니다.현재 상황은 여러 브라우저 (크롬과 Firefox 포함) 에서 테스트를 병행하고 싶다면.데모 테스트 실행
테스트가 실행되기 전에 @BeforeTest를 다음과 같이 변경합니다. 브라우저Name을 테스트의 매개 변수로 전달하기 때문입니다.xml 파일
@Parameters("browserName")
@BeforeTest
public void setUp(String browserName){
if(browserName.equalsIgnoreCase("chrome")) {
//initializing and starting the Chromebrowser
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver();
}else if(browserName.equalsIgnoreCase("firefox")) {
//initializing and starting the Chromebrowser
WebDriverManager.firefoxdriver().setup();
driver = new FirefoxDriver();
}
}
테스트에서 여러 브라우저를 시작할 수 있기 때문에 주석을 삭제해야 합니다.xml 파일은 뒤에 있습니다.너는 테스트에서 약간의 변화를 하기만 하면 된다.xml 파일은 여러 브라우저에서 세트를 실행하고 실행합니다.
테스트 태그 내부에 다음 코드를 놓아서 브라우저 파라미터를 클래스에 전달합니다.여기서 크롬과 Firefox를 통과했습니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite1" parallel="tests" thread-count="2">
<test name="test on firefox">
<parameter name="browserName" value="firefox"></parameter>
<classes>
<class name="test.test"/>
</classes>
</test> <!-- Test1 -->
<test name="test on chrome">
<parameter name="browserName" value="chrome"></parameter>
<classes>
<class name="test.test"/>
</classes>
</test> <!-- Test1 -->
</suite> <!-- Suite1 -->
나는 브라우저마다 두 개의 탭을 써서 그것의 이름을 언급했다.두 브라우저가 동시에 실행되는 것을 볼 수 있습니다.이것이 바로 우리가 테스트를 사용하여 여러 브라우저를 병행하는 방법이다.xml 파일.
근데 내가 라인을 2로 준 거 알면이게 무슨 뜻이죠?
스레드 수
이것은 동시에 운행하는 테스트 수다.고속도로에서 몇 대의 차를 동시에 소유하고 싶은지 말하는 것과 같다.만약 네가 그들에게 세 개의 차선을 점용하라고 말한다면, 그들이 점용하는 차선은 세 개의 차선을 넘지 않지만, 모든 차량이 통과하는 시간이 더욱 길어질 것이다.만약 네가 다섯 개의 차선을 말한다면, 그것들은 단지 다섯 개의 차선을 차지하지만, 모든 차량이 통과하는 시간은 더욱 짧을 것이다.
그래서 여기서 내가 두 개의 브라우저에서만 이 테스트를 실행할 때, 나는 라인 수가 2라고 언급했다.그것이 어떻게 일을 하는지 우리에게 보여 주시오.더 잘 이해하기 위해서, 나는 테스트에 다른 Firefox 브라우저 탭을 추가했다.xml 파일로 루틴 수를 이해합니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite1" parallel="tests" thread-count="2">
<test name="test on firefox">
<parameter name="browserName" value="firefox"></parameter>
<classes>
<class name="test.test"/>
</classes>
</test> <!-- Test1 -->
<test name="test on chrome">
<parameter name="browserName" value="chrome"></parameter>
<classes>
<class name="test.test"/>
</classes>
</test> <!-- Test1 -->
<test name="test2 on firefox">
<parameter name="browserName" value="firefox"></parameter>
<classes>
<class name="test.test"/>
</classes>
</test> <!-- Test1 -->
</suite> <!-- Suite1 -->
먼저 이 코드를 *test () 방법의 끝에 놓고 컨트롤러에서 출력을 보십시오.테스트가 실행 중인 현재 스레드 ID를 표시합니다.System.out.println("This test is on: " + Thread.currentThread().getId());
다음 결과에서 두 개의 테스트가 서로 다른 라인에서 실행되는 것을 볼 수 있습니다.우선, 그것은 16라인을 사용하는 동시에 15라인에서 운행한다.세 번째 테스트에서 사용할 수 있는 라인을 검색해서 사용합니다.이 예에서, 라인 15는 무료이며, Firefox에서 테스트 2를 시작합니다.
This test is on: 15
This test is on: 16
This test is on: 15
이것이 바로 우리가 어떻게 스레드 수를 사용하고 효율을 극대화하는가이다.메모리에 불필요한 데이터가 발생하지 않기 때문에 더 높은 스레드 수를 사용하는 것을 권장합니다.여기에서, 나는 단지 하나의 클래스만 사용했지만, 당신은 여러 클래스를 사용할 수 있고, 우리는 tag 실행 호출 방법의 테스트를 사용할 수 있습니다.너는 어떤 주어진 방법을 사용할 수 있다.
<class name="class_name" />
<method>
<include name="MethodName"></include>
<exclude name="MethodName"></include>
</method>
본문에서 우리는 테스트를 사용했다.selenium 프로젝트에서 TestNG 테스트를 병행적으로 실행할 수 있도록 xml 파일입니다.우리는 그것들을 병렬적으로 실행하기 위해 여러 개의 브라우저를 사용했다.내 GitHub 프로젝트 참조here
𝑻𝑯𝑰𝑵𝑲 𝑸𝑼𝑨𝑳𝑰𝑻𝒀!
Reference
이 문제에 관하여(selenium TestNG 프로젝트에서 다중 브라우저 병렬 테스트를 수행하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mwickrmanayaka/how-to-do-multiple-browser-parallel-testing-in-a-selenium-testng-project-5010텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)