2026 일일 대여 Mac으로 Swift Testing 마이그레이션: XCTest 공존 전략, #expect 대조표와 1~3일 의사결정 매트릭스
Xcode 26에 @Test 템플릿이 보여도 수천 개의 XCTestCase를 하루에 지울 수는 없습니다—UI Test와 Performance는 여전히 XCTest에 묶여 있습니다. 메인 Mac에는 인증서와 실험 브랜치가 공존하고, 테스트 target 전면 교체는 CI를 일주일 붉게 만듭니다. 본문은 1~3일 안에 단위를 Swift Testing으로 옮기면서 혼합 스택을 유지해야 하는 iOS 리드를 위해 세 가지 통증, 공존 매트릭스, 7단계, 분진표, 세 지표를 제시하고 Swift 6 엄격 동시성, CI macOS 노드, SSH/VNC FAQ로 연결합니다.
목차
01. 세 가지 통증
1) DerivedData·테스트 캐시 교차 오염: Swift Testing은 기본 병렬입니다. 구형 XCTest의 직렬 가정, 전역 싱글톤, 공유 UserDefaults와 충돌하면 플레이크가 납니다.
2) UI/Performance까지 Swift Testing으로 밀어붙임: Xcode 26 기준 UI 자동화·벤치마크는 XCTest입니다. 경계 문서가 없으면 범위가 폭발합니다.
3) 로컬은 녹색, CI는 구 scheme: 새 target이 Test action에 없거나 -only-testing이 구 클래스를 가리키면—두 번째 클린 Mac 없이 프레임워크 탓을 합니다.
02. Swift Testing vs XCTest 공존 매트릭스
| 유형 | 권장 | 대여 Mac 검수 |
|---|---|---|
| 순수 Swift 단위 | Swift Testing 우선 | Sendable 경계 |
| 인자 기반 | @Test(arguments:) | 실패 인덱스·CI 로그 |
| UI / XCUITest | XCTest 유지 | Test Plan 분리 |
| Performance | XCTest 유지 | CPU 독점 baseline |
| SPM testTarget | Swift Testing + swift test | xcodebuild test도 녹색 |
03. #expect 대조
import Testing
struct TierTests {
@Test(arguments: [0, 1, 99])
func label(for count: Int) {
#expect(!PriceTier.label(for: count).isEmpty)
}
}
04. 7단계 Runbook
- 고정:
xcodebuild -version, test targetSWIFT_VERSION. 동시성 작업은 Swift 6 Runbook 선독. - 공존:
*UITests/Performance 유지, Swift Testing 단위 target 신설. - 배치 이전: UIKit·싱글톤 없는 순수 로직부터 ≤30케이스/배치.
- 병렬·tag: Keychain·파일·네트워크는
.serialized또는 tag. - CI 정렬: CI 노드와 Xcode 패치 일치.
- 증적:
xcresult로 이중 프레임워크 동시 녹색 증명. - 삭제: 키·DerivedData 제거. SSH/VNC FAQ.
xcodebuild test -scheme YourApp -parallel-testing-enabled YES \
-resultBundlePath ./TestResults.xcresult
swift test --parallel
05. 분진표·세 지표
| 증상 | 첫 조치 | NG |
|---|---|---|
| 로컬 녹·CI 적 | scheme·CI 인자 비교 | CI에서 병렬 끄기 |
| 무작위 실패 | serialized·독립 UserDefaults | 전역 병렬 비활성 |
| Testing 모듈 없음 | test target에 Testing, Swift ≥ 6 | App target에 @Test |
- 지표1: 단위의 45~70%가 1차 이전 후보(UI/Performance 제외).
- 지표2: 병렬화로 전체 test 15~40% 단축(Apple Silicon).
- 지표3: 대여 Mac에서 이중 녹색+xcresult 후 2주 revert 논쟁 약 25% 감소.
06. Linux CI vs 일일 대여 Mac
Linux swift test는 일부에 유효하지만 iOS Simulator·Test Plan·UI Test는 Xcode 전제입니다. 메인 환경과 분리된 재현 가능한 이중 프레임워크 검수에는 Apple Silicon+Xcode 26이 적합합니다. 일일 대여로 CAPEX를 1~3일로 압축. 요금 가이드, FAQ.
07. FAQ
Q: 장기 공존? 권장. UI/Performance 공식 대안까지 XCTest 유지.
Q: 디스크? 여유 15GB 미만이면 시뮬레이터·병렬 test가 느려집니다.