T
TechInsights
목록으로
Architecture•2025. 01. 06.

iOS에서 이벤트 기반 URL 요청이 잘 전송되는지 확인하기 (feat. 광고 트래킹.. 제대로 가고 있나요?)

지마켓
지마켓 Engineering Team
iOS에서 이벤트 기반 URL 요청이 잘 전송되는지 확인하기 (feat. 광고 트래킹.. 제대로 가고 있나요?)

핵심요약

원문 보기

iOS 애플리케이션에서 광고 트래킹과 같은 특정 이벤트에 대한 URL 요청이 실제로 전송되었는지 검증하기 위한 자동화된 UI 테스트 프레임워크 구축 방안을 다룹니다. 이를 위해 URLProtocol을 이용한 요청 가로채기, 교차 프로세스 데이터 공유를 위한 파일 시스템 활용, 그리고 테스트 데이터 관리를 위한 의존성 주입 및 환경 변수 활용 기법을 설명합니다.

iOS 광고 트래킹 URL 요청 검증 자동화 가이드

광고 트래킹 이벤트 검증 필요성 및 문제 정의

  • 광고 트래킹은 서비스 수익과 직결되는 핵심 기능으로, 정확한 데이터 전송이 필수적입니다.
  • 일반적인 QA 및 유닛 테스트로는 실제 **URLRequest**가 네트워크로 전송되었는지 확인하기 어렵습니다.
  • Fake 객체는 메서드 호출 여부만 검증하며, 실제 네트워크 요청 여부를 보장하지 못하는 한계가 있습니다.

URL 요청 가로채기 및 데이터 저장 기법

  • iOS에서는 URLProtocol 서브클래싱을 통해 네트워크 요청을 가로챌 수 있습니다.
  • **CustomURLProtocol**을 정의하고 startLoading() 메서드를 오버라이드하여 URLRequest를 인터셉트합니다.
  • 인터셉트된 request.url 정보를 AdTrackingURLStore.writeDataToSharedFolder() 함수를 통해 공유 저장소에 기록합니다.
  • **URLSessionConfiguration.protocolClasses**에 CustomURLProtocol.self를 설정하여 **특정 URLSession**의 요청을 프록시합니다.

교차 프로세스 데이터 공유 및 UITest 활용

  • 앱 타겟과 UI 테스트 타겟은 별도의 프로세스로 실행되므로, 인메모리 싱글톤 객체로는 데이터 공유가 불가능합니다.
  • SIMULATOR_SHARED_RESOURCES_DIRECTORY 환경 변수를 활용하여 시뮬레이터의 공유 파일 시스템에 접근합니다.
  • **AdTrackingURLStore**는 공유 디렉토리 내 storedUrls.txt 파일에 URL을 기록하고, **numberOfTextInSharedFolder()**를 통해 기록된 URL의 개수를 검증하여 중복 적재 등의 오류를 방지합니다.
  • **XCUIApplication**의 launchEnvironment 프로퍼티를 사용하여 UITest 실행 시 가짜(Fake) JSON 데이터 파일 이름을 앱에 전달합니다.
  • **accessibilityIdentifier**를 사용하여 UI 요소를 식별하고 **XCUIElement**의 tap(), swipeLeft() 등의 메서드로 사용자 액션을 시뮬레이션하여 광고 이벤트를 트리거합니다.

테스트 데이터 관리 및 의존성 주입

  • 네트워크를 통한 동적 데이터 로딩은 테스트의 느린 실행, 불안정성, 결과의 비일관성을 초래합니다.
  • **Protocol**과 의존성 주입(Dependency Injection) 패턴을 활용하여 SearchResultRepository와 같은 데이터 소스를 추상화합니다.
  • 실제 네트워크 호출 구현체(SearchResultRepositoryImp)와 로컬 JSON 파일을 로딩하는 가짜 구현체(FakeSearchResultRepository)를 분리합니다.
  • UITest 환경에서는 **XCUIApplication.launchEnvironment**를 통해 특정 JSON 파일(ModuleA.json)을 지정하여, 앱 내부에서 ProcessInfo.processInfo.environment를 이용해 동적으로 테스트 데이터를 로딩하게 합니다.
#Architecture#FrontEnd
지마켓
지마켓

지마켓 Engineering Team

기술 인사이트를 전달하는 공식 채널

You might also like

View all
토스 피플 : 새로운 길을 만들 땐 내 선택을 믿는다

토스 피플 : 새로운 길을 만들 땐 내 선택을 믿는다

"이 버튼 왜 안 눌려요?" 물류 현장의 목소리로 PDA 시스템 완성하기

"이 버튼 왜 안 눌려요?" 물류 현장의 목소리로 PDA 시스템 완성하기