분산 Selenium 테스트를위한 Selenium Grid 설정



이 블로그는 Selenium Grid의 필요성과 그 이점을 이해하는 데 도움이 될 것입니다. 허브 및 노드를 구성하여 첫 번째 Selenium Grid를 설정하려면 읽어보십시오.

이 Selenium 튜토리얼 시리즈의 다른 블로그에서는 테스트 케이스를 생성하고 해당 테스트 케이스를 순차적으로 병렬로 실행하는 방법에 대해 설명합니다. 따라서 마지막으로 논의 할 기술은 원격 시스템에서 테스트 케이스를 실행하는 것입니다. Selenium Grid는 원격 시스템 / 호스트에서 이러한 테스트를 실행하는 데 사용할 수 있습니다. 따라서 이것이 오늘 블로그에서 논의되는 주제입니다.

  1. Selenium Grid를 사용하는 이유와시기
  2. Selenium Grid는 무엇입니까?
  3. 셀레늄 그리드 1 대 셀레늄 그리드 2
  4. 셀레늄 그리드의 아키텍처
  5. 셀레늄 그리드 구축

Selenium Grid를 사용하는 이유와시기

오늘날 사용되는 웹 브라우저가 너무 많습니다. 사용자는이 블로그를 읽기 위해 Chrome 또는 Firefox, Safari 또는 Opera 또는 Internet Explorer를 사용할 수 있습니다. 다른 버전의 브라우저를 사용하고있을 수 있습니다. 또한 Windows, Mac 또는 Ubuntu 또는 기타 Linux 배포판과 같은 모든 OS에서 이러한 브라우저를 실행할 수 있습니다.





사용자가 인터넷에서 중요한 것을 본다면 어떨까요? 귀하의 비즈니스에 중요한 것. 사용자 및 / 또는 고객이 최고의 사용자 경험을 얻을 수 있도록 추가 작업 (웹 앱 테스트)을 수행하고 싶지 않습니까? 그럴 거죠?

글쎄요!



그러나 문제는 그것이 얼마나 타당할까요? 가능한 모든 OS와 사용 가능한 모든 웹 브라우저에서 웹 앱을 테스트하는 데 시간을 할애 할 수 있습니까? 흠, 그것은 약간의 도전처럼 들립니다. 이것이 Selenium Grid가 청구서에 부합하고 도움이되는 곳입니다.시간과 에너지를 절약하십시오.

이 외에도 로컬 시스템을 사용하여 Selenium 그리드 인프라를 설정할 수 있습니까? 필요한 모든 브라우저와 운영 체제로 그리드를 유지하는 것은 어려운 일입니다. 이를 위해 셀레늄 자동화 스크립트를 실행하기 위해 액세스 할 수있는 온라인 Selenium Grid를 제공하는 여러 온라인 플랫폼이 있습니다. 예를 들어 다음을 사용할 수 있습니다. LambdaTest . 테스트를 실행하고 브라우저 간 테스트를 진정으로 자동화 할 수있는 2000 개 이상의 브라우저 환경이 있습니다.

셀레늄 그리드 란?

Selenium Grid는 Selenium 도구 모음의 또 다른 중요한 도구입니다. Grid는 여러 웹 브라우저에서 동시에 실행되거나 다른 운영 체제에서 시작되거나 다른 컴퓨터에서 호스팅 될 수도있는 WebDriver 테스트 / RC 테스트를 조정할 수 있습니다.



클래스 싱글 톤을 만드는 방법

그리드 작업-셀레늄 그리드그래서 어떻게 작동합니까? 그리드는 마스터 역할을하는 하나의 허브와 슬레이브 역할을하는 하나 이상의 노드가있는 허브-노드 아키텍처를 사용합니다.

이것이 의미하는 바는 실행해야하는 총 100 개의 작업 / 테스트가있는 경우 5 개의 시스템에서 동시에 테스트를 실행할 수 있으며 각 시스템은 20 개의 테스트를 실행합니다. 실제로 이러한 테스트는 운영 체제와 브라우저의 다양한 조합에서 실행할 수 있습니다. 여기에있는 각 컴퓨터는 다른 OS 일 수 있으며 각 OS 내에서 테스트는 다른 브라우저에서 수행 할 수 있습니다.

이 작업은 테스트 실행에 많은 시간을 쉽게 절약 할 수 있습니다. 위의 예를 고려하면 실행 시간을 단일 머신에서 테스트를 실행하는 데 걸리는 총 시간의 약 1/5로 줄일 수 있습니다.

이전 블로그에서 기억할 수 있다면 Grid가 Selenium 프로젝트의 시작 이래 즉 Selenium v1 이후로 셀레늄 프로젝트의 일부 였다는 것을 셀 수없이 많이 언급했습니다. Selenium Grid는 Selenium v2의 일부였으며 현재는 Selenium v3의 일부입니다. Selenium Grid의 v2와 v3에는 큰 차이가 없습니다. 그러나 v1은 비교적 많은 차이가 있습니다. 그래서v1과 v2의 차이점을 이해합니다.

셀레늄 그리드 1 대 셀레늄 그리드 2

Grid v1.0과 v2.0의 근본적인 차이점은 Grid 1에서 RC를 사용했고 Grid 2에서 WebDriver를 사용했다는 점입니다. 아래 표에서는 차이점을 자세히 설명합니다.

그리드 1 그리드 2
Apache Ant를 설치해야합니다.Apache Ant 설치가 필요하지 않습니다.
자체 리모컨 있음 (RC 서버와 다름)Selenium Server jar 파일과 함께 번들로 제공
Selenium RC 명령 만 지원Selenium RC 및 WebDriver 스크립트 모두 지원
원격 제어 당 하나의 브라우저 만 자동화 할 수 있습니다.원격 제어 당 최대 5 개의 브라우저를 자동화 할 수 있습니다.


이제 두 버전의 근본적인 차이점을 배웠으므로 Selenium Grid에 대해 자세히 살펴 보겠습니다..

셀레늄 그리드의 아키텍처

앞서 언급했듯이 그리드는 하나의 허브와 여러 노드를 기반으로 작동합니다. 그러나 허브와 노드는 무엇이며 어떤 역할을합니까?

허브

모든 그리드 설정에서 허브는 하나만있을 수 있으며 해당 그리드 설정의 중심점이됩니다. 실행해야하는 모든 테스트를 여기에로드해야합니다. 여기에로드되는 테스트에도 불구하고 노드에서만 실행됩니다. 모든 호스트 머신을 허브로 구성 할 수 있으며 다른 호스트에서 테스트 실행 활동을 조정합니다.

이를 위해서는 먼저 허브를 구성한 다음 허브에 등록 할 다른 노드를 만들어야합니다. 너무 많은 세부 사항을 다루기 전에 허브를 구성하는 명령을 보여 드리겠습니다.

허브 구성

먼저 Seleniumhq 웹 사이트에서 Selenium 서버 JAR 파일을 다운로드해야합니다. 링크는 여기 . 또한 Java가 시스템에 설치되어 있고 환경 변수가 설정되어 있는지 확인해야합니다.

jar 파일을 다운로드 한 후에는 적절한 디렉토리에 배치해야합니다. 내 편의를 위해 다운로드하여 C 드라이브의 Selenium 폴더에 저장했습니다. 또한 jar 파일을 다운로드하여 다른 모든 노드의 유사한 디렉토리에 배치하는 것이 좋습니다.

허브를 구성하려면 Windows 명령 프롬프트에서 명령을 실행해야합니다. 명령은 아래 스 니펫에 있습니다.

C : UsersVardhan> cd .. C : 사용자> cd .. C :> cd Selenium C : Selenium> java -jar selenium-server-standalone-3.4.0.jar -role hub

그만큼 selenium-server-standalone-3.4.0.jar 다운로드 한 jar 파일의 이름입니다.
그만큼 -역할 플래그는 특정 호스트 머신을 허브로 설정하는 데 사용됩니다. Enter 키를 누르면 화면에 아래 출력이 표시됩니다.

위의 스크린 샷을 보지 못한 경우 다시 확인하십시오. ‘ -노드는 http://192.168.0.11:4444/grid/register에 등록해야합니다. ‘. 이제 허브가 구성되었으므로 노드를 설정하고이 허브에 연결해야합니다.

192.168.0.11은 허브의 IP 주소이며 모든 노드는이 IP 주소에 연결해야합니다. 4444는 Selenium Grid가 호스팅되고 요청을 수신하는 기본 포트 번호입니다. 다른 서비스가 포트 4444에서 실행 중이고 Selenium Grid가 다른 포트에서 호스팅되도록하려면 다음을 지정하여 수행 할 수 있습니다. -포트 플래그 뒤에 포트 번호가 있습니다.

노드

노드는 테스트가 실행되는 호스트 시스템입니다. 이러한 테스트는 허브에서 시작됩니다. 허브는 원격 시스템 또는 허브 자체가있는 동일한 시스템에서 하나 이상의 노드를 시작할 수 있습니다. 각 노드에서 서로 다른 운영 체제를 부팅 할 수 있으며 서로 다른 운영 체제에서 동일한 브라우저의 서로 다른 버전 또는 서로 다른 브라우저를 시작할 수 있습니다.

노드 구성

허브와 유사하게 먼저 Node 머신에서 Jar 파일을 다운로드하고 편의를 위해 C 드라이브 또는 기타 공통 디렉토리에 배치해야합니다. 그런 다음 Windows 명령 프롬프트에서 아래 명령을 실행할 수 있습니다. 허브와 동일한 시스템에서 노드도 시작하는 경우 다른 명령 프롬프트를 시작하여 명령을 실행해야합니다.

java -Dwebdriver.chrome.driver = E : chromedriver.exe -jar selenium-server-standalone-3.4.0.jar-역할 노드 -hub http://192.168.0.11:4444/grid/register

허브를 시작하는 데 필요한 명령과 비교하여이 명령에는 몇 가지 차이점이 있습니다.
-Dwebdriver.chrome.driver = E : chromedriver.exe 브라우저 드라이버의 경로를 설정하는 데 사용됩니다. WebDriver 코드에서 브라우저 드라이버의 경로를 설정하는 것과 유사하게 여기에서 지정하여 노드가 테스트를 수행 할 수 있도록합니다. Selenium v3부터 Firefox 용 드라이버 브라우저를 다운로드해야합니다. Firefox 용 브라우저 드라이버는 Gecko 드라이버입니다. 그러나 버전 1 및 2에서는 Firefox 이외의 모든 브라우저에 대해 브라우저 드라이버를 설정해야합니다.
-역할 노드 플래그는 특정 호스트 시스템을 노드로 설정하는 데 사용됩니다.
-허브 http://192.168.0.11:4444/grid/register 허브의 IP 주소를 사용하여 허브에 연결하도록 Node에 알립니다. 주목해야 할 중요한 점은 허브와 동일한 머신에서 노드를 시작하는 경우 ' -허브 http : // localhost : 4444 / grid / register '허브의 IP 주소 대신 명령에서.

Enter 키를 누르면 명령 프롬프트에 다음과 같은 출력이 표시됩니다.

이제 노드는 허브에 연결되었을 것입니다. 허브를 시작하는 데 사용 된 명령 프롬프트로 돌아가서 다음 메시지가 표시되는지 확인할 수 있습니다.‘ 노드 등록 http://192.168.0.11:5555 ‘.

IP 주소와 포트 번호는 Node.js의 IP 주소와 포트 번호입니다. 허브와 동일한 머신에 노드가 있으므로 노드에 사용되는 포트는 5555입니다. 다른 머신에서 시작하면 기본 포트가 사용됩니다.

Hub의 컴퓨터에서 다음 URL을 시작하면 허브에 연결된 노드의 상태가 표시됩니다. 아래 스크린 샷에서 강조 표시된 부분을 참조하십시오.

이제 Selenium Grid가 구성되었으므로 Nodes에서 테스트 스크립트 실행을 진행할 수 있습니다. 허브에서 스크립트를 실행해야하며 노드에서 실행될 것임을 다시 강조하겠습니다. 테스트를 실행하는 데 사용되는 스크립트는 WebDriver와 유사합니다.테스트.

셀레늄 그리드 구축

Eclipse IDE에서 스크립트를 실행했습니다. 이 스크립트의 실행은 두 가지 중요한 라이브러리 패키지에 의존합니다. 그들은 DesiredCapabilities 개체 및 RemoteWebDriver 목적.

DesiredCapabilities는 Node.js의 브라우저 유형과 OS를 설정하는 데 사용됩니다. DesiredCapabilities 객체를 가져 오려면 아래 코드를 사용하십시오.

import org.openqa.selenium.remote.DesiredCapabilities

RemoteWebDriver는 테스트를 실행할 노드를 선택하는 데 사용됩니다. RemoteWebDriver 개체를 가져 오려면 아래 코드 줄을 사용하십시오.

import java.net.MalformedURLException import java.net.URL import org.openqa.selenium.remote.RemoteWebDriver

아래 코드 스 니펫에 표시된대로 스크립트에 대한 TestNG 주석 패키지와 함께이 두 패키지를 가져 왔습니다. 자세한 보고서가 생성 될 TestNG 테스트로 실행했기 때문에 TestNG 주석을 가져 왔습니다. 코드에 대해 동일한 패키지 세트를 가져 오는 것이 좋습니다.

Selenium Hub 콘솔에있는 브라우저의 로고를 조작하면 다음과 같은 세부 정보를 얻을 수 있습니다. browserName 그리고 플랫폼 자동화하려는 노드의. 이 이미지는 또한 Node.js에서 열 수있는 브라우저 인스턴스 수를 나타냅니다. 최대 5 개의 크롬, 5 개의 Firefox 및 1 개의 Internet Explorer 인스턴스를 구성 할 수 있습니다. 이러한 세부 정보는 아래 스크린 샷에 나와 있습니다.

아래 스 니펫의 코드를 사용하여 첫 번째 그리드를 설정할 수 있습니다.

package GridTest import org.testng.annotations.AfterTest import org.testng.annotations.BeforeTest import org.testng.annotations.Test import java.net.MalformedURLException import java.net.URL import org.junit.Assert import org.openqa.selenium .Platform import org.openqa.selenium.WebDriver import org.openqa.selenium.remote.DesiredCapabilities import org.openqa.selenium.remote.RemoteWebDriver public class TestGrid {static WebDriver driver static String nodeUrl @BeforeTest public void setup () throws MalformedURLException { nodeUrl = 'http://192.168.0.11:5555/wd/hub'DesiredCapabilities capabilities = DesiredCapabilities.chrome () capabilities.setBrowserName ( 'chrome') capabilities.setPlatform (Platform.WINDOWS) 드라이버 = new RemoteWebDriver (new URL (nodeUrl) ), 기능)} @Test public void simpleTest () Edureka ', driver.getTitle ()) @AfterTest public void afterTest () {driver.quit ()}}

전체 테스트 스크립트를 세 개의 테스트 주석으로 나누었습니다. @BeforeTest, @Test 및 @AfterTest. @BeforeTest에서는 DesiredCapablities 및 RemoteWebDriver 개체를 사용하여 Node.js를 구성했습니다. @Test에서 Node에게 Edureka의 홈페이지로 이동하여 페이지 제목을 주장하도록 요청했습니다. @AfterTest에서 Node에게 브라우저 인스턴스를 종료하도록 요청했습니다.

테스트가 실행을 통과하면 아래 출력이 표시됩니다.

2017 년 5 월 18 일 오후 3:09:07 org.openqa.selenium.remote.ProtocolHandshake createSession 정보 : 탐지 된 방언 : OSS 통과 : simpleTest ==================== ========================== 기본 테스트 실행 : 1, 실패 : 0, 건너 뛰기 : 0 ========== ================================================ ================================= 기본 제품군 실행 된 총 테스트 : 1, 실패 : 0, 건너 뛰기 : 0 = ============================================

이것은 TestNG 테스트로 실행되므로 아래 스크린 샷과 유사한 자세한 테스트 보고서를 얻을 수 있습니다.

TestNG가 무엇이며 테스트 주석을 사용하는 방법을 모르는 경우 사용 방법에 대한 내 블로그를 읽어보십시오. TestNG가 포함 된 Selenium WebDriver 이 Selenium 튜토리얼 시리즈에서.

아래 비디오를 통해 Selenium Grid를 구축하는 방법에 대한 데모를 볼 수 있습니다. 비디오를 제공하는 강사는이 블로그에서 설명한 것과 동일한 개념을 설명합니다.

초보자를위한 셀레늄 그리드 튜토리얼 | 셀레늄 튜토리얼 | Edureka

이제이 Selenium Grid 블로그의 끝으로 이동합니다. 이 블로그 시리즈의 코드 / 내용에 대한 의심이나 문제가있는 경우 아래 댓글 섹션에 남겨 주시면 빠른 시일 내에 문제를 해결하겠습니다.

Selenium을 배우고 테스트 도메인에서 경력을 쌓고 싶다면 대화 형 라이브 온라인을 확인하십시오. 여기에는 학습 기간 내내 안내하는 연중 무휴 지원이 함께 제공됩니다.

질문이 있으십니까? 의견란에 언급 해 주시면 연락 드리겠습니다.