.Selenium Grid 자습서: 필수 팁과 설정 방법

테스터나 기술적인 웹 개발자로서, 응용 프로그램을 버그와 성능을 위해 모든 브라우저와 운영 체제에서 테스트해야 합니다. 다양한 브라우저뿐만 아니라, 서로 다른 버전들을 가지고 있을 때, 무거운 작업이 되기 마련입니다.

무엇보다도, 이러한 프로세스들은 가능한 가장 自动화되어야 합니다. 큰 기업에서는 개별적으로 테스트 케이스와 파이프라인을 만들어 낼 수 있는 것은 비용이 많이 들며, 가장 명백하고, 가장 마음에 들지 않은 방법입니다. 이 때 셀레니움 그리드, 광범위하게 사용되는 서버 기반의 테스트 자동화 도구가 그림에 들어오게 됩니다.

셀레니움 그리드는 무엇인가?

셀레니움 그리드는 하나 이상의 브라우저와 환경에서 병렬하고 지속적으로 테스트하는 데 사용되는 도구입니다. 이를 통해 서로 다른 머신들에서 서로 다른 브라우저와 운영 체제에 대해 동시에 테스트를 실행할 수 있습니다. 셀레니움 그리드의 목적은 테스트 실행의 부하를 여러 머신으로 분산시키는 것으로, 많은 수의 테스트를 빠르게 실행할 수 있도록 합니다.

셀레니움 그리드의 아키텍처는 주로 허브와 많은 노드로 구성되어 있습니다. 허브는 테스트 요청을 보내는 중앙 집중점 역할을 합니다. 노드는 테스트가 실행되는 머신(물리적인 것 또는 가상의 것)입니다. 허브는 테스트 스크립트에 지정된 원하는 브라우저와 플랫폼 구성에 따라 적절한 노드로 테스트 실행 요청을 라우팅합니다.

Selenium Grid은 다양한 구성을 지원하며 분산 테스트 중 paralle execution과 선택적인 브라우저 능력 테스트를 포함합니다. 여러 브라우저 및 Plateform에 대한 호환性和 기능성을 확인하는 데 자동 테스트에서 일반적으로 사용되며,

Selenium Grid의 이해를 深め기 위해,

이를 왜 필요하며 이해하는 것에 대해 详しく 다룹니다. Selenium Suites에 포함되어 있는 것뿐만 아니라, Selenium WebDriver과 Selenium IDE와 같은 다른 소프트웨어와 기능을 포함하고 있으며, Chrome, Microsoft Edge, Opera, Safari 등의 다양한 버전의 브라우저를 지원할 수 있음을 보았습니다. 그 것 외에도, 이러한 브라우저를 다양한 운영 시스템에서 실행할 수 있는 것으로 엔드 투 엔드 테스트 환경을 생성할 수 있습니다. 오픈 소스이기 때문에 무료로 사용할 수 있으며, 가장 빠르게 갱신되고, 정보를 完全히 사용할 수 있습니다.

Selenium Grid 아키텍처

Selenium Grid의 구성을 이해하기 위해서는 Hub과 Node 모델에 대해 알아야 합니다. Hub과 다양한 노드들을 연결하여 다양한 omachine, browser, 그리고 그들의 다양한 버전에서 실행할 수 있습니다.

Hub는 Selenium 그리드의 센터적인 포인트로서 테스트 명령을 노드로 route 시킨다. 또한 클라이언트から 테스트 리퀘스트를 받고 필요한 노드로 이를 Rollover 한다. Hub은 결정적인 운영 체제와 浏览器的 完全한 테스트 browsers 및 그들의 버전과 함께 单个 기기에서 시작되며, 이를 다양한 기기에서 적절한 운영 체제를 실행하도록 설정할 수 있다.

Selenium은 구성 하위 기능을 다른 ARCHITECTURE에 정의하고 있으며 이를 자세하게 웹사이트에 설명하고 있다. 이는 Selenium을 完全하게 분산형태로 실행시키는 데에 유용할 수 있다. routing, sessions, distributors가 정의 되어 있다. 이제 SeleniumGrid에 대한 적절한 배경 지식이 충분히 있다면,

Selenium Grid을 설치하고 사용하는 4가지 간단한 단계가 있다.

단계 1

단계 1에서는 presteps를 quickly.

まず, latest version of Java을 실행하는지 확인해야만 한다. 이것은 공식 웹사이트에서 다운로드 할 수 있다.

그리고, 우리가 테스트 하고자 하는 모든 浏覽器을 install all the needed browsers 해야 한다. 이 에러는 Chrome 浏覽器의 버전 123을 사용하여 Chrome 浏覽器에 アクセス하고자 하며, 浏覽器 드라이버와 浏覽器의 버전이 같아야 한다. 이를 실행하기 전에 읽어야만 하며, 이를 실행하기 전에 읽어야만 한다. finally, 저는 Eclipse IDE를 사용하고자 하며, 이 데모는 Java에 기반하는 것이기 때문에이 IDE는 공식 Eclipse 웹사이트에서 다운로드 할 수 있다.

마지막 필수 조건으로, 우리는 공식 Selenium 웹사이트에서 최신 Selenium Grid 서버를 다운로드해야 합니다.

스텝 2

이제 스텝 2부터 시작합시다. 스텝 2에서는 새 폴더를 생성하고 이 데모에 사용할 Selenium 서버와 Chrome 드라이버를 붙여넣었습니다.

Java

 

package Selenium_test1 ;
	import java.net.MalformedURLException;

	public class test1{

	String hubUrl ="https://10.20.31.20";
	String url ="https://www.world.co/search";
	WebDriver driver;
	public void setupGrid()
	{
	DesiredCapabilities ds= new DesiredCapabilities();
	ds.setCapability("browserName", "Chrome");
	try{
	driver = new RemoteWebDriver( new URL(hubUrl),ds);
	} catch (malformedURLException e){
	e.printSTackTrace();
	}
	driver.get(url);
	}
	public void pageTitleValidation(){
	String title = driver.getTitle();
	System.out.println("page title :" +title);
	}
	public static void main(String[] args)
	{
	test1 obj = new test1();
	obj.setupGrid();
	obj.pageTitleValidation();
	}
	}

스텝 3

스텝 3에서는 Eclipse ID를 열고 WebDriver를 사용하여 테스트 케이스를 작성했습니다. 다른 사람들의 Maven 프로젝트를 체크 아웃할 것입니다. 그 밖에도 특정 폴더에서 사용할 Chrome 드라이버를 붙여넣어야 합니다. 이번에 사용하는 Selenium 서버의 버전은 나는 이제 따라할 스텝으로 프로젝트 경로에 추가할 것입니다. 나는 프로젝트 이름을 내려갈 수 있고, 오른쪽 클릭하고 빌드 경로로 가 수 있습니다. 여기서 나는 빌드 경로를 구성할 수 있는 것을 내려갈 수 있고, 우측에 외부 JAR 추가라는 옵션이 있습니다. 여기서 나는 사용하는 Selenium 서버를 추가할 수 있습니다.

적용(apply)을 클릭하고 닫은 후에는 스텝 4로 이동합시다.

스텝 4

스텝 4에서는 스텝 2에서 만든 폴더로 돌아왔습니다. 여기서는 명령 프롬프트를 사용할 것입니다.

이렇게 폴더를 찾기가 매우 쉽고 간단한 과정입니다. 이것은 단지 하나의 기계와 하나의 브라우저로 Selenium Edge Sandaland 모드를 사용할 것입니다.

이제 서버가 시작되고 있어요. 필요한 依存성을 하나하나 추가하고 있어서 과정이 완료되고 있어요. 우리에게 特定한 주소를 주었어요. 이제 저는 이 주소를 복사하고 단계 3로 돌아가요. 여기에서는 허브 URL에 이 주소를 붙여넣고, 저의 코드가 완료되면 파일로 이동하여 이 어플리케이션을 실행해 봐요. 

아ight, 어제 어플리케이션이 실행되고 있는 것을 보면, 저는 Chrome 브라우저로 이동하고, 명령 프롬pt로 주어진 주소를 붙여넣어 봐요. 이것은 저의 Selenium 주소이고, 세션이 실행되고 있는 것을 볼 수 있어요. 개요에서는 Chrome의 전형적인 모양의 세션이 생성되었다고 볼 수 있고, 세션에서는 기본 TEST 사례가 활성화되어 있어요. 웹 페이지도 볼 수 있어요. 

그리드 역할

그리드는 여섯 가지 다른 コンポーネン트로 구성되어 있어요. 이러한 composte는 여러 가지 방법으로 여러 台동안에 자동화된 테스트를 배치할 수 있는 유atility을 제공해 줍니다. 그리드 components를 독립적으로 시작하거나 허브로 그룹화하거나 一台에서 실행할 수 있습니다.

1. 独立的

모든 Grid components를 통합하고 있는 独立的는 통합적인 개념으로 동작합니다. 独立的 모드를 시작하면 한 명령어로 完全に 동작하는 Grid를 轻松하게 배치할 수 있습니다. 중요한 것은 独立的는 一台에서만 실행할 수 있다는 것입니다.

Java

 

java -jar selenium-server-<version>.jar standalone

2. 허브와 노드

허브와 노드는 가장 인기있고 주로 사용되는 요소들입니다. 여러 台에서 다양한 운영체제와 BROWSER 버전을 갖추고자 하는 사용자들에게 이러한 요소들은 유용합니다. 이러한 이유로 여러 환경에서 webdriver 테스트를 한 곳에서 실행할 수 있는 단일 入口를 얻을 수 있습니다.

Router, Distributor, Event bus, Session Queue로 구성되어 있습니다:

Java

 

java -jar selenium-server-<version>.jar hub

node는 시스템 경로에서 여러 가용 드라이버를 감지합니다.

Java

 

java -jar selenium-server-<version>.jar node

요약

결론적으로 Selenium Grid는 hub-node 아키텍처를 사용하여 다양한 브라우저와 플랫폼에서 다중 테스트를 병렬적으로 실행할 수 있도록 도와줍니다. hub는 테스트를 보관하는 중앙 저장소 역할을 하면서, node는 Selenium 인스턴스로서 hub의 지시에 따라 테스트를 실행합니다. Selenium Grid를 설치하려면 Selenium RC 테스트를 실행하는 데 사용되는 동일한 파일인 Selenium Server jar 파일을 다운로드합니다. hub가 작동 중인지 여부를 확인하려면 명령 프롬프트나 웹 브라우저를 사용할 수 있습니다. Grid에서 테스트 스크립트를 실행하려면 DesiredCapabilitiesRemoteWebDriver 객체를 사용해야 합니다. DesiredCapabilities는 자동화할 브라우저 유형과 운영 체제를 구성하고, RemoteWebDriver는 테스트를 실행할 node 또는 기기를 지정합니다.

Source:
https://dzone.com/articles/selenium-grid-tutorial