DevOps 친화적인 XCTest 팁 😎

애플에서 제공하는 XCTest는 단위, 통합, 성능 및 UI 테스트를 도와주는 프레임워크입니다. 저는 iOS개발자가 테스트를 편하게 할 수 있도록 도와주는 XCTest와 DevOps 및 CI/CD와 어떤 관계가 있는지 생각을 해 본 적이 없습니다. 지속적 통합에 관심이 많은 요즘 DevOps와 XCTest 방식을 잘 섞고 CI/CD 파이프라인을 방해하지 않고 XCTest를 작성하는 몇 가지 팁을 공유합니다😊 🤔iOS CI/CD 파이프라인 iOS 앱을 자주 출시하려면 CI/CD 파이프라인을 설정하고 유지하는 것이 매우 중요합니다. 1인 개발이나 제품의 규모가 크지 않다면 체감이 덜 되겠지만 규모가 큰 앱을 매주 출시하는 건 iOS개발자에게는 큰 괴로움입니다. 오류가 발생하기 쉽다는 게 큰 이유지만 무엇보다 지루하고 반복적인 시간 소모가 크다는 게 문제입니다. CI/CD 파이프라인의 역할은 모든 지루한 작업을 자동화하는 것입니다. 일반적인 iOS 릴리스 파이프라인은 다음과 같이 구성됩니다. - 소스 코드 확인 - Swift 코드 정적 분석(예: SwiftLint) - iOS 앱 컴파일 및 빌드 - 단위, 통합, API, UI, 성능, 보안 등 다양한 종류의 테스트 실행 - 앱 코드 서명 및 아카이브 - appstore connect 또는 타사 테스트 서비스에 iOS 앱 배포 - 소스 제어 툴(예: GutHub)에서 태그 또는 릴리스 생성 - 제품팀에게 빌드 전달 파이프라인에 더 많은 것이 있을 수 있지만 이 정도가 매우 일반적인 파이프라인 작업입니다. 이 중 반복적이고 지루한 몇 가지의 작업이 보이지만 눈에 띄는 것은 자동화된 테스트가 없이는 CI/CD 파이프라인이 완성 되지 않는다는 점입니다! 💡DevOps 친화적인 XCTest 사용을 위한 팁 1️⃣ 더 많고 정확한 단위 및 통합 테스트 단위 테스트의 커버리지를 높이고 리팩터링 내성을 고려한 단위 테스트를 작성하더라도 문제가 발생할 때가 있습니다. 그렇기에 단위 테스트에 대한 제품팀의 트레이드오프를 거쳐 유저 행동 기반의 더 많고 정확한 단위 및 통합 테스트가 필요합니다. 2️⃣ 백엔드 API에 대한 테스트 iOS앱은 일반적으로 백엔드 서버 측 API를 사용합니다. 서버가 원활하게 동작하지 않거나 통신이 원활하지 않을 때 발생하는 문제에 대한 테스트가 필수입니다. 제품 팀 간의 더 깊은 커뮤니케이션을 통해 유저 행동 시나리오를 정하고 테스트할 수 있으면 좋습니다. 3️⃣ API 성능 테스트 휴대폰의 성능이 아무리 좋아졌다지만 iOS앱의 속도는 언제나 시장 경쟁에서 중요한 열쇠입니다. XCTest 프레임워크에는 코드의 성능을 확인하기 위해 테스트 메서드 내의 모든 코드에 적용할 수 있는 성능 측정 블록이 있습니다. 그러나 백엔드 API는 해당 API를 구축하는 팀에서 별도의 성능/부하 테스트를 거쳐야 합니다. iOS 릴리스 파이프라인에 성능 테스트가 작동한다면 appstore connect에 앱을 업로드하기 전에 성능 문제를 감지할 수 있습니다. 4️⃣ UI Test 제한 XCTest 프레임워크는 XCUITests로 확장 가능합니다. 원하는 만큼 UI 테스트를 추가할 수 있지만 UI 테스트는 느리고 시간이 많이 걸린다는 점을 염두해야 합니다. 때문에 스냅샷 테스트를 통해 유저의 핵심 동작에 대한 테스트를 하는 것이 필요할 것입니다. 5️⃣ 별도의 빌드 구성 iOS앱에는 기본적으로 debug 밑 release 빌드 구성이 있고 Develop, Test, Stage, Production와 같은 빌드 구성을 만들 수 있습니다. 이런 식의 빌드 구성은 유연성을 통해 테스트의 실행을 훨씬 빠르고 정확하게 만들 수 있고 Production 빌드에 대한 안정성을 확보할 수 있습니다. 지속적 통합을 신경 쓰면서 어떤 행동과 상황을 테스트해야 하는지에 대한 명확한 가이드라인이 주어진 거 같습니다. 지속적 통합… 참 어렵지만 모두 굿투그레잇 합시다👍👍👍

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2022년 12월 28일 오전 7:30

 • 

저장 3조회 2,200

댓글 0