프론트엔드
iOS에서 이벤트 기반 URL 요청이 잘 전송되는지 확인하기 (feat. 광고 트래킹.. 제대로 가고 있나요?)
두줄요약
iOS 광고 트래킹의 실제 URL 전송 여부를 검증하기 위해 URLProtocol과 공유 파일 저장소를 활용했습니다. UI Test와 launchEnvironment로 사용자 흐름과 모듈별 가짜 응답을 분리해 테스트했습니다.
문제 상황
- iOS에서 광고 트래킹용 이벤트 발생 시 실제 URL 요청이 전송됐는지 배포 전 검증이 어려운 상황
- 단순 Fake 객체 검증은 sendTracking 호출 여부만 확인할 뿐 실제 네트워크 요청 보장은 불가
- UI Test와 App Target 간 프로세스 분리로 메모리 기반 저장소 공유도 불가능
해결 방법
- URLProtocol 서브클래스로 요청을 가로채고, startLoading에서 URL을 공유 파일 저장소에 기록
- URLSessionConfiguration의 protocolClasses에 CustomURLProtocol을 주입해 테스트 환경에서만 프록시 동작 적용
- SIMULATOR_SHARED_RESOURCES_DIRECTORY 기반 파일 저장소를 App과 UI Test가 함께 읽고 쓰는 구조로 구성
적용해볼 점
- UI Test에서 사용자 상호작용을 재현한 뒤 저장된 URL 개수로 트래킹 성공 여부 검증
- launchEnvironment로 테스트별 Fake 응답 파일을 주입해 모듈별 시나리오 분리
- 중복 적재 여부까지 확인하도록 단순 포함 여부보다 개수 기반 검증 사용