Wall-clock 시간이 metric
Test suite 가 직렬로 30 분이면 6 개 병렬 job 으로 나누면 wall clock 이 ~5 분 (shard 당 고정 checkout/install overhead 추가). 유료 runner 가격 모델에선 분은 같이 쓰지만 — 개발자가 30 분 대신 5 분 기다려.
Test 분할 방법
- 디렉토리 별 — 한 job 에서
pytest tests/api/, 다른 job 에서pytest tests/db/. - Marker 별 —
pytest -m 'unit'vs-m 'integration'. - 자동 shard —
pytest-xdist --dist=loadgroup -n 4가 단일 runner 안에서 분할; matrix 와 결합해 runner 간 분할. - 시간 버킷 별 — 테스트별 시간 기록, 같은 시간 버킷으로 그룹.
pytest-split가 이걸 함.
조정 도전
- 각 shard 는 자기 install. Cache 적극.
- Coverage 리포트는 shard 간 병합.
coverage combine사용. - Flaky test 는 sharding 으로 증폭 — 실패한 shard 만 re-run.