29 Selenium 자주 묻는 인터뷰 질문 및 답변

목차

소프트웨어 어플리케이션은 최종 사용자의 손에 전달되기까지 여러 단계를 거치게 됩니다.

이러한 과정에서 테스트는 매우 중요한 부분으로, 소프트웨어가 의도한 대로 작동하는지 확인하고 오류를 찾아내는 핵심적인 역할을 합니다. 즉, SDLC(Software Development Life Cycle)에서 테스트의 중요성은 아무리 강조해도 지나치지 않습니다.

과거에는 소프트웨어 테스터들이 주로 수동 테스트 방법을 사용했습니다. 그러나 이러한 수동 테스트는 상당한 시간과 노력이 필요하며, 여러 가지 문제점을 안고 있었습니다. 이러한 단점을 극복하고자 소프트웨어 테스트를 자동화하는 도구인 셀레늄(Selenium)이 등장했습니다.

현재 셀레늄은 시장을 선도하는 자동화 테스트 도구로 자리매김했으며, 대부분의 소프트웨어 테스터들이 이미 사용하고 있습니다. 만약 여러분이 소프트웨어 테스터를 꿈꾸고 있다면, 셀레늄 관련 인터뷰 질문에 대한 준비는 다른 지원자들보다 경쟁력을 확보하는 데 큰 도움이 될 것입니다.

이 글에서는 여러분이 인터뷰에서 마주칠 수 있는 셀레늄 관련 질문과 그에 대한 답변을 제공하고자 합니다.

자동화 테스트란 무엇인가요?

간단히 말해, 자동화 테스트는 자동화된 테스트 스위트나 도구를 사용하여 소프트웨어 테스트를 작성하고 실행하는 과정을 수동 개입 없이 수행하는 것입니다. 다시 말해, 테스트 담당자가 별도의 도구를 활용하여 테스트 작업을 반복적으로 수행할 수 있도록 하는 과정입니다.

자동화 테스트의 이점은 무엇인가요?

  • 시간과 비용 절감: 수동 테스터를 고용하여 소프트웨어 테스트를 진행하는 것은 비용이 많이 들 수 있습니다. 자동화된 테스트는 장기적으로 비용을 절감하는 효과적인 방법입니다.
  • 코드 재사용성 증대: 한번 설정된 테스트는 반복적으로 실행할 수 있습니다.
  • 정확성 향상: 사람의 실수를 줄여 테스트의 정확성을 높일 수 있습니다.
  • 대규모 애플리케이션에 적합: 작은 규모의 앱은 수동으로 테스트하는 것이 간단할 수 있지만, 앱의 규모가 커질수록 자동화된 테스트 도구가 더욱 유용하게 활용될 것입니다.

셀레늄이란 무엇인가요?

셀레늄은 2004년 제이슨 허긴스(Jason Huggins)가 개발한 오픈 소스 및 무료 웹 UI 기반 자동화 테스트 도구입니다. 활발한 커뮤니티 지원 덕분에 셀레늄은 가장 인기 있는 자동화 소프트웨어 테스트 도구 중 하나로 자리매김했습니다. 셀레늄 제품군은 다양한 브라우저와 플랫폼을 지원합니다.

셀레늄의 여러 형태는 무엇인가요?

셀레늄은 단순한 테스트 도구가 아닌 여러 도구들의 모음입니다. 셀레늄의 다양한 형태는 다음과 같습니다.

  • 셀레늄 통합 개발 환경 (IDE)
  • 셀레늄 웹 드라이버
  • 셀레늄 원격 제어 (RC)
  • 셀레늄 그리드

셀레늄은 어떤 프로그래밍 언어를 지원하나요?

  • 파이썬
  • 자바
  • C#
  • 자바스크립트
  • 루비
  • PHP

셀레늄은 어떤 테스트 유형을 지원하나요?

셀레늄은 주로 웹 어플리케이션의 UI 테스트를 자동화하는 데 사용됩니다. 여기에는 통합 테스트, 회귀 테스트, 기능 테스트 등이 포함됩니다.

셀레늄 웹드라이버란 무엇인가요?

셀레늄 웹드라이버는 웹 브라우저와 통신하는 역할을 합니다. 다양한 작업을 자동화하기 위해 브라우저의 기본적인 호환성에 의존합니다.

셀레늄 IDE란 무엇인가요?

셀레늄 IDE는 녹화 및 재생 기능을 제공하는 파이어폭스 플러그인입니다. 이 플러그인은 자동화 스크립트 생성 속도를 높이기 위해 개발되었습니다.

셀레늄 그리드란 무엇인가요?

셀레늄 그리드는 여러 환경과 플랫폼에서 동시에 테스트 실행을 배포할 수 있게 해주는 도구입니다.

셀레늄 RC(원격 제어)란 무엇인가요?

셀레늄 RC는 원하는 프로그래밍 언어를 사용하여 테스트 스크립트를 만들 수 있는 도구입니다. 또한 다양한 브라우저에서 테스트 스크립트를 실행할 수 있도록 지원합니다.

셀레니즈(Selenese)란 무엇을 의미하나요?

셀레늄 IDE에는 셀레늄 명령을 작성하는 데 사용되는 셀레니즈라는 언어가 있습니다. 이러한 명령은 셀레늄이 수행해야 할 작업 또는 동작을 이해하는 데 도움을 줍니다.

셀레니즈의 유형은 무엇인가요?

  • 액션(Action): 어플리케이션의 상태를 조작하는 명령입니다. 예를 들어 ‘이 상자에 입력’ 및 ‘이 링크 클릭’과 같은 명령이 액션에 해당합니다.
  • 접근자(Accessor): 어플리케이션의 상태와 저장된 결과를 변수로 만드는 명령입니다.
  • 어설션(Assertion): 테스터가 어플리케이션의 상태를 검증할 수 있도록 해주는 명령입니다.

셀레늄에서 요소를 찾는 방법에는 무엇이 있나요?

  • ID
  • 클래스명
  • 이름
  • 태그 이름
  • 링크 텍스트
  • 부분 링크 텍스트
  • XPath
  • CSS 선택자
  • DOM

XPath란 무엇인가요?

XPath는 Extensible Markup Language 경로를 기반으로 웹 요소를 찾는 방법입니다. XML 저장소는 다양한 데이터를 구성하고 전송하는 데 사용됩니다.

XPath에서 “/”와 “//”의 차이점은 무엇인가요?

“/”(단일 슬래시)는 절대 경로로 XPath를 생성합니다. 즉, XPath는 시작 노드/문서 노드부터 선택을 시작합니다.

“//”(이중 슬래시)는 상대 경로로 XPath를 생성합니다. 따라서 생성된 XPath는 문서 내의 모든 위치에서 선택을 시작합니다.

절대 XPath란 무엇인가요?

절대 XPath는 단일 슬래시 “/”로 시작하며, 루트에서 식별하고자 하는 요소까지의 전체 경로를 포함합니다.

findElement()와 findElements()를 구별하세요.

  • findElements(): 주어진 찾기 메커니즘을 사용하여 현재 페이지에서 모든 요소를 찾아 웹 요소 목록을 반환합니다.
  • findElement(): 지정된 위치 지정 메커니즘을 사용하여 현재 페이지에서 첫 번째 요소를 찾아 단일 웹 요소만 반환합니다.

셀레늄에서 사용되는 어노테이션 유형은 무엇인가요?

  • @BeforeSuite
  • @BeforeTest
  • @BeforeClass
  • @BeforeMethod
  • @Test (테스트 케이스)
  • @AfterMethod
  • @AfterClass
  • @AfterTest
  • @AfterSuite

셀레늄에서 어설션이란 무엇인가요?

어설션은 어플리케이션이 예상대로 작동하는지 확인하는 데 사용됩니다. 어설션이 실패하면 테스트 케이스가 실패하고 실행이 중단됩니다.

Assert 및 Verify 명령이란 무엇인가요?

  • Assert: 어설션 조건이 참이면 프로그램은 다음 테스트 단계를 계속 실행합니다. 그러나 조건이 거짓이면 실행이 중지되고 다른 테스트는 수행되지 않습니다.
  • Verify: 검증된 조건이 참인지 거짓인지에 관계없이 테스트 실행은 계속됩니다.

동일 출처 정책이란 무엇이며, 셀레늄은 이를 어떻게 처리하나요?

동일 출처 정책은 특정 출처에서 로드된 스크립트나 문서가 다른 출처의 리소스와 상호 작용하는 방식을 제한하는 보안 메커니즘입니다. 이는 악성 스크립트로부터 시스템을 보호하는 데 도움을 줍니다.

셀레늄은 프록시 주입 방식을 사용하여 동일 출처 정책을 구현합니다. 이 설정에서 셀레늄 서버는 테스트 대상 어플리케이션과 브라우저 사이에서 클라이언트 구성 HTTP 프록시 역할을 합니다. 프록시 삽입은 가상 URL을 통해 AUT를 마스킹합니다.

셀레늄 IDE의 일시 중지 기능은 무엇인가요?

Pause는 자동 테스트 실행을 지정된 시간 동안 지연시키는 셀레늄 IDE 명령입니다. 대기 시간은 밀리초 단위로 지정되며, 예를 들어 3초 동안 기다리려면 3000을 입력해야 합니다.

셀레늄 IDE 테스트가 실패하는 이유는 무엇인가요?

  • 비동기식 웹사이트: 셀레늄 테스트는 특정 순서로 생성되지만, 일부 웹사이트는 비동기 아키텍처를 기반으로 하여 응답이 순서대로 이루어지지 않을 수 있습니다.
  • 시간 초과: 컴포넌트가 로드되기를 기다리는 동안 셀레늄이 실패할 수 있습니다. 이러한 오류는 “대기” 명령을 사용하여 해결할 수 있습니다.
  • 버그: 셀레늄은 지속적으로 개선되고 있지만, 때로는 버그가 발생하여 테스트가 실패할 수 있습니다.
  • 소스 코드 변경: 로케이터의 변경이 감지되면 해당 로케이터를 사용하는 모든 테스트가 실패할 수 있습니다.

TestNG란 무엇이며, 그 기능은 무엇인가요?

TestNG는 JUnit 및 NUnit에서 영감을 받은 테스트 자동화 프레임워크입니다. “NG”는 Next Generation의 약자이며, 오픈 소스이자 무료 도구입니다.

다음은 TestNG의 주요 기능 중 일부입니다.

  • 다양한 유형의 어설션 지원
  • 테스트를 병렬로 실행 가능
  • ‘dependsOnMethods’ 및 ‘dependsOnGroups’ 특성을 사용하여 테스트를 서로 종속적으로 설정 가능
  • 데이터 기반 테스트 수행 지원
  • 다양한 테스트를 그룹화 가능

암시적 대기와 명시적 대기의 차이점은 무엇인가요?

  • 암시적 대기: WebDriver가 예외를 발생시키기 전에 특정 시간 동안 기다리도록 설정하는 것입니다. 기본값은 0이며, 시간이 설정되면 WebDriver는 해당 시간이 경과할 때까지 대기한 후 예외를 발생시킵니다.
  • 명시적 대기: WebDriver에게 특정 조건 또는 ExpectedConditions를 만족할 때까지 기다리도록 지시하는 것입니다. “ElementNotVisibleException”과 같은 예외가 발생하기 전에 지정된 요소에 대해서만 작동하는 ‘지능형’ 대기 방식입니다.

객체 저장소란 무엇인가요?

객체 저장소는 자동화된 GUI 테스트 스크립트에서 키-값 쌍의 모음으로, 테스트 스크립트 유지 관리의 부담을 줄여줍니다. 여기서 키는 객체를 식별하는 논리적 이름이며, 값은 화면에서 객체를 식별하는 고유한 속성입니다.

객체 저장소는 또한 모든 데이터가 저장되고 관리되는 중앙 위치이기도 합니다.

셀레늄 웹 드라이버에서 어떤 다른 예외가 발생할 수 있나요?

예외는 프로그램 또는 소프트웨어 어플리케이션 실행 중에 발생할 수 있는 비정상적인 이벤트입니다. 이는 일반적인 프로그램 흐름을 방해하거나 영향을 미치는 예상치 못한 오류입니다.

셀레늄 웹 드라이버에서 발생할 수 있는 주요 예외는 다음과 같습니다.

  • NoSuchWindowException: WebDriver가 유효하지 않은 창으로 전환하려고 할 때 발생합니다.
  • NoSuchElementException: 요소에 접근할 수 없을 때 발생합니다.
  • NoAlertPresentException: 표시되지 않는 경고로 전환하려고 할 때 발생합니다.
  • TimeoutException: 특정 명령이 지정된 시간 내에 완료되지 않았을 때 발생합니다.
  • ElementNotVisibleException: 요소가 페이지에 존재하지만 화면에 표시되지 않아 상호 작용할 수 없을 때 발생합니다.
  • ElementNotSelectableException: 요소가 DOM에서 사용 가능하지만, 비활성화되어 선택하거나 클릭할 수 없을 때 발생합니다.
  • SessionNotFoundException: WebDriver가 브라우저가 닫힌 직후에 작동하려 할 때 발생합니다.

다양한 유형의 로케이터를 나열하세요.

  • ID
  • 이름
  • 클래스 이름
  • 태그 이름
  • 링크 텍스트
  • 부분 링크 텍스트
  • CSS 선택자
  • XPath

중단점과 시작점이란 무엇인가요?

  • 시작점은 코드 실행이 시작되어야 하는 위치를 나타냅니다. 코드 중간 또는 중단점에서 테스트 스크립트를 실행하는 데 사용될 수 있습니다.
  • 중단점은 코드 실행을 중지하는 데 사용됩니다. 코드가 예상대로 작동하는지 확인하는 데 유용합니다.

마무리

이 글에서는 다음 테스트 자동화 엔지니어링 면접에서 마주칠 수 있는 셀레늄 관련 질문들을 살펴보았습니다. 테스트 자동화 엔지니어 직무에 지원하기 전에 필요한 기술을 갖추고 있는지 확인하시기 바랍니다.

이 글이 흥미로우셨나요? 이 정보를 다른 사람들과 공유하여 도움을 줄 수도 있습니다.