블로그 이미지
JEEN

서울에 사는 꽃청년의 IT찌질모험기

Rss feed Tistory
IT 2008.11.26 14:33

[ Selenium ] Selenium AES, 지속적인 회귀테스트를 위해서...


  Selenium AES 는 openqa 에서 만든 것은 아니고, 일본의 onozaty 라는 프로그래머가 Selenium RC 를 개량한 것이 Selenium Auto Exec Server입니다. 기존 Selenium RC 의 기능에서 추가로 자동으로 실행된다는 것인데요. config 에서 특정시간을 지정해서 매일 그 시간에 테스트를 수행합니다. SMTP 계정을 지정하는 것으로 테스트 결과를 메일로 통보받을 수도 있습니다.

  Selenium 으로 테스트 케이스를 만들고, 스크립트로 이리저리 굴리면서 cron 으로 돌리고.. 해당결과는 mail로 보내는 스크립트를 하마터면 쓸 뻔한 때에 이와 같은 것을 발견해서 기쁘기 그지 없습니다. Selenium RC 를 개량한 만큼, 이전의 Firefox 3 를 쓰기위한 패치를 쓴다거나 할 필요도 없습니다. 이미 전부 패치된 상태이기 때문이죠. 기존의 Selenium RC 에서 할 수 있었던 것도 모두 가능하구요.

 Windows, Linux, Mac OSX 에서 사용이 가능하구요. Windows 같은 경우는 IE, FF 를 동시에 테스트할 수 있겠네요. 저같은 경우는 Ubuntu Desktop 에서 Firefox 만을 대상으로 했습니다.

 우선 Selenium AES 의 기능을 정리하자면 아래와 같습니다.
  • 테스트 정기실행
  • Subversion 연계
  • 테스트 결과를 메일로 송신
  • 브라우저 상에서 테스트 상황 확인
  • 테스트 실행 API 제공
  • HTMLSuite 복수지정
  • HTMLSuite 자동작성
  • 복수 브라우저 실행
 Selenium AES 는 아래에서 다운로드 가능합니다.

http://code.google.com/p/selenium-extension/
http://selenium-extension.googlecode.com/files/selenium-autoexec-server-0.3-dist.zip

위의 zip 파일을 받아서 풀어보면 setting.properties 에서 설정정보를 추가합니다.
browser=*firefox /usr/lib/firefox-3.0.4/firefox
startURL=http://www.google.com/                                                                                                                           

autoExecTime=13:24

#suiteRepo=http://192.168.0.1/svn/trunk/selenium                                                                         
#suiteRepoUsername=                                                                                                                                        
#suiteRepoPassword=                                                                                                                                        
#suiteDir=
mail.host=smtp.naver.com
#mail.port=465                                                                                                                                             
#mail.ssl=true                                                                                                                                             
mail.username=username
mail.password=password
mail.to=mail@to.com
mail.from=admin@naver.com

 위의 browser, startURL, autoExecTime 은 필수입니다. browser 에는 "*firefox, *iexplorer" 처럼 복수의 브라우저를 지정해줄 수 있죠. 전 Ubuntu 데스크톱에서 Firefox 만을 사용하기에 이처럼 지정했습니다.
 startURL 은 Test 를 수행할 대상 URL 을 지정하는데요. 이러면 하나의 URL 만을 대상으로 테스트할 수 있는 건 아닌가 하는 생각을 합니다. 여러 서비스를 테스트해야하는 데, 이게 가능한지는 모르겠군요.
 autoExecTime 은 매번 자동실행되는 시간을 지정합니다. 위처럼 지정되어 있다면 Selenium AES 를 작동시킬 때에
14:01:35.057 INFO - Auto exec first time: Thu Nov 27 13:24:00 JST 2008
 이처럼 뜹니다. 이미 지나가버렸다면 다음 날이 대상이 되겠구요. Selenium AES 가 돌아가면 이 시간이 되면 매번 실행이 되겠죠? 하루에 여러번 테스트를 하고 싶을 때는 어떻게 할까요? 음.. 회귀테스트를 그렇게 자주 해야하는 것인가요? 아마 아니될거라고 생각합니다. :-)
 
  http://localhost:4444/selenium-server/autoexec

 에 접속하면 웹 페이지에서 테스트를 수행할 수 있습니다.
  "Run Test" 버튼을 누르면 테스트가 작동하고, 이 페이지는 30초에 한번씩 갱신되고.. 그때에 따라서 페이지의 내용이 바뀌게 됩니다.
 
 여기에서 실행하는 테스트들은 mail 로 전송되지 않고, autoExecTime 에서 지정한 시간에 작동하는 테스트시에 그 결과를 메일로 보내주게 됩니다. 물론 settign.properties 에서 mail.* 부분이 설정되어 있어야 되겠죠.
이렇게 테스트 결과와 함께 동봉된 result.zip 에는 자세한 테스트 항목과 그 결과들을 볼 수 있습니다.

 suiteRepo* 를 지정했을 때는 테스트 실행시에 지정 리포지트리에서 가장 최신 리비젼 파일을 얻어서 suiteDir에 옮겨서 테스트를 실행합니다. suteDir 의 기본 디렉토리는 [Selenium-AES]/suite/ 로 지정되어 있습니다(이미 테스트용 Suite 가 있을 겁니다).

 이외에도 HTTP 리퀘스트로 테스트를 실행합니다.

 http://localhost:4444/selenium-server/autoexec/command/run

 그러면 그 결과를 반환해주겠죠. Query 에 type=json 을 붙이면 JSON 형식으로 결과가 반환되게 됩니다.

 그럼 Test 를 정의한 HTMLSuite 는 어떻게 만들까요? 지난번에 소개해드릴 Selenium IDE 로 액션을 녹화해서 거기에서 나온 TestSuite 를 HTML 로 뽑아냅니다. 이때의 파일이름에 "case", "Case" 가 포함되면 됩니다. 복수의 HTMLSuite 를 만들기 위해서는 파일이름에 "suite", "Suite" 가 포함되어야 합니다.  [Selenium-AES]/suite/ 디렉토리에 샘플로 제공된 파일이 있으니 쉽게 참고하실 수 있을 겁니다.

  http://www.enjoyxstudy.com/selenium/autoexec/

 에서 제가 사용하려는 부분만을 간단하게 뽑아서 소개했습니다. 자세한 내용은 여기에서 확인하시면 되겠습니다.
신고
TOTAL 464,413 TODAY 20

티스토리 툴바