무료정보

셀레니움 - 테스트 자동화 1편

✝. . .☪ 2022. 1. 26. 05:51
반응형

 

이번 포스팅에선 테스트 자동화와 어느 경우에 자동화를 도입하고 어떻게 접근하면 좋은지에 관하여 전반적인 내용에 대해서 다뤄보도록 하겠다. 셀레니움을 사용하면 브라우저 기반 테스팅을 자동화하는데 큰 도움이 되지만 막상 실무에 적용하려면 발생하는 여러 가지 비용에 대해서 고민을 하지 않을 수 없다.

 

대부분 백엔드 (특히 API) 같은 경우에는 JUnit과 같은 훌륭한 유닛 테스트 툴로 테스트를 하면 된다. 그것을 넘어 화면 UI에서 발생하는 시용자 기반 시나리오 테스트를 해야 한다면 아마도 셀레니움 테스트를 피할 수 없을 것이다.

 

만약 셀레니움이 처음이라면, 이전 포스팅에서 자바로 셀레니움을 사용하는 간단한 예제 HelloSelenium을 만들어 보았다. 이번 글의 주제인 테스트 자동화에 대해서 읽기 전에 셀레니움과 조금 가까워진기 위해서 HelloSelenium을 먼저 보고 직접 코딩하고 실행 보기를 추천한다. 셀레니움이 어떻게 돌아가는지 보면 테스트 자동화 접근에 대해서 이해하는데 큰 도움이 될 것이라 생각하기 때문이다. 

 

테스트 자동화

우선적으로 브라우저를 사용할 필요가 있는지 없는지 자문해보길 바란다. 어느 시점에서 복잡한 웹 애플리케이션을 만드는 일을 하는 경우에는 브라우저를 열고 실제로 테스트해야 할 가능성이 있다.

 

셀레니움을 사용하여 최종 사용자 기능 테스트를 하는 것은 양적이나 시간적으로 비용이 많이 든다. 그것뿐만 아니라 셀레니움이 효과적으로 운영되기 위해서는 일반적으로 상당한 인프라 구축을 필요로 한다. 테스트 대상이 유닛 테스트같이 가벼운 테스트 접근법을 사용하여 수행될 수 있는지 아니면 저수준의 접근법을 사용하여 수행될 수 있는지 항상 스스로에게 물어보는 것이 좋은 접근 방법의 규칙이다.

 

웹 브라우저 테스트를 셀레니움으로 하기로 결정했고 셀레니움 환경이 갖추어져 있다면 다음과 같은 세 가지 단계를 조합하여 수행하게 된다.

  • 데이터 설정
  • 개별 집합 수행
  • 결과 평가

아마도 이러한 단계를 가능한 한 짧게 유지하고 싶을 것이다. 한두 번의 작업만으로도 대부분의 경우 충분할 것이다. 브라우저 자동화는 "별나다"는 평판을 가지고 있지만 사실은 사용자들이 너무 많은 것을 요구하기 때문이다. 나중 포스팅에서는 테스트 도중 명백한 간헐적 문제, 특히 브라우저와 웹 드라이버 사이의 경쟁 조건(racing condition)을 극복하는 방법으로 상태를 완화하기 위해 사용할 수 있는 기법을 알아보도록 하겠다.

 

웹브라우저를 사용하지 않는 방법에 대한이 전혀 없을 때 테스트를 가능한 한 짧게 유지하면 최소한의 실수로 많은 테스트를 해볼 수 있다.

 

셀레니움 테스트의 큰 장점 중 하나는 백엔드에서 프런트엔드까지 사용자의 관점에서 애플리케이션의 모든 구성요소를 테스트할 수 있다는 점이다. 즉, 기능 테스트는 실행 비용이 많이 들 수 있지만 동시에 많은 비즈니스에 치명적인 부분을 포괄한다.

 

테스팅 요구사항

위에서도 언급했듯이 셀레니움 테스트는 실행하는데 비용이 많이 들 수 있다. 어느 정도는 어떤 브라우저에서 테스트하느냐에 따라 달라지지만, 과거의 경험적으로 보았을 때 브라우저의 행동은 매우 다양해서 여러 브라우저에서 교차로 테스트하는 것이 대부분의 목표이다.

 

셀레니움은 여러 운영 체제에서 여러 브라우저에 대해 동일한 지침을 실행할 수 있게 해 주지만 가능한 모든 브라우저와 브라우저의 다른 버전 그리고 이들이 실행하는 많은 운영 체제를 열거하면 금방 비교가 되기는 힘든 일이 될 것이다.

 

to be continue...

생각보다 글이 길어져서 다음 포스팅에서 이어서 소개하는 것이 좋을 것 같다. 다음 포스팅에서는 있을 법한 예상 테스트 시나리오를 기반으로 테스트 자동화 접근을 코드와 곁들여서 알아보도록 하겠다. 

반응형