□ 테스트의 의미와 종류
1. 테스트란?
- 애플리케이션이 요구 사항에 맞게 동작 하는지를 검증하는 행위
- 테스트 주도 개발이 대중화 되면서, 테스트는 개발 단계의 일부로 자리 잡았고 그로 인해, 개발자가 테스트 코드를 직접 작성하게 되면서 더 적극적으로 리팩토링 등의 코드 개선을 할 수 있어 코드 품질이 향상되며, 테스터와의 불필요한 커뮤니케이션 비용이 감소한다.
2. 테스트의 종류
테스트 종류 | 장점 | 단점 |
단위 테스트 | - 세밀한 부분까지 테스트 가능 - 통합 테스트에 비해 빠른 테스트 수행 | - 모의 객체 사용으로 상호 작용 검증 불가 - 사소한 API 변경에 민감하여 리팩토링 시 깨질 수 있음 |
통합 테스트 | - 모듈 간의 연결에서 발생하는 에러 검증 가능 - 넓은 범위의 API 변경에 덜 민감함 | - 복잡한 알고리즘 테스트 시 번거로움 - 테스트 중복 발생 확률 높음 |
E2E 테스트 | - 실제 사용자 환경에서 테스트 가능 - 큰 범위의 리팩토링에도 깨지지 않음 | - 실행 속도가 느려 빠른 피드백 어려움 - 다양한 상황 조합 고려해야 하여 작성 어려움 - 중복 발생 가능성 있음 |
□ E2E 테스트 도구 선정
1. E2E 자동화 테스트 도구의 종류
종류 | 장점 | 단점 |
Selenium | - 다양한 브라우저와 플랫폼 지원 - 커뮤니티와 문서가 풍부하여 학습 자료가 많음 | - 설정 및 유지보수가 복잡할 수 있음 - 속도가 느릴 수 있음 |
Playwright | - 여러 브라우저 지원 (CHromium, Firefox, WebKit) - 강력한 API와 빠른 속도 | - 상대적으로 새로운 도구로, 커뮤니티와 자료가 적음 |
Puppeteer | - Chrome 전용으로 최적화되어 있어 빠른 속도 - 간단한 API로 사용이 용이 | - Chrome 전용이므로 다른 브라우저 지원이 필요할 경우 추가 작업이 필요함 |
Cypress | - 실시간 테스트 실행 및 디버깅 기능 제공 - 설정이 간단하고 사용이 쉬움 | - 여러 탭이나 브라우저 창 간의 테스트가 어려움 - 같은 도메인에서만 테스트 가능 |
2. E2E 자동화 테스트 도구 선정 기준과 “Cypress”
- 설정이 간단하고 사용이 쉬워야한다.
- 개발자의 경우 E2E 테스트를 코드로 작성할 수 있지만 비슷한 코드들 반복적으로 작성해야 하기
때문에 테스트 케이스 수만큼 코드 작성 시간이 오래 걸리는 점을 보완할 수 있는 도구
- 비개발자의 경우 E2E 테스트하기 위해서 프로그래밍을 배워야 하는 러닝 커브를 보완할 수 있는 도구
- 비 개발자도 쉽게 사용 및 테스트 코드 작성이 가능한 Cypress Studio 기능 제공
- npm 패키지 제공
; Cypress는 npm 패키지로 제공되어 npm install을 통해 설치가 가능하다.
; React 프로젝트 내에 설치 후 cypress open 이라는 명령어를 통해 쉽게 실행 가능하며, 패키지와 함께 형상관리에 적합하다.
- 실시간 테스트 및 디버깅
; 실시간 테스트 실행 및 디버깅 기능을 제공하여, 개발자가 코드를 작성하면서 즉시 결과를 확인할 수 있는 점도 큰 장점이다. 이러한 기능은 개발 속도를 높이고, 버그를 조기에 발견할 수 있도록 도와준다.
□ 결론
- Cypress는 현대적인 웹 애플리케이션을 위한 강력한 E2E 테스트 도구로, 다음과 같은 주요 장점을 제공한다.
- 간편한 설정과 사용자 친화적인 인터페이스
- 실시간 테스트 실행 및 디버깅 기능
- 개발자와 비개발자 모두가 비교적 쉽게 사용할 수 있는 Cypress Studio 기능
- npm 패키지로 제공되어 쉬운 설치와 프로젝트 통합
이러한 특징들로 인해 Cypress는 개발 프로세스를 개선하고, 테스트 작성 및 유지보수를 용이하게 만들어 준다. 결과적으로 더 안정적이고 높은 품질의 개발할 수 있게 도와준다.
□ 적용사례
- OOOOO 프로젝트에 Cypress를 UI 테스트형태로 적용하였을 때 느낀 점
; Studio 기능을 사용해도 테스트 코드 작성에 걸리는 시간이 상당히 걸리지만 작성이 완료되면 그 이후 테스트를 수행하는 시간이 획기적으로 단축되기에 충분히 도입해볼만 하다고 생각한다.
⭐ 발표자 : 이선우님
□ 테스트의 의미와 종류
1. 테스트란?
2. 테스트의 종류
테스트 종류
장점
단점
단위 테스트
- 세밀한 부분까지 테스트 가능
- 통합 테스트에 비해 빠른 테스트 수행
- 모의 객체 사용으로 상호 작용 검증 불가
- 사소한 API 변경에 민감하여 리팩토링 시 깨질 수 있음
통합 테스트
- 모듈 간의 연결에서 발생하는 에러 검증
가능
- 넓은 범위의 API 변경에 덜 민감함
- 복잡한 알고리즘 테스트 시 번거로움
- 테스트 중복 발생 확률 높음
E2E 테스트
- 실제 사용자 환경에서 테스트 가능
- 큰 범위의 리팩토링에도 깨지지 않음
- 실행 속도가 느려 빠른 피드백 어려움
- 다양한 상황 조합 고려해야 하여 작성 어려움
- 중복 발생 가능성 있음
□ E2E 테스트 도구 선정
1. E2E 자동화 테스트 도구의 종류
종류
장점
단점
Selenium
- 다양한 브라우저와 플랫폼 지원
- 커뮤니티와 문서가 풍부하여 학습 자료가 많음
- 설정 및 유지보수가 복잡할 수 있음
- 속도가 느릴 수 있음
Playwright
- 여러 브라우저 지원 (CHromium, Firefox, WebKit)
- 강력한 API와 빠른 속도
- 상대적으로 새로운 도구로, 커뮤니티와 자료가 적음
Puppeteer
- Chrome 전용으로 최적화되어 있어 빠른 속도
- 간단한 API로 사용이 용이
- Chrome 전용이므로 다른 브라우저 지원이 필요할 경우 추가 작업이 필요함
Cypress
- 실시간 테스트 실행 및 디버깅 기능 제공
- 설정이 간단하고 사용이 쉬움
- 여러 탭이나 브라우저 창 간의 테스트가 어려움
- 같은 도메인에서만 테스트 가능
2. E2E 자동화 테스트 도구 선정 기준과 “Cypress”
- 설정이 간단하고 사용이 쉬워야한다.
- 개발자의 경우 E2E 테스트를 코드로 작성할 수 있지만 비슷한 코드들 반복적으로 작성해야 하기
때문에 테스트 케이스 수만큼 코드 작성 시간이 오래 걸리는 점을 보완할 수 있는 도구
- 비개발자의 경우 E2E 테스트하기 위해서 프로그래밍을 배워야 하는 러닝 커브를 보완할 수 있는 도구
- 비 개발자도 쉽게 사용 및 테스트 코드 작성이 가능한 Cypress Studio 기능 제공
- npm 패키지 제공
; Cypress는 npm 패키지로 제공되어 npm install을 통해 설치가 가능하다.
; React 프로젝트 내에 설치 후 cypress open 이라는 명령어를 통해 쉽게 실행 가능하며, 패키지와 함께 형상관리에 적합하다.
- 실시간 테스트 및 디버깅
; 실시간 테스트 실행 및 디버깅 기능을 제공하여, 개발자가 코드를 작성하면서 즉시 결과를 확인할 수 있는 점도 큰 장점이다. 이러한 기능은 개발 속도를 높이고, 버그를 조기에 발견할 수 있도록 도와준다.
□ 결론
- Cypress는 현대적인 웹 애플리케이션을 위한 강력한 E2E 테스트 도구로, 다음과 같은 주요 장점을 제공한다.
이러한 특징들로 인해 Cypress는 개발 프로세스를 개선하고, 테스트 작성 및 유지보수를 용이하게 만들어 준다. 결과적으로 더 안정적이고 높은 품질의 개발할 수 있게 도와준다.
□ 적용사례
- OOOOO 프로젝트에 Cypress를 UI 테스트형태로 적용하였을 때 느낀 점
; Studio 기능을 사용해도 테스트 코드 작성에 걸리는 시간이 상당히 걸리지만 작성이 완료되면 그 이후 테스트를 수행하는 시간이 획기적으로 단축되기에 충분히 도입해볼만 하다고 생각한다.
⭐ 발표자 : 이선우님