#DevOps

빠른 기기가 왜 기다려야 하지?

빠른 기기가 왜 기다려야 하지?
01

Summary

놀고 있는 테스트 기기는 없다! 무신사의 테스트 자동화 3.0 전환기

공유 Queue 기반 동적 분배와 대기 시간 단축으로 모바일 BVT 수행 시간을 절반으로 줄인 비결

무신사 Automation QE팀이 모바일 BVT(Build Verification Test) 파이프라인의 효율성을 극대화하기 위해 테스트 자동화 프레임워크 3.0을 구축한 과정을 다룹니다. 고정 시나리오 배정 방식에서 공유 Queue 기반 동적 분배 구조로 전환하고 디바이스 관리를 중앙화하여 execution time을 50% 이상 단축했습니다. 모바일 빌드 검증 속도와 테스트 가동률을 끌어올리고 싶은 개발팀에게 뛰어난 인사이트를 제공합니다.

  • 01고정 시나리오 배정 방식 대신 공유 Queue 기반 동적 작업 분배 구조 도입
  • 02iOS BVT 시간 25분→12분, Android BVT 시간 20분→10분으로 단축
  • 03기기 추가 시 스크립트 작성 없이 중앙 서버 등록만으로 즉시 파이프라인 참여
  • 04세션 기동 및 정착 시간 최적화를 통해 시나리오 개별 실행 시간 대폭 단축
  • 05Slack 스레드 통합 및 실시간 모니터링 대시보드 구축으로 알림 노이즈 축소

RECOMMENDATION

모바일 앱 BVT나 E2E 테스트 실행 시간이 길어 고민 중인 QE 및 DevOps 엔지니어에게 적극 추천합니다. 고정 배정 방식의 한계를 극복하고 디바이스 자원을 극대화하는 동적 큐 아키텍처 및 세밀한 대기 시간 최적화 기법을 실무에 적용해 보세요.

The Problem

기존 테스트 자동화 프레임워크 2.0에서는 기기별로 테스트 시나리오 목록이 고정 배정되어 가장 늦게 끝나는 기기에 의해 전체 수행 시간이 결정되었습니다. 또한 새로운 기기를 추가할 때마다 전용 스크립트를 새로 작성해야 하여 관리 부담 및 설정 오류 위험이 존재했습니다.

The Solution

공유 Queue 방식을 도입해 개별 기기가 작업을 완료하는 즉시 다음 시나리오를 가져가는 동적 분배 구조로 개선했습니다. 또한 디바이스 설정을 중앙 서버로 일원화하고 Slack 알림 수신 방식을 단순화하였으며, 세션 기동 및 탐색 루프의 암묵 대기 시간을 최적화했습니다.

The Result

테스트 완료 시간이 iOS는 25분에서 12분으로, Android는 20분에서 10분으로 단축되었으며, 총 기기 소요 시간도 각각 16%, 12% 절감되었습니다. 기기 등록 절차가 단순화되어 기존 4대에서 7~10대까지 파이프라인 확장이 용이해졌습니다.

Trade-off

공유 Queue 도입에도 불구하고 수행 시간 긴 시나리오가 마지막에 남아있을 경우 다른 기기들이 대기하는 병목 현상이 완벽히 사라지지는 않습니다. 또한 중앙 QE 서버에 디바이스 관리 의존성이 생기고 대시보드 및 서버 인프라 유지 관리가 필요합니다.

03

Key Concepts

Concept · 01

공유 Queue (Shared Queue)

실행할 전체 테스트 시나리오를 하나의 중앙 큐에 등록하고, 각 기기가 작업 완료 시 동적으로 다음 시나리오를 할당받아 수행하는 구조입니다.

  • 기기별 성능 차이나 상황 변화에 맞춰 빠른 기기가 더 많은 테스트를 자동 처리하도록 구현했습니다.
  • 기기 추가 시 별도의 시나리오 재배분 스크립트 없이 즉시 테스트 작업에 참여시켰습니다.
Concept · 02

BVT (Build Verification Test)

새로운 소프트웨어 빌드나 배포가 완료된 직후 주요 핵심 기능이 정상 동작하는지 검증하는 정기 자동화 테스트입니다.

  • 앱 빌드 및 FE 배포 완료 후 실기기 환경에서 BVT를 자동으로 실행하도록 트리거를 구성했습니다.
  • 테스트 결과를 Slack 스레드와 TMS(Test Management System)에 실시간으로 전송하도록 통합했습니다.
Concept · 03

Appium

모바일 Web, Native, Hybrid 애플리케이션의 자동화 테스트를 지원하는 크로스 플랫폼 오픈소스 프레임워크입니다.

  • 실기기에 연결하여 모바일 앱 BVT 시나리오를 자동 실행하는 드라이버로 활용했습니다.
  • 세션 재사용 및 기동 시간 단축 최적화를 적용해 Appium 실행 대기 시간을 축소했습니다.