본문으로 건너뛰기
SDETRole
SDETRole

용어집 · UI 자동화

Selenium Grid

다른 이름: 셀레니움 그리드, Selenium Grid 4, RemoteWebDriver, 셀레니움 그리드 4

정의

Selenium 테스트를 원격 머신의 브라우저로 보내 여러 브라우저와 OS에서 병렬로 실행할 수 있게 해 주는 서버입니다.

Selenium Grid를 사용하면 테스트가 브라우저를 다른 곳에서 생성할 수 있습니다. 테스트는 RemoteWebDriver를 사용해 Grid의 URL을 가리키고, Grid는 조건에 맞는 브라우저(예: Linux의 Chrome)를 가진 노드를 찾아 그곳에서 세션을 시작한 뒤 모든 명령을 중계합니다. 여러 노드가 동시에 세션을 처리할 수 있으므로, Grid는 Selenium 테스트 스위트를 병렬로, 그리고 여러 브라우저에서 실행하는 전통적인 방법입니다.

예시

공식 Docker 이미지로 단일 머신 Grid를 시작합니다.

docker run -d -p 4444:4444 --shm-size="2g" selenium/standalone-chrome

그다음 테스트에서 연결합니다(Selenium 4, Java 21).

ChromeOptions options = new ChromeOptions();
WebDriver driver = new RemoteWebDriver(
    URI.create("http://localhost:4444").toURL(), options);

driver.get("https://example.com");

브라우저 옵션은 Grid가 노드와 대조하는 “capabilities”입니다. http://localhost:4444의 Grid UI에서 노드, 슬롯, 실행 중인 세션을 볼 수 있습니다.

구조 (Grid 4)

Selenium Grid 4는 세 가지 모드로 실행할 수 있습니다.

  • Standalone: 모든 것이 하나의 프로세스에서 실행되며, 로컬 사용과 작은 CI 작업에 적합합니다.
  • 허브와 노드(Hub and node): 하나의 허브가 세션을 받고 여러 노드가 브라우저를 실행합니다. java -jar selenium-server-<version>.jar hub와 ... node로 시작합니다.
  • 완전 분산(Fully distributed): 허브 내부 구성 요소(Router, Distributor, Session Map, New Session Queue, Event Bus)가 별도 프로세스로 실행되며, Kubernetes 환경에 적합합니다.

Grid 4에서는 예전의 /wd/hub 경로가 더 이상 필요하지 않지만, 여전히 받아들이기는 합니다.

흔한 실수

  • Grid가 테스트를 병렬로 만들어 줄 거라 기대하기. Grid는 브라우저를 제공할 뿐입니다. 테스트 러너(JUnit 5, TestNG)를 동시 실행하도록 따로 설정해야 하고, 테스트는 서로 격리되어 있어야 합니다.
  • 슬롯보다 많은 스레드. 초과한 세션 요청은 대기열에 쌓이고 타임아웃될 수 있습니다. 러너의 병렬 수를 사용 가능한 슬롯 수에 맞추십시오.
  • 드라이버를 종료하지 않기. driver.quit()이 빠지면 세션이 타임아웃될 때까지 슬롯을 차지합니다.
  • Docker의 작은 공유 메모리. 컨테이너 기본 /dev/shm에서는 Chrome이 비정상 종료되므로 --shm-size 플래그가 필요합니다.

호스팅형 클라우드 서비스도 Grid와 같은 WebDriver 엔드포인트를 제공하므로 RemoteWebDriver 코드는 동일하며, URL과 capabilities만 바뀝니다.

SDETRole 전체에서 검색할 내용을 입력하세요.

Pagefind 전문 검색 · 브라우저에서 실행됩니다 검색 페이지 열기 →