Docker 컨테이너 + Selenium Grid 환경 셋팅

정태경·2022년 6월 5일
0
post-thumbnail

개요

UI 자동화 테스트 케이스가 늘어남에 따라 테스트 실행 속도는 점차 저하되곤 한다. 10개의 테스트 케이스가 있다고 가정하면 하나의 구동 환경에서 실행하는 것이 문제 되진 않을 것이다.

그러나 테스트 케이스가 100개 혹은 500개가 된다고 가정해 보면 하나의 구동 환경에서 UI 자동화 테스트를 실행하기엔 여러 단점이 존재할 것이다. 이러한 단점을 해결하기 위해 Selenium 에서는 Selenium Grid 라는 솔루션을 제공하고 있다.

Selenium Grid란?

Selenium Grid는 HUB 와 NODE 형태로 구성되어 있으며 다양한 브라우저 인스턴스를 생성하여 Chrome, Edge, Firefox 브라우저에서 테스트 케이스의 반복, 병렬 실행을 가능하게끔 해준다.

즉, 500개의 테스트 케이스가 있다고 가정해 보면 500개의 테스트 케이스를 브라우저별로 실행해 볼 수도 있고 브라우저 인스턴스를 여러 개 생성하여 100개는 A 브라우저, 300개는 B 브라우저, 나머지 100개는 C 브라우저에서 나누어 병렬 실행도 가능하게 해준다.

따라서 병렬 실행을 통해 테스트 실행 속도를 줄일 수 있고 브라우저 실행 환경(노드)을 보다 쉽게 관리하고 제어할 수 있다는 장점이 있다.

Docker Selenium Grid 환경 셋팅

(아래 내용은 기본적인 Docker 사용 방법과 아키텍처는 이해하고 있다는 가정하에 작성된 글이다.)
Docker를 활용하면 보다 편리하게 Selenium Grid 환경 세팅이 가능하다. 하나하나 차근차근 세팅해 보도록 하자.

Docker 네트워크 구성

먼저 Selenium Grid는 Hub 와 Node로 구성되어 있다고 서술한 바 있다. Hub와 Node는 같은 네트워크 상에 존재해야 하므로 Docker 네트워크를 세팅해 보도록 하자. (Selnium Grid에 대한 환경 세팅 방법은 Selnium Github에 매우 잘 가이드 되어있다.

네트워크 생성

아래 명령어를 통해 grid라는 도커 네트워크를 생성해 준다.

$ docker network create grid

생성된 네트워크 확인

위 명령어를 실행했다면 아래 명령어를 통해 도커 네트워크가 생성되었는지 확인해 보자.

$ docker network ls

아래 이미지처럼 grid라는 네트워크 리스트가 노출된 것으로 보아 잘 생성된듯하다.

Selenium Hub 구성

아래 명령어를 통해 Hub 이미지를 다운로드하고 컨테이너를 띄워보자.
이미지를 다운로드하지 않았어도 로컬에서 selenium/hub 이미지를 찾을 수 없기 때문에 docker hub에서 자동으로 pull 하게 된다.

$ docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:4.2.1-20220531

도커 이미지 pull 및 컨테이너 실행이 완료되었다면 웹 브라우저에서 http://localhost:4444/로 이동하여 Selenium Hub에 접속되는지 확인해 보자.

아래 이미지와 같이 Selenium Hub 웹페이지가 노출된다면 성공.

Selenium Node 구성

Selenium Node(브라우저 인스턴스)는 현재 Chrome, Firefox, Edge를 지원하고 있다. 우선 Chorme과 Firefox 이미지를 다운로드하고 컨테이너를 실행해 보자.

$ docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub \
    --shm-size="2g" \
    -e SE_EVENT_BUS_PUBLISH_PORT=4442 \
    -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 \
    selenium/node-chrome:4.2.1-20220531
docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub \
    --shm-size="2g" \
    -e SE_EVENT_BUS_PUBLISH_PORT=4442 \
    -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 \
    selenium/node-firefox:4.2.1-20220531

컨테이너 실행 후 Selenium Hub에 아래 이미지와 같이 Selenium Node(브라우저 인스턴스) 목록이 노출된다면 성공

기본적인 Docker 컨테이너는 세팅이 완료되었으니 다음엔 테스트 코드와 연계해서 실행하는 과정에 대해서 알아보자.

profile
現 두나무 업비트 QA 엔지니어, 前 마이리얼트립 TQA 엔지니어

0개의 댓글