일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 구조 패턴
- amazon ecs
- DevOps
- 지표
- 청첩장 모임
- terraform
- 신혼 여행
- MAPF
- 경로 계획 알고리즘
- leetcode
- 오블완
- 생성 패턴
- 디자인 패턴
- Go-lang
- ssh
- 실용주의 프로그래머
- study
- github
- Rust
- Monthly Checklist
- 논문 정리
- Til
- AWS 비용 절감
- 티스토리챌린지
- docker
- PostgreSQL
- AWS
- Playwright
- 도커 주의사항
- 14일 공부
- Today
- Total
밤 늦게까지 여는 카페
테스트 자동화 툴 조사 - 이렇게 Playwright를 도입하게 되었습니다. 본문
안녕하세요. 이제 본격적으로 날씨가 더워지고 있습니다.
슬슬 낮에 산책 나가기도 어려워지지 않을까 걱정되네요 ㅜㅠ
이번에는 테스트 자동화에 Playwright를 도입하게 된 여정(?)을 기록해보려고 합니다.
1. 상용 소프트웨어
제일 먼저 고민했던 것은 이미 기능이 구현되어 있은 상용 소프트웨어를 구매해서 사용할지 오픈소스를 이용해서 필요한 기능들은 직접 개발할지였습니다.
상용 소프트웨어들 중에 후보로 올랐던 것은 Testsigma, Katalon Studio, TestMonitor, TestComplete입니다.
1차적으로 비용부터 비교했습니다.
(Testsigma는 가격을 공개하지 않고, 문의를 해야만 알 수 있는 형태여서 조금 불편했습니다ㅜ)
- Testsigma: Pro 버전, 연 4800달러, 월 400달러
- Katalon Studio: Premium 버전, 연 2099달러, 월 175달러
- TestMonitor: Pro 버전, 연 4788달러, 월 399달러
- TestComplete: Pro 버전, 연 6029달러, 월 503달러 정도
처음에는 가장 저렴한 Katalon Studio를 사용하려고 했습니다.
- 무료 버전으로 간단하게 PoC를 진행하며 필요한 기능들을 모두 만족하는 것을 확인했고
- Katalon Studio의 사용 경험이 있는 분도 있고
- GUI 앱을 수동으로 조작하면서 테스트 케이스를 만들 수 있는 Play-and-Record 기능을 지원하는 것이 큰 장점이었습니다.
하지만 이내 불합리한(?) 요금 정책 때문에 오픈소스로 넘어가게 되었는데요...
바로 테스트 케이스를 export 하는 것이 유료인 것에 마음이 퍽 상해버렸습니다 ㅋㅋㅋ...
이것을 계기로 상용 소프트웨어 대신에 오픈소스 프로젝트를 사용하기로 결심하게 되었습니다.
2. 오픈소스 프로젝트 비교
다음으로 오픈소스 프로젝트 테스트 툴들을 비교했습니다.
2.1. Selenium - 이것 저것 연동할 게 많이 필요하다
Selenium은 웹어플리케이션의 자동화 테스트를 위한 프로젝트입니다.
2004년 시카고의 SW 회사 Thoughtworks 에서 시작되었고 지금은 오픈소스 프로젝트로 운영되고 있습니다.
Selenium Webdriver, Selenium IDE, Selenium Grid 등 여러 SW로 이뤄져 있으며 모두 자동화 테스트를 위한 툴들입니다.
참고 링크
학생 때 과제를 위해서 웹사이트 스크래핑을 하거나 쇼핑몰 포인트 자동 적립 스크립트 같은 것을 만들면서 Selenium이 익숙했지만
범용성, 사용성, 그 외 기능들을 검토하기 위해 다시 한번 Selenium을 이용해서 파이썬으로 테스트 케이스를 만들어 봤습니다.
만든 테스트 케이스를 공유드릴수는 없지만 한 문장으로 정리하면 "Selenium으로는 부족하다" 였습니다.
버튼을 클릭하거나 텍스트 필드에 값을 채우기 위해서는 어떤 element인지 찾아야 하는데 aria-label 혹은 테스트 전용 id를 지원하지 않아 불편했습니다.
또한, 테스트 케이스 관리, 테스트 결과 리포트 생성 기능과 같이 편의성을 위한 기능들도 다른 라이브러리나 프레임워크를 연동해야 합니다.
대규모의 테스트 인프라를 직접 만들 때에는 선택지가 될 수도 있겠지만 빠르고, 작게 시작하기에는 적합하지 않다고 판단했습니다.
2.2. Robot Framework
Selenium 다음으로 알아본 것은 Robot Framework였습니다.
Robot Framework는 Pekka Klärck라는 분의 석사 논문으로 처음 만들어졌으며 2008년에 오픈소스로 처음 공개되었습니다.
파이썬으로 만들어졌으며
공식 문서만 봐서는 프레임워크의 장단점을 체감하기 어려워서 이번에도 테스트 케이스를 만들어 봤습니다.
결과물을 보니 Selenium 보다는 사용성이 좋았습니다.
Robot Framework이 제공하는 Selenium 라이브러리를 이용해서 조금 더 편하게 테스트 케이스를 만들 수 있었습니다.
거기에 테스트 결과 리포트도 생성해주더라고요!
- 하지만 Play and Record 기능은 지원하지 않더라고요 ㅜ
Robot Framework에 익숙해지면 괜찮을까 싶었지만
github star 수도 상대적으로 적고(2024년 5월 21일 기준 9.3k), Robot Framework만의 문법을 익히는데 러닝 커브가 있어서 결정을 유보하게 되었습니다.
P.S.
찾아볼 때에는 Robot Framework를 추천하는 글들이 많았는데 조금 더 찾아보니 인기가 없더라고요...
2.3. Playwright - 좋아, 너로 정했어!
Selenium과 Robot Framework에 만족하지 못한 제가 이것저것 찾고 있을 때 추천받았던 것이 바로 Playwright였습니다.
github 스타 수도 많고, 마이크로소프트 사에서 만든 오프소스라는 것이 제일 먼저 눈에 들어왔습니다.
element를 찾는 방법도 상대적으로 쉬웠으며
즐겨 사용하는 에디터인 vscode와의 연동도 잘되서 사용성이 좋았습니다.
테스트 결과도 깔끔하게 정리해주는 reporter가 있으며 이를 직접 만들 수도 있습니다.
빌트인 리포터인 html 리포터가 굉장히 마음에 들더라고요!
테스트 케이스도 만들기 쉬워서 Playwright를 사용하는 것으로 결정하게 되었습니다.
3. 다음 작업들
Playwright로 테스트 케이스를 만들었다고 일이 끝난 것은 아니더라고요...!
당장 식별된 작업들만 해도 아래 세가지는 있었습니다.
1) E2E 테스트를 진행할 서버, 클라이언트의 버전은 어떻게 관리할지
2) 테스트를 진행할 서버, 클라이언트를 어떻게 실행할지
- 로컬 환경에서 실행할지, 클라우드에서 실행할지, 다수의 머신을 어떻게 관리할지 등
3) 테스트 케이스는 누가 작성할지
앞으로 하나씩 하나씩 해보겠습니다 ㅎㅎ
요즘 회사일이 바빠져서 공부한 내용들을 정리하는 횟수가 부쩍 줄어든 것 같습니다.
그래도 좋은 방향으로 바빠져서 기분은 좋네요 ㅎㅎ
요즘에는 생성형 AI를 사용해보고 있는데 생각보다 성능이 많이 좋더라고요.
뤼튼에서 제공하는 GPT4를 이용해서 Selenium으로 만들었던 테스트 케이스를 Robot Framework로 변환해봤는데 결과물이 만족스러웠습니다.
그 외의 질문에도 좋은 답변을 줘서 작업 속도를 향상시킬 수 있었습니다.
아직까지 개발 업무에 AI를 활용하는 것이 미숙한데 이번 기회에 익숙해지려고 합니다 ㅎㅎ
'유용한 툴 > 테스트 자동화' 카테고리의 다른 글
Playwright 불편한 점 - 부분문자열로 컴퍼넌트를 찾지 못하는 getByTestId 메소드 (0) | 2024.07.07 |
---|---|
Playwright 스크립트에서 API 응답을 이용하여 테스트 케이스를 동적으로 생성하기 - Playwright 불편한 점 #1 (0) | 2024.06.30 |
Playwright를 활용한 시뮬레이션 작업 - 짧게 짧게 끊어서! (0) | 2024.06.23 |