이미 테스트 자동화 프레임워크로 널리 사용중인 셀레늄에 대해 알아보겠다.
검색을 해보며 느꼈겠지만 셀레늄은 화학 원소이므로...
셀레늄만 검색하면 원소기호 Se와 관련된 내용만 줄줄 검색되는 슬픈 사연이 있다.
우리가 원하는 그 셀레늄을 찾으려면 '셀레늄'과 '테스트'를 함께 검색어로 사용해야 한다.
Selenium
웹 어플리케이션을 위한 소프트웨어 테스트 프레임워크.
테스트 스크립트 언어인 Selenium IDE에 대한 학습 없이도 사용 가능한 테스트 제작용 녹화와 재생 기능을 제공하며
Java, C#, PHP, Python, Ruby 등 다양한 프로그래밍 언어로 테스트 작성이 가능하다.
대부분의 브라우저에서 실행이 가능하며, 윈도우와 리눅스, 매킨토시 플랫폼에서 이용가능하다.
<출처 : https://en.wikipedia.org/wiki/Selenium_(software) >
셀레늄은 결합해서 다양한 테스트 시스템을 만들 수 있는 많은 프로젝트들을 가지고 있다.
셀레늄 공식홈페이지에서 구성하고 있는 프로젝트의 종류별로 어떤 역할을 하는지 우선 소개한 뒤
그 중 셀레늄 IDE의 사용 방법을 상세히 알아보겠당.
위에서부터 순서대로 소개하려고 했으나... 원하는 순서가 아니므로 밑에서부터 하겠슴다.
출처는 http://docs.seleniumhq.org/projects/ 이므로 상세내용을 원하시면 접속하시면 됩니당.
Selenium RC (Remote Control)
Java로 작성된 서버로 HTTP를 통해 브라우저로 오는 명령을 받아들일 수 있다.
RC는 웹 어플리케이션을 위한 테스트를 어떤 프로그래밍 언어로든 자동화시켜 작성할 수 있게 해준다.
셀레늄 RC는 두 파트로 구성되어진다.
1) 브라우저를 자동으로 실행하고 중지시킬 수 있으며 Web Request에 대해 HTTP 프록시 역할을 할 수 있는 서버
2) 당신이 선호하는 컴퓨터 언어를 위한 클라이언트 라이브러리
CI 시스템에서 복잡한 Ajax 기반의 UI 테스트를 진행하기에 아주 적합한 툴이다.
Selenium IDE의 Selenese HTML 테이블 형태의 테스트 구문이 아닌 실제 프로그래밍 언어로
구성된 테스트를 만들고자 하는 Selenium IDE 사용자들을 위한 이상적인 솔루션이다.
Selenium IDE
IDE는 알다시피 통합 개발 환경을 구축하는 것으로 가장 잘 알려진 IDE는 eclipse다.
셀레늄은 테스트 구성을 좀 더 편리하게 만드는 데 목적이 있으므로 테스트를 구성할 수 있는 IDE도 갖추고 있다.
셀레늄 IDE는 셀레늄을 위한 통합 개발 환경인만큼 셀레늄 테스트에 가장 적합한 IDE이다.
Firefox 확장 플러그인으로 제공되며 테스트 내용에 대한 녹화, 수정, 디버깅을 가능하게 한다.
녹화기능이 있어서 그런건지 전에는 Selenium Recorder 라는 이름으로 알려졌다고 한다.
(셀레늄 프로젝트 소개에서는 is not only a recording tool 이라고 얘기하는걸보니 IDE라고 불러주도록 하자.)
사용자가 수행한 스크립트의 내용은 셀레늄의 테스트 스크립트 언어인 Selenese로 녹화되어진다.
Selenese는 브라우저에서 수행되는 동작 (예를 들어 링크 클릭이나, 옵션 선택 등) 명령을 제공한다.
테스트 내용은 Java, C#, Ruby, Python 등 다양한 개발언어로 변환되어질 수 있으며,
현재는 WebDriver라는 웹 자동화 도구와 통합 개발되어 더 향상된 테스트가 가능해졌다.
Selenium Grid
Selenium 2.0이 출시되면서, 셀레늄 서버에서 Grid를 기능적으로 탑재했다고 한다.
공식 홈페이지가 이런식으로 간단하게 써놓고 끝내버리니 당황스러우므로 다른 곳에서 발췌한다.
테스트 코드를 여러대의 Selenium RC에서 동시에 실행할 수 있게 하는 것.
테스트 수행속도를 향상시키기 위한 분산처리나 여러 환경에서의 테스트가 필요한 경우 사용한다.
서로 다른 브라우저에서 일관성있는 테스트를 가능하게 한다.
< 출처 : http://wiki.gurubee.net/pages/viewpage.action?pageId=6259762 >
이러한 내용들이 기능적으로 탑재되었다고 하니 별도로 실행시킬 필요가 없어서 다행이다. 후
Selenium WebDriver
셀레늄의 가장 큰 변화는 WebDriver API가 포함된 것이라고 한다.
로컬에서 혹은 셀레늄 서버를 사용한 원격장비에서 '사용자로써' 브라우저를 구동시키는 것은,
브라우저 자동화 측면에서 진보된 발전이라고 볼 수 있다.
Selenium 1.0 + WebDriver = Selenium 2.0 의 개념으로 생각하면 되고
셀레늄 2.0이라고 명칭하거나 단지 WebDriver만으로도 이 개념을 나타낸다.
- 셀레늄 RC API의 몇가지 제약사항을 해결함과 동시에 간단하고 간결한 프로그래밍 인터페이스로 설계되었음
- 셀레늄 1.0과 비교하면 정교한 객체지향 API로 구성되었다.
- 이는 브라우저를 더 효율적이게 구동시킬 수 있고, 기능적인 테스트 영역에 영향을 주었던 셀레늄 1.x 의 한계 (파일 업/다운로드, 팝업과 다이얼로그 차단 등) 를 극복하였다.
- 셀레늄 RC의 단일 호스트 정책을 극뽁!
WebDriver는 다양한 환경에서의 테스트 수행을 위해서 Driver를 지원하고 있으며,
이 Driver의 변경만으로 같은 내용의 테스트를 다른 환경에서 수행할 수 있다.
이 중 HtmlUnitDriver를 통해 실제 브라우저를 통한 테스트를 하지 않고도 빠른 피드백을 받을 수 있다.
AndroidDriver, ChromeDriver, EventFiringWebDriver, FirefoxDriver, HtmlUnitDriver, InternetExplorerDriver, PhantomJSDriver, RemoteWebDriver, SafariDriver 등
장단점 및 예제 내용에 대해 잘 정리해 둔 글은 링크해두겠슴당.
http://wiki.gurubee.net/pages/viewpage.action?pageId=6259762
Selenium IDE 설치 및 사용기
위에서 소개했듯 설치 방법은 Firefox add-on으로 제공되므로 아주 간단하다.
Firefox 부가 기능 관리자에서 Selenium을 검색.... 했으나 뭔가 검증되지 않은 것들만 나오는 느낌적인 느낌
Aㅏ.....
그래서 셀레늄에서 제공하는 다운로드 링크를 사용하기로 하였습니다.
http://docs.seleniumhq.org/download/ 여기로 들어가세염
친절하게 여러가지 다운로드 링크를 굉장히 많이 제공하고 있으나
오늘 다운받아서 실행할 프로그램은 Selenium IDE 이므로 가장 최신 버전을 다운받도록 하겠슴다.
2015.05.09 출시된 2.9.0 버전입니다. xpi 파일로 다운됩니다.
아까 열어둔 그 Firefox 화면에서 아래와 같이 파일에서 부가 기능 설치를 누릅니다.
아까 받아둔 xpi 파일을 찾아서 누르면 설치 끝!
설치하면 Selenium IDE와 C#, Java, Ruby, Python Formatters가 주루룩 깔립니다.
설치했으니 간단한 Test Case를 만들어볼까요.
Firefox 브라우저 오른쪽 상단에 Selenium IDE 버튼이 생긴 걸 볼 수 있습니다.
클릭하면 Selenium IDE 창이 뜹니다.
저는 이미 클릭을 통해 Test Case가 작성된 상태라서 값이 들어가있는데
사용하는 방법을 상단 Menu bar 기능을 설명하면서 알아보지용
Base URL : 테스트 진행 시 Root 값으로 사용되는 URL 값을 가지고 있습니다.
Test Case를 작성할 때 가급적 해당 내용을 비워두고 Test Case를 만드는 것이 좋다는 이야기도 있네요.
Speed Bar : Test Case 진행 속도 조절. Test Case 내의 Sequence들이 수행되는 속도를 조절합니다.
화면에서 Flow 확인 시에 속도가 너무 빠르면 눈으로 확인하기 힘들 수 있으니 적당하게 조절할 수 있는 듯 합니다.
1. Play entire test suite : 여러개의 Test Case 들을 모아서 하나의 Test Suite를 구성하는데
이를 한 번에 수행할 수 있는 기능이다. Test Case가 한 개 뿐이면 2번과 같은 기능일뿐....☆
2. Play current test case : 현재 Test Case 수행
3. Pause/Resume : 수행중인 내용 일시중지 또는 다시 시작
4. Step : 일시중지했을 때, 다음 순서의 Test 내용을 진행하도록 하는 기능, 디버깅 할 때 사용가능
5. Apply Rollup Rules : 활성화가 안되어서 써보지는 못함. document 참조한 내용으로는
고급 기능으로 명시되어있네요 ㅎㅎ 반복되는 셀레늄 명령 시퀀스를 하나의 액션으로 그룹화 해주는 기능이라네요.
6. Turn test scheduler on/off : 테스트 스케쥴을 만들 수 있는 기능입니다.
7. Click to Record : 제일 핵심기능입니다. 이걸 누르고 브라우저에서 액션을 취하면 Command가 쌓여서
하나의 Test Case가 됩니다.
IDE 자체가 직관적이라 깊게 공부할 필요는 없지만 도움말도 매우 친절하게 제공하고 있으니
이 역시 출처는 링크로 제공합니당. http://docs.seleniumhq.org/docs/02_selenium_ide.jsp
Selenium Test Code 추출 및 실행
Test Case 혹은 Test Suite를 만들었으니 이를 잘 활용해보도록 하자.
(실은 이 Case와 Suite를 만드는 과정이 제일 어려운 듯...)
firefox Selenium IDE에서 만들어 둔 내용을 내보내기 위해 위와 같은 과정을 거친다.
Java 언어로 내보낼 예정이고 Test Framework로 JUnit 4를 사용할 예정이므로 그에 해당되는 내용을 선택한다.
WebDriver나 WebDriever Backed, Remote Control은 Test 수행 방식을 선택하는 것으로 보임!
클릭하면 내용을 내보내는데... 이를 이용해서 한 번 eclipse에서 Test Case를 돌려보도록 하자.
Eclipse : New Create Maven Project
Test Case를 수행하기 위해서 신규 프로젝트를 생성한다.
Maven을 이용할 예정이기 때문에 Maven Project로 생성하도록 하겠다.
물론.. Maven 없이 jar 파일 import 해서 구동시킬 수도 있다.
Maven Setting : pom.xml in Project
아까 Export 한 파일을 이용해서 신규 Class를 만들었더니 빨간줄로 사용할 수 없다는 알림이
줄줄이 나온다. 이렇게 막히나 싶겠지만... 필요한 Maven 파일 혹은 jar 파일을 찾아다가 넣어주면
알아서들 불러다 쓰니까 세팅을 해보도록 하자.
우선 Selenium을 이용하기 위해 관련 내용을 import 해보자.
먼저 가장 공식적인 방법인 홈페이지 경로를 통한 다운로드는 http://docs.seleniumhq.org/download/maven.jsp
Download > Maven Information 에서 pom.xml에 세팅해야 하는 dependency 를 확인할 수 있다.
또 다른 방법은 Maven Dependency만 모아두어 검색을 쉽게 해둔 사이트를 이용하는 것이다.
Maven Repository (http://www.mvnrepository.com/)
이름부터 아주 든든하다. Maven 저장소니까 있을 건 다 있다. 검색하면 주루룩! 심지어 버전별로
Selenium 검색하면 맨 위에 있는 Selenuim Java의 최신 버전을 다운받아보겠다.
Maven Dependency는 물론이고 다른 형태로도 제공하고 있으니 유용하게 사용할 수 있다.
Selenium 다운받으러 온 김에 JUnit 4를 사용하기 위한 Dependency도 긁어가도록 하자.
알뜰하게 싹싹 긁어다가 pom.xml에 세팅하면
이제 깔끔하게 깨끗한 Test Case Class가 완성된 것을 볼 수 있다.
프로젝트에서 이제 구동을 시켜보자.
해당 Class가 들어있는 java 파일을 클릭하고 Run As > JUnit Test 를 클릭하면 구동이 시작된다.
WebDriver로 구동했기 때문에 곧 브라우저 하나가 뜨고 만들어 둔 Test Case대로 수행되는 것을 확인할 수 있다.
그리고 대망의 결과
아주 잘 돌아갔다.
1개 돌렸는데 1개 성공했음! 100%의 성공률 ㅋ.ㅋ
Test Case를 잘 만들어두면 응용이 아주 쉬울 것으로 생각되므로
Test Case나 Test Suite를 만들 때 신중하게 작성하도록 하자! 는 결론
무엇이든 이용하고 응용하는 건 사용자의 몫이져
Selenium 통한 테스트로 완성도 높은 결과물들 만들어내시길 바랍니당~~
'TREND' 카테고리의 다른 글
7 VIDEO TRENDS FOR 2016 @TwitterKR (0) | 2016.01.30 |
---|---|
Gartner, 2016년 10대 전략 기술 (0) | 2015.10.13 |
Redmine : Project Management Web Application (3) | 2015.09.03 |
TELNET, FTP, SSH, SFTP 용어 정리 (0) | 2015.09.02 |
Jenkins : 빌드 자동화를 통한 지속적 통합 툴 (0) | 2015.09.01 |