AI와 함께 Playwright E2E 테스트 아키텍처를 개선한 방법
기존 Playwright E2E 테스트 환경의 낮은 통과율(6%) 문제를 진단하기 위해 AI 기반 분석 도구를 활용하여 코드베이스(Codebase)를 분석
트레이서 불릿(Tracer Bullet) 방식을 통해 핵심 기능부터 점진적으로 개선하며, 테스트 격리(Test Isolation) 및 병렬 실행(Parallel Execution)을 위한 구조 설계
Playwright 피쳐(Fixture) 기반 아키텍처로 변경하여 테스트 코드 중복을 제거하고, API 호출 횟수 53% 감소 및 UI 테스트 설정 라인 수 62% 감소
CI 환경과 로컬 환경의 테스트 결과 불일치 문제 해결을 위해 테스트 종속성 관리(Test Dependency Management)를 위한 프로젝트 구조 변경
AI를 보조 도구로 활용하여 테스트 개선 작업을 자동화하고, AI의 한계점(Limitations)을 인지하며 지속적인 검증을 수행
AI를 활용한 테스트 코드 분석
본문에서는 AI를 활용하여 기존 E2E 테스트 코드의 문제점을 파악하고 개선 방향을 설정했다. AI는 Playwright 설정, 페이지 객체, 스펙 파일, CI 워크플로우(CI Workflows)를 분석하여 아키텍처(Architecture), 근본 원인(Root Causes), 안티패턴(Anti-patterns), 침묵 버그(Silent Bugs), 테스트 격리(Test Isolation)에 대한 분석 문서를 생성했다. AI는 코드베이스에 대한 이해를 돕고, 로컬 환경에서 테스트를 실행하기 위한 문제 해결에 기여했다. AI를 활용하여 테스트 코드의 문제점을 빠르게 파악하고, 개선 방향을 설정하는 것은 테스트 자동화 효율을 높이는 데 중요한 역할을 한다.
트레이서 불릿(Tracer Bullet) 방식의 점진적 개선
저자는 대규모 리팩토링(Refactoring) 없이 테스트 아키텍처를 개선하기 위해 트레이서 불릿(Tracer Bullet) 방식을 활용했다. 트레이서 불릿은 시스템의 핵심 부분을 먼저 구현하고, 점진적으로 확장해 나가는 방식이다. UI, API, MFE(Micro Frontend) 등 각 영역별로 8개의 트레이서 불릿을 생성하여, 피쳐(Fixture) 기반 테스트 구조를 검증하고, 병렬 실행을 위한 프로젝트 구조를 설계했다. 이 방식을 통해 시스템 전체를 한 번에 변경하는 위험을 줄이고, 각 단계별로 테스트를 검증하며 안정적으로 개선을 진행할 수 있었다. 특히, 의존성 그래프(Dependency Graph)를 활용하여 병렬 실행 가능한 불릿을 파악한 점이 효율적이었다.
Playwright 피쳐(Fixture) 기반 아키텍처로의 전환
기존의 반복적인 beforeAll/afterAll 블록을 Playwright 피쳐(Fixture)로 대체하여 테스트 코드의 중복을 제거하고 유지보수성을 향상시켰다. 특히, worker-scoped 피쳐(Worker-scoped Fixtures)를 활용하여 API 호출 횟수를 53% 감소시키고, UI 테스트 설정 라인 수를 62% 줄였다. worker-scoped 피쳐는 워커(Worker) 전체에서 공유되므로, API 호출과 같이 비용이 많이 드는 설정을 효율적으로 관리할 수 있다. 반면, 테스트별로 격리가 필요한 데이터는 test-scoped 피쳐를 사용하여, 테스트 간의 간섭을 방지했다. 이러한 피쳐 기반 아키텍처는 테스트 코드의 가독성을 높이고, 테스트 실행 속도를 향상시키는 데 기여했다.
AI 기반 테스트 개선 스킬(Skill) 구축
저자는 일관된 품질과 벤치마킹(Benchmarking)을 위해 pw-test-improvement라는 스킬을 구축했다. 이 스킬은 7단계의 엄격한 프로세스를 통해 테스트 변경 사항을 적용하고, Playwright의 모범 사례를 준수하도록 설계되었다. 스킬은 Playwright CLI를 사용하여 테스트를 실행하고 결과를 캡처하며, Playwright의 로케이터 우선순위(Locator Priority), 안티패턴(Anti-patterns) 목록, 마이그레이션 패턴에 대한 지식을 내장하고 있다. AI는 반복적인 작업을 자동화하고, 일관된 품질을 유지하는 데 기여했다. 하지만, AI의 제안에 대한 지속적인 검증과 문서(Docs)를 통한 확인은 AI의 한계를 보완하고, 신뢰도를 높이는 데 중요한 역할을 했다.
AI 활용의 장단점 및 협업 방식
저자는 AI를 보조 도구로 활용하여 테스트 아키텍처를 개선하는 과정에서 AI의 장단점을 명확히 인식하고, 효과적인 협업 방식을 구축했다. AI는 알려진 패턴을 적용하는 데 뛰어나지만, 새로운 것을 창조하는 데는 한계가 있다. 따라서, AI에게 명확한 프로세스를 제시하고, 지속적인 검증을 통해 신뢰도를 높였다. 또한, 여러 AI 도구를 병행 사용하고, AI의 답변에 대한 확신 수준을 확인하여, AI의 할루시네이션(Hallucination)을 방지하고, 문제 해결 능력을 향상시켰다. AI와 함께 작업할 때는, AI의 제안을 맹목적으로 따르기보다는, 끊임없이 질문하고, 문서(Docs)를 통해 검증하는 것이 중요하다.