안수찬의 개발이야기

Selenium 이야기 - Selenium의 10번째 생일을 축하합니다.

Introduction

안수찬 @dobestan

안수찬 @dobestan

소프트웨어 생태계에 기여할 수 있는 실용주의 프로그래머가 되고자 합니다. 나는 안수찬이다. 그러므로 나는 할 수 있다.


자동화 번역

Selenium 이야기 - Selenium의 10번째 생일을 축하합니다.

Posted by 안수찬 @dobestan on .
Featured

자동화 번역

Selenium 이야기 - Selenium의 10번째 생일을 축하합니다.

Posted by 안수찬 @dobestan on .

본 포스트는 #매일번역 시리즈 의 첫번째 글입니다. #매일번역 이라는 이름으로 일주일간 번역을 하게 된 이유는 "2015년의 정리 - #매일번역을 일주일간 시작합니다." 에서 살펴보실 수 있습니다.

원글은 "ThoughtWorks > Happy 10th Birthday, Selenium" 에서 살펴보실 수 있습니다.

올해 서비스에 이용해서 재미를 본(?) 기능 중에 가장 마음에 드는 걸 꼽자면 단연코 Selenium을 꼽을 수 있습니다. 개인적으로는 기존에 functional testing 에서 주로 사용되던 selenium 을 이용해서 기능적으로 적용하고 이를 상용화 했다는데 큰 의의를 두고 있습니다.

제가 서비스 개발에 있어서 ( * 테스팅을 제외하고 / 저는 모든 functional testing 은 selenium 으로 돌리고 있습니다. ) Selenium 을 직접적으로 활용하고 있는 사례는 다음과 같습니다 :

약 6개월 넘게 Selenium을 아주 유용하게 사용하면서, 이게 언제 만들어졌고, 누가 만들었고, 왜 만들었는지에 대해서 궁금하다는 생각을 했습니다. 이러한 이유로 Selenium 의 역사에 대해서 잘 설명해준 "Happy 10th Birthday, Selenium" 글을 번역하기로 결정하였습니다.

셀레니움은 사랑입니다.

Selenium의 10번째 생일을 축하합니다.

Selenium 기술 탄생 10주년이 되었습니다. ThoughtWorks는 현재 크로스 플랫폼(Cross Platform)과 크로스 브라우저(Cross Bowser) 웹 어플리케이션의 기능적 테스트를 위한 사실 표준(De Facto Standard)인 Selenium이 만들어지고 오픈소스가 된 것을 자랑스럽게 생각하고 있습니다. 우리는 또한 더 좋은 오픈소스를 공개한 것을 자랑스럽게 여기고 있습니다.

Selenium 탄생 10주년을 기리며 우리는 아래 타임라인을 만들어 보았습니다. Selenium의 또 다른 성공적인 10년을 기원합니다.

2004

우리는 Lotus Notes 를 내부적으로 대체하기 위해 "Time & Expenses" 라는 웹 어플리케이션을 만들고 있었습니다. Jason Huggins ( @hugs - ThoughWorks의 기술 지원 ) 이 개발을 책임지고 있었습니다. 그는 동료들과 함께 HTML 테이블로 인코딩된 스크립트를 사용하여 Selenium의 초기버전을 만들었습니다 ( 현재 Selenium 1 Core 모드로 알려져 있습니다 ). 이것이 제가 참여한 부분입니다(Paul Hammant @ paul_hammant). 저는 Consulting Practice에서 온 ThoughtWorker였습니다.

Jason의 제안을 보았을 때 저는 이것이 게임 체인저(Game Changer)라는 것에 동의했습니다. 하지만 저는 출근해서 Java, C#, Ruby, Python등에서 Selenium이 TCP/IP ( "Comet"이라는 기술을 사용하여 )로 원격 조종을 하도록 하는 두 번째 동작 모드에 대한 일을 구체적으로 명시하였습니다.

즉, "Core모드" 혹은 "Selenium A 모드"라고 알려진 Core 모드와, "Driven 모드" 혹은 "Selenium B 모드"라고 알려진 모드가 있었습니다.

Jason과 저는 Selenium (1.0)의 공동 창시자가 되었습니다. 그러나 많은 ThoughtWorks 직원이 초기에 서로 다른 언어와, 안전성, Selenium의 일반적인 Feature Set을 구현하는데 도움을 주었습니다. 오늘날 B 모드는 "Selenium 원격 조정(Selenium Remote Control)" 혹은 줄여서 Selenium RC라고 부릅니다.

우리는 또한 Selenium을 오픈소스로 만들어 전 세계적으로 사용되고 기여할 수 있도록 하였습니다. 본래 Github에 코드는 살아있지만 오랜 시간 꺼져 있었던 GForge 포털을 관리하는 것은 ThoughtWorks 였습니다. WATIR(Ruby+IE 기능적 테스트 기술)로 알려진 Bret Pettichord(@bpettichord)는 우리를 도와 Selenium을 테스트 계열에 합류시켰습니다.

2005-6

Pat Lightbody(@plightbo - Selenium을 사용하여 비밀리에 스타트업을 한 사람)과 Bea에 있던 Dan Fabulich(@dfabu)와 Nelson Sproul(@nasproul)은 ThoguhtWorks가 "B 모드"를 영구적으로 원격 조정 할 수 있도록 하기 위해 대규모 패치를 해야 한다고 제안하였습니다. "B 모드"는 OS에서 동작할 때 스크립트가 테스트를 수행하고, 브라우저 자체가 테스트를 수행하는 두 가지 과정을 거칩니다. RC는 두 과정 사이에 존재하는 새로운 과정을 추가했고, 한 개 이상의 장치가 Selenium 테스트를 수행할 수 있도록 만들었습니다. 이 테스트는 Mac과 Window IE에서 실행 가능한 스크립트로 만들어졌습니다. 패치를 적용함으로써 프로젝트의 지도부는 위원회가 되었고 서로 의견을 합의하여 운영을 하였습니다. 이것은 오늘날까지 지속되고 있습니다.

2005년도 후반에 미국이 아닌 인도의 ThoughtWorker Narayan Raman(@narayanraman)은 인도의 ThoughtWorker들과 웹 어플리케이션의 기능을 테스트하는 다른 스크립팅 방법인 "Sahi"를 시작하였습니다. Sahi는 Selenium에는 없었던 기록 기능뿐 아니라 테스트를 기술하는 다른 접근들을 포함하고 있었습니다. 하지만 그 시기에 Sahi는 많은 언어를 지원하지 않았습니다. 오늘날 Sahi는 계속되고 있고 Narayan이 ThoughtWorks를 떠난 후에 "Sahi Pro"가 상업화 되었습니다. Selenium 팀은 Sahi의 많은 장점들을 모방하였는데 테스트 가능성을 높이기 위해 페이지에 코드를 삽입하는 능력 등을 포함하고 있습니다.

일본의 Shinya Kasatani(@shinya)는 ThoughtWorks와 Selenium 위원회 외부에서 기록을 허용하는 IDE의 "Core" 코드를 효과적으로 포장해 넣는 Firefox 플러그인을 만들었습니다. 이것은 Selenium 스크립트를 수정하고 다시 재생할 수 있었습니다. 뒤따라 릴리즈된 IDE는 Java, C#, Ruby, Python 스크립트를 가능하게 했고, Selenium RC와 모든 브라우저를 타겟으로 향상된 스크립트 사용이 가능하도록 했습니다. 물론 기록은 Sahi가 매우 잘했던 일 중 하나입니다.

2007

2006년 후반부의 많은 개념 실험 이후, Simon Stewart( @shs96c - 오스트레일리아 ThoughtWorks의 컨설턴트 )는 2007년 초반에 "WebDriver"를 시작하였습니다. 이 경쟁 기술은 Selenium RC의 가장 큰 문제 중 하나를 브라우저를 원격 조종 과정의 정당한 Socket Listener로 만듦으로써 해결하였습니다. RC는 모든 브라우저에서 실행 가능한 JavaScript 코드가 한 세트 있었으나, WebDriver는 각 브라우저의 확장/플러그인을 가지고 있었습니다(이것은 C++ 코드나 Java 코드나 JavaScript코드나 C#코드나 각 브라우저에서 같은 형태를 가지고 있다는 것을 의미합니다). 이것은 더 좋은 디자인이었지만 Selenium RC/core보다 개발하기 좀 더 복잡했습니다. 그럼에도 이것은 RC의 한계 때문에 할 만한 가치가있는 일이었고 빠르게 ThoughtWorks 내부 사람들과 다른 사람들도 끌어들였습니다. WebDriver는 바이너리에 Selenium 코드들을 사용함으로써 시작부터 Selenium RC를 모방하였습니다. 만약 당신이 프로젝트에서 한 가지를 선택해야 한다면 Selenium RC모드 대신 WebDrvier 모드를 선택할 것입니다.

Selenium 위원회와 Simon(현재 런던 ThoughtWorker)는 서로 매우 많이 마주쳤습니다. 2007년 구글 GTAC 학회 기간 동안 Pat, Simon, Jason(그 당시엔 구글 소속)은 형식적인 Selenium의 역 인수에 대해 토론하였습니다. RC와 Core는 "Selenium 1"이 되고 WebDriver는 "Selenium 2"가 된다는 것이었습니다. 역 인수는 Simon과 그의 팀이 Selenium 위원회에 추가되면서 실행되었습니다. 우리는 모방을 유지하며 이전 Selenium 1 구현을 수년간 쉬었습니다.

2008

ThoughtWorker Philippe Hanrigou(@ph7)은 확장된 용량으로 Selenium RC를 사용할 수 있도록 하는 "Selenium Grid"를 만들었습니다. 특히 RC 브라우저들은 원격 장비의 탄력적인 용량을 빌려올 수 있었습니다. 이것은 하나의 테스트를 수행하여 병렬적인 멀티 쓰레딩(Multi Threading) 테스트를 할 수 있는 가능성을 포함하고 있습니다. 또한 많은 수의 브라우저(멀티 OS)를 사용할 수 있도록 하였습니다. 이것은 Pat이 스타트업에서 이미 한 것을 클린룸 재구현(Clean Room Reimplementation) 한 것입니다. 그리고 Jennifer Bevan은 구글 내부에서 매우 큰 부분을 개인적으로 수행했습니다.

2009

구글 ( Simon과 함께 )은 친절하게 WebDrvier를 engineering blog entry에 "소개"했습니다 :). Jason은 SauceLabs라는 클라우드 테스팅 스타트업을 런칭 하기 위해 구글을 떠났습니다.

역주 : 위에서 언급된 SauceLabs은 정말 만족스러운 서비스입니다. 개발환경 / 배포환경에서의 functional testing 을 수행하면서 Xvfb 의 부재로 동일한 환경에서 / 여러 브라우저로 테스트하기가 어려운 부분이 있는데 ( 로컬에서는 Firefox webdriver 로 돌리고, CI에서는 PhantomJS webdriver 로 수행하는 ) SauceLabs를 이용하면 이러한 문제를 쉽게 해결할 수 있습니다.

2011

이제 브라우저 제작자들은 Selenium의 기여가 필요하다는 것을 매우 잘 알거나 적어도 경의를 표하고 있습니다. David Burns (@AutomatedTester)는 Selenium2의 코드베이스에 큰 기여를 하였습니다 ( Mozilla의 Firefox팀은 훗날 이 슈퍼스타를 고용하여 Selenium의 최고 후원자가 되었습니다 ). Opera는 그들의 고유 WebDriver 구현으로 기여하였습니다. Chrome 팀은 WebDriver가 그들의 브라우저를 조정하는데 중재 서비스의 역할을 할 수 있도록 관리하기 시작했다. 다음 세 가지는 모두 플랫폼입니다. Mac의 Safari, IE, 모바일 버전의 핵심 브라우저들도 모두 적용되었습니다.

2014

Selenium이 수백 명 혹은 그 이상의 위원들과 기여자들에 의해 기능적 테스트를 위한 사실상의 표준(De Facto Standard)이 된지 2년쯤 되었습니다. 모든 브라우저와 OS에서 동작하는 것은 여전히 우리의 목표입니다. 거의 모든 ThoughtWorks의 임무는 Selenium, Sahi, WATIR중 하나를 사용하여 기능적 테스트를 수행하는 것입니다. 관용적으로 혹은 프레임워크와 라이브러리를 가속하여 ThoughtWorks가 QA 전문가가 되기 위한 진입 장벽을 낮추기 위해 만든 Twist를 포함하였습니다.

Pat은 Selenium을 사용하여 탄력적인 클라우드 용량에서 성능 테스트를 수행하는 두 번째 스타트업을 성공시켰습니다. Jason역시 기능적 테스트를 위한 확장 모드를 탄력적인 클라우드 서비스로 만들었습니다. Simon은 Facebook에서 Selenium 기본 설계와 관련된 일을 하고 있습니다.

Footnote

Selenium은 현재 Software Freedom Conservancy의 한 부분인 501(c)(3) 비영리 조직으로 다루어집니다. Selenium은 당신의 후원을 기다립니다.

시카고에서 열린 Selenium 10주년 파티를 놓쳤나요? 연설 이후 비디오를 확인해 보십시오.

Selenium's 10th Birthday Party: video played after speeches from Paul Hammant on Vimeo.

안수찬 @dobestan

안수찬 @dobestan

https://dobest.io/

소프트웨어 생태계에 기여할 수 있는 실용주의 프로그래머가 되고자 합니다. 나는 안수찬이다. 그러므로 나는 할 수 있다.

View Comments...