#DevOps

Retail Platform QA 자동화 여정

Retail Platform QA 자동화 여정
01

Summary

하루 걸리던 회귀 테스트를 단 30분 만에! 무신사의 스마트 QA 자동화 혁신기

Playwright부터 AI 기반 마인드맵 TC 생성기까지, 반복 없는 품질 보증 파이프라인을 향한 무신사의 도전

수동으로 진행되던 무신사 오프라인 플랫폼의 대규모 회귀 테스트를 엔드투엔드로 자동화한 실전 기록을 소개합니다. 이 글은 Playwright를 도입한 UI 테스트 구조 개선부터 슬랙 봇 기반 셀프서비스 실행, 그리고 생성형 AI를 활용한 테스트 설계서 및 케이스 자동 생성기 구현까지 전 과정을 다룹니다. QA 조직의 생산성을 극대화하고 엔지니어가 더 중요하고 깊이 있는 검증 영역에 집중할 수 있는 이상적인 자동화 비전을 제공합니다.

  • 01Playwright의 Auto-wait 및 네트워크 인터셉트 기능을 통해 네트워크 지연과 엣지케이스 테스트를 안정화
  • 02Page Object Model 디자인 패턴을 적용해 UI 레이아웃이 바뀌어도 테스트 코드가 쉽게 유지보수될 수 있는 구조 설계
  • 03Worker-scoped fixture 기반으로 Okta 로그인 세션을 병렬 공유하여 수십 건의 로그인 중복을 제거하고 수행 속도 단축
  • 04Socket Mode 기반의 Slack 봇 @doomto 개발을 통해 기획자, 개발자 등 비QA 인원도 원클릭으로 테스트를 자율 실행하게 지원
  • 05기획서(PRD, 피그마 등)를 입력하면 Claude와 Gemini가 트리 마인드맵을 구상하고 상세 테스트케이스 초안을 자동 빌드해 주는 프로세스 구현

RECOMMENDATION

반복적인 회귀 테스트와 대규모 테스트 문서 작성에 치여 정작 중요한 품질 탐색에 시간을 쓰지 못하는 모든 QA 엔지니어 및 CI/CD 인프라 담당자에게 적극 권장합니다.

The Problem

오프라인 매장 플랫폼의 서비스 다각화와 매주 반복되는 정기 배포로 인해, 수동 회귀 테스트에 매번 하루 이상이 소요되는 리소스 부족 문제가 발생했습니다. 또한, 신규 기능 배포 시 테스트케이스와 테스트 플랜을 수동으로 문서화하는 작업이 큰 시간적 병목이 되었습니다.

The Solution

Playwright와 TypeScript를 사용해 POM 패턴 기반의 E2E UI 테스트를 자동화하고, 워커 수준에서 Okta 로그인 세션을 공유하여 실행 속도를 높였습니다. 소켓 모드 슬랙 봇과 슬랙 리포터를 구축해 접근성을 넓혔으며, Claude와 Gemini를 활용하여 기획서 기반으로 테스트케이스와 마인드맵을 자동 완성하는 AI 도구를 도입했습니다.

The Result

하루 종일 소요되던 정기 배포 회귀 테스트 시간이 자동화 범위 기준 30분으로 단축되었고, 슬랙 봇을 통해 비기술 인원도 셀프 테스트가 가능해졌습니다. 기획 문서를 기반으로 한 테스트 플랜과 TC 생성 시간이 획기적으로 줄어들어 QA 엔지니어가 고부가가치 업무인 리뷰와 탐색적 테스트에 더 집중할 수 있게 되었습니다.

Trade-off

네트워크 및 외부 API의 응답 속도 편차로 인한 UI 테스트의 Flakiness 현상이 존재하므로 실패 알림 시 추가 검증 노력이 필요합니다. 또한 슬랙 소켓 모드 연결 안정성을 위해 6시간 주기로 강제 재부팅을 수행 중이어서 재시작 시점에 수신된 명령어가 유실될 수 있는 구조적 한계가 있습니다.

03

Key Concepts

Concept · 01

Playwright

Microsoft가 개발한 최신 웹 브라우저 자동화 라이브러리로 하나의 API로 다중 브라우저를 빠르고 안정적으로 자동 제어할 수 있는 도구입니다.

  • 자동 대기(Auto-wait)로 요소 대기를 효율화하고 네트워크 인터셉트로 특정 엣지케이스를 Mocking하여 테스트 유연성 극대화
  • 실패한 테스트에 대해 스크린샷과 DOM 상태, 네트워크 로그 타임라인을 일목요연하게 시각화해 주는 Trace Viewer 적극 활용
Concept · 02

Page Object Model (POM)

UI 변경 시 유지보수 편의를 돕는 테스트 디자인 패턴으로, 실제 화면 조작 역할을 담당하는 레이어와 무엇을 검증하는지 테스트 시나리오를 검증하는 레이어를 분리하는 구조입니다.

  • 버튼 클릭, 텍스트 입력 등의 화면 제어 로직을 독립된 Page 객체 내부로 캡슐화 처리함
  • UI 개편 등 사소한 화면 변화가 생겨도 시나리오 테스트 코드를 건드리지 않고 개별 Page 클래스 하나만 고쳐 대응 가능하게 설계함
Concept · 03

Socket Mode

외부 인바운드 HTTP 요청을 허용하기 위한 전용 서버나 공인 IP 없이도, WebSocket 연결을 사용해 외부 서비스(Slack)의 이벤트를 수신할 수 있도록 지원하는 연결 프레임워크입니다.

  • 슬랙 API의 소켓 모드를 활용하여 까다로운 외부 통신 엔드포인트 구축 없이 GitHub Actions 환경에서 손쉽게 알림 및 수신 봇 가동
  • 장시간 가동 시의 연결 유실 단점을 보완하고자 Actions 환경에서 6시간마다 워크플로우를 강제 재시작하는 안정화 조치 도입