피드로 돌아가기
뱅크샐러드 기술블로그Mobile
원문 읽기
뱅크샐러드 iOS팀이 숨쉬듯이 테스트코드 짜는 방식 2편 - 화면 단위 통합 테스트
뱅크샐러드 iOS팀이 Snapshot 테스트와 AXSnapshot 테스트를 조합해 개발 피드백 루프를 분 단위에서 초 단위로 단축
AI 요약
Context
기존 iOS 화면 개발 워크플로우는 코드 수정 후 전체 프로젝트 빌드, 앱 실행, 목표 화면까지의 깊은 네비게이션을 거쳐야 해 분 단위의 시간이 소요되었다. 스냅샷 테스트의 픽셀 단위 정확도 요구로 인한 "사소한 픽셀 딜레마"는 CI 자동화를 어렵게 했다.
Technical Solution
- Snapshot 이미지 테스트의 이중 역할 전환: 개발 단계에서는 초 단위 피드백용 개발 도구로, 디자인 QA 완료 후에는 CI 검증 테스트로 용도 변경해 픽셀 딜레마 회피
- XCTest 첨부파일 + resultBundle 기반 QA 자동화: 테스트 실행으로 생성된 스크린샷을 xcparse로 파싱해 폴더 구조로 정리한 후 디자이너/PM에게 일괄 공유
- 다중 디바이스 동시 테스트: xcodebuild의 -destination 옵션으로 iPhone SE, iPhone 13 Pro Max 등 여러 기기에서 동시 스냅샷 수집
- AXSnapshot 도구 개발: AccessibilityFramework에 노출된 접근성 속성들을 1차원 배열로 변환해 문서화된 형태의 테스트 가능하게 구현
- AXSnapshot을 통한 통합 검증: ViewModel 개별 출력 검증 대신 View 계층의 접근성 속성 배열 검사로 View-ViewModel 연결 상태까지 함께 검증
Impact
코드 수정 후 화면 확인까지의 시간을 분 단위에서 초 단위로 단축. QA 단계에서 시나리오별 화면 검증 작업 시간을 대폭 감소.
Key Takeaway
UI 테스트에서 "완벽한 일치"를 요구하는 자동화는 현실적이지 않으므로, 개발 피드백 루프를 가속화하는 개발 도구와 사후 검증 단계를 분리해 설계하고, 접근성 속성 기반 검증으로 문서화와 검증을 동시에 확보할 수 있다.
실천 포인트
iOS 팀이 이미지 기반 스냅샷 테스트를 도입할 때, 개발 중에는 모듈 레벨 빌드 + 테스트 실행 + 스크린샷 확인의 초 단위 루프로 사용하고, 디자인 검증 완료 후에만 CI 자동화 테스트로 전환하면 픽셀 오차로 인한 테스트 무효화를 피하면서 개발 속도를 1.5배 이상 향상시킬 수 있다.