Selenium
자동화 웹 테스트와 웹 스프래핑 도구로써 자주 사용되는 Selenium은 아래와 같은 컴포넌트로 구성되어 있습니다.
- Selenuium Core: 코어 라이브러리로 애플리케이션 자동화 기능을 제공합니다. 클라이언트 언어가 셀레니움을 사용할 수 있도록 기능을 제공합니다.
- Selenium WebDriver/ Remote Control: RC 보다 더 구조화 되고 다양한 브라우저에서 자동화된 테스트 기능을 제공합니다. Selenium 3에서는 RC가 완전히 제거되고 WebDriver로 대체되었습니다.
- Selenium IDE: 프로그래머가 아닌 사람이 웹 애플리케이션을 테스트하고 다양한 Checks을 사용할 수 있는 GUI 도구입니다.
- Selenium Grid: 그리드(허브와 노드) 형태로 parallel 테스트 실행 기능을 제공하여 수많은 테스트를 짧은 시간 안에 실행할 수 있도록 지원합니다.
Selenium Core는 웹 애플리케이션의 동작을 어떻게 자동화 하는가
Selenium Core는 웹 브라우저 내에서 JavaScript로 동작하는 라이브러리 입니다. 브라우저의 DOM 요소에 접근하고 조작하여 사람이 수행하는 것과 동일한 작업을 자동으로 실행합니다. 브라우저 보안정책(Same-Origin Policy) 때문에 로컬이나 제한된 환경에서만 사용할 수 있었지만 이후 업데이트를 통해 극복하였으며 Selenium WebDriver가 등장하면서 Core의 역할이 축소되었습니다.
WebDriver는 어떻게 작동하는가
브라우저의 네이티브 API를 사용해 브라우저를 직접 제어하며 JSON Wire Protocol 또는 W3C WebDriver 표준을 사용합니다. 브라우저 내부 DOM 뿐만 아니라 네이티브 이벤트까지 처리가능하며, 동적 콘텐츠와 상호작영할 때 JavaScript 실행, 대기 조건 설정 등을 지원합니다.
Selenium Grid 병렬 테스트는 왜 필요한가
"병렬 테스트의 필요성"
대규모 애플리케이션은 다양한 브라우저와 플랫폼에서의 동작 확인이 필요합니다. 테스트 실행 시간이 길어지면 개발 주기가 느려지고 생산성이 저하됩니다. 그러므로 병렬 테스트를 동해 여러 테스트를 동시에 실행하여 시간을 단축시키고, 다양한 환경에서의 호환성을 빠르게 확인할 수 있습니다.
"Hub와 Node"
hub는 테스트 명령을 관리하고 적절한 노드에 작업을 분배합니다. Master 서버의 역할을 하며 클라이언트와 노드 간의 중재자 역할을 합니다.
Node는 허브로부터 받은 테스트 명령을 실제로 실행합니다. 각 노드는 특정 브라우저와 플랫폼에 대한 테스트 환경을 제공합니다.
Reference
'IT > QA' 카테고리의 다른 글
Selenium, XPath를 통해 UI 요소 정확히 찾기 (0) | 2025.01.13 |
---|---|
Spring Security, OAuth 적용 후 필요한 테스트? (0) | 2024.12.05 |
Jenkins, Docker-compose로 컨테이너화 하기 (1) | 2024.12.03 |
통합테스트, SpringBootTest (0) | 2024.12.02 |
Spring의 단위 테스트, JUnit5과 Mockito를 사용한 계층별 테스트 (0) | 2024.11.30 |