playwright 를 쓰면 e2e 테스트라고 하는건 비약이지? 테스트 크기에 따라 단위, 통합, e2e 로 가는거라고 생각해 나는.

실제 백엔드 DB 까지 연결해서 모든 사용자 플로우를 검증하는게 e2e 고, 통합은 개발 환경에서 실제 환경과 유사하게 테스트하는거를 통합이라고 생각해서,

메모리 DB 구축하고, 로그인, 각종 CRUD 등을 프론트엔드단에서 구축한 것들로 검증할 수 있게끔 하는게 통합 테스트라고 봐서 그렇게 구성하고 있어.

내 생각이 맞는건지? 궁금하네

내 생각에는 Playwright를 사용하는 것이 반드시 E2E 테스트라고 단정하는 것은 비약일 수 있다는 말씀에 전적으로 동의합니다. 그리고 테스트 크기에 따라 단위(Unit), 통합(Integration), E2E(End-to-End)로 구분하는 접근 방식 역시 타당하다고 생각합니다.

말씀하신 각 테스트 레벨에 대한 정의도 매우 적절합니다.

  • E2E 테스트: “실제 백엔드 DB까지 연결해서 모든 사용자 플로우를 검증하는 것”이라는 정의는 E2E 테스트의 본질을 정확하게 짚어내고 있습니다. 실제 사용자가 시스템을 사용하는 것처럼 전체 시스템이 기대대로 작동하는지 검증하는 것이 목적이므로, 실제 DB 및 모든 시스템 구성 요소가 포함되어야 합니다.

  • 통합 테스트: “개발 환경에서 실제 환경과 유사하게 테스트하는 것”이라는 말씀도 정확합니다. 그리고 구체적으로 “메모리 DB를 구축하고, 로그인, 각종 CRUD 등을 프론트엔드단에서 구축한 것들로 검증할 수 있게끔 하는 것”을 통합 테스트로 보고 계신 점이 특히 좋습니다. 이는 백엔드 서비스나 외부 시스템과의 연동을 부분적으로 Mocking하거나 Stubbing하여, 연동 지점들이 올바르게 작동하는지 확인하는 전형적인 통합 테스트의 접근 방식입니다. 프론트엔드 관점에서 백엔드 API와의 연동 로직이나 여러 컴포넌트 간의 상호작용을 검증하는 데 매우 효과적입니다.

Playwright의 역할:

Playwright는 웹 브라우저 자동화 도구입니다. 이 도구 자체는 특정 테스트 레벨에 묶여있지 않습니다.

  • 통합 테스트에서 Playwright 사용: 말씀하신 것처럼 프론트엔드 단에서 메모리 DB나 Mocking된 백엔드를 사용하여 로그인, CRUD 등을 테스트할 때 Playwright를 사용할 수 있습니다. 이 경우 Playwright는 브라우저를 자동화하여 프론트엔드 컴포넌트 간의 상호작용이나 Mock된 백엔드와의 연동을 검증하는 “통합 테스트” 도구로 활용되는 것입니다.

  • E2E 테스트에서 Playwright 사용: 반대로 Playwright를 사용하여 실제 백엔드 DB와 연동된 배포된 환경에서 사용자 플로우를 처음부터 끝까지 검증한다면, 이때 Playwright는 “E2E 테스트” 도구로 활용되는 것입니다.

결론적으로, Playwright는 웹 애플리케이션의 UI를 통한 테스트를 자동화하는 강력한 도구이지만, 이 도구를 사용하여 어떤 레벨의 테스트를 수행하는지는 테스트 스코프와 환경 설정에 따라 달라집니다.

따라서 Playwright를 쓴다고 해서 무조건 E2E 테스트라고 하는 것은 비약이라는 말씀과, 테스트 레벨을 단위, 통합, E2E로 구분하고 각 레벨에 대한 정의를 내리신 부분, 그리고 현재 구성하고 계신 통합 테스트 방식 모두 매우 합리적이고 올바른 접근 방식이라고 생각합니다.