Cypress와 Selenium 비교
시작하기에 앞서
Cypress 사이프레스를 공부하며, 이후 프로젝트에 어떤 테스트 툴을 도입하는 것이 좋을까 고민이 되어 이 포스트를 작성하게 되었습니다. Selenium은 지금까지 사용해 본 적은 없습니다만, 이번기회에 가볍게 공부 해 볼까 생각이 드네요.
그럼, 둘의 특징에 대해서 먼저 살펴 봅시다.
Cypress란
JavaScript End to End Testing Framework
Fast, easy and reliable testing for anything that runs in a browser. Install Cypress in seconds and take the pain out of front-end testing.
www.cypress.io
Cypress는 JavaScript로 작성된 자동 테스트 툴입니다. QA나Developer를 대상으로 만들어져, 이하의 테스트에서 사용됩니다.
- Unit test(단위 테스트)
- Integration test(통합 테스트)
- End to End test
무료와 유료판이 있어, 유저수나 테스트 건수 등의 차이가 있습니다.
Cypress의 장점
- 테스트의 기록:동영상이나 스크린 샷을 자동으로 작성 할 수 있다.
- 테스트의 자동화:Jenkins 젠킨스, Docker 도커 등의 CI파이프 라인을 통해 실행이 가능해 테스트의 완전 자동화가 가능하다.
- 실시간 reload 리로드:테스트를 실행하고 있는 도중에 테스트 코드의 수정이 있는 경우, 자동적으로 리로드해 재실행을 해 준다.
- Spies, stubs, clocks:함수의 동작, 서버의 리스폰스. 타이머 등의 기능을 사용 가능하다.
- 디버그:디버그가 가능하므로, 테스트 코드의 에러에 대처하기 용이하다.
- 자동대기:wait나sleeps를 사용할 필요가 없다. 특정한 기대치나 동작이 나올 때 까지 자동적으로 대기하는 코드가 작성 가능하여, 테스트 중 타임아웃의 발생 위험이 적다.
Cypress의 한계점
- 동시에 둘 이상의 브라우저를 조작 할 수 없다.
- JavaScript로 밖에 기술할 수 없다.
selenium란
Selenium
Selenium automates browsers. That's it!
www.selenium.dev
selenium 셀레니움은 웹 브라우저의 조작을 자동화 하는 프레임 워크입니다. 테스트의 자동화 이외에도, 웹 크롤링이나 태스크의 자동화 등에도 사용됩니다.
JavaScript로만 기술 할 수 있는 Cypress와는 다르게, Python나 Java등 여러 언어로 기술이 가능합니다.
selenium의 기동을 위해서는 반드시 웹 브라우저의 web driver 웹 드라이브의 설치가 필요합니다.
selenium의 장점
- 언어・프레임 워크:Java, Ruby, Python등 여러 언어와 그 언어의 여러 프레임 워크를 사용 할 수 있다.
- 브라우저:Cypress와 비교해, Safari한 보다 많은 브라우저를 지원하고 있다.
- API:간결한 API를 제공한다.
- 테스트 이외의 용도로 사용 가능하다.
selenium의 한계
- 환경구축의 번거로움:Cypress의 경우, Cypress만 설치하면 바로 이용이 가능하지만, selenium은 각 브라우저의 web driver를 설치할 필요가 있다.
- Cypress에 비해 테스트 작성에 다소 시간이 걸린다.
정리
Cypress | Selenium | |
---|---|---|
언어 | JavaScript | Java, Python, Ruby, C#, PHP 등 |
브라우저 | Chrome, Edge, Firefox(beta), Electron | Chrome, IE, Safari, Edge, Firefox, Opera |
프레임 워크 | Mocha JS | 각 언어별 여러 프레임 워크를 지원 (예:Javaーselenide, QAFな등 PythonーSeleniumBaseなど) |
환경구축 | Cypress만 설치하면 바로 사용 가능. 그 외 특별히 필요한 것은 없음. | Cypress와 비교해, web driver의 섪치 등 환경구축이 번거로운 편이다. |
개인적인 평가 | - 도입하기에 가볍다. - CI에 도입이 가능하기 때문에 완전한 테스트 자동화가 가능하다. |
- 테스트 이외의 용도에 쓸 수 있다는 점이 매력적이다. - Cypress보다 대응하는 언어나 브라우저가 풍부하다. |
여기까지 읽어주셔서 감사합니다.