역사적으로 장기 프로젝트에서 테스트 자동화는 종종 부담이 되었습니다: 테스트는 "무작위"로 작성되었고, 유지보수가 이루어지지 않아 수년 후에는 버려야 했습니다. 팀의 빈번한 변화는 지식의 상실, 테스트 아키텍처의 희석, 자동화가 "스크립트의 집합체"로 전환되는 결과를 초래합니다.
문제: 테스트 시나리오가 구식이 되고, 테스트 소유자가 사라지고, 테스트 시스템의 문서화된 아키텍처가 없으며, 코드 리뷰가 이루어지지 않고 기술 부채가 발생합니다. 팀의 새 멤버는 어떤 테스트가 어떻게 작성되었는지, 어떤 테스트가 무엇을 담당하는지 이해하는 데 어려움을 겪습니다.
해결책 — 자동화 테스트를 위한 GitFlow 관행을 도입하고, 테스트에 대한 가독성 높고 잘 문서화된 코드를 작성하며, 디자인 패턴(예: 모듈화 테스트 아키텍처)을 사용하고, 문서 유지 관리(README, 커버리지 및 테스트의 적시성에 대한 보고서 자동 생성)를 자동화합니다. 자동화 테스트에 대한 코드 리뷰를 반드시 수행하고, 문서에서 테스트 시나리오를 설명하며, 책임 분담을 통해 책임 소유를 도입합니다.
주요 특징:
자동화 테스트 코드의 정적 분석을 사용할 가치가 있나요?
예! 정적 분석(린터, 소나큐브 등)은 테스트 코드의 품질과 일관성을 유지하는 데 도움이 되며, "빠르고 더러운" 코드의 발생을 방지합니다.
오래된 시나리오에서 자동화 테스트를 얼마나 자주 정리해야 하나요?
매 릴리스 주기마다 시나리오의 적시성을 검토하는 것이 권장됩니다(예: 매월 한 번), 비관련 기능을 제외하고 안정성 메트릭을 손상시키지 않기 위해서입니다.
100% 자동화 테스트 커버가 테스트의 구식을 피하는 데 도움이 되나요?
아니요. "완전한" 커버리지가 있더라도, 요구 사항 및 아키텍처 변경으로 인해 자동화 테스트가 구식이 될 수 있으므로, 이를 актуально 유지해야 합니다.
대규모 회사에서 모든 테스트가 하나의 리포지토리에 저장되었고, 누구나 마음대로 작성했습니다. 1년 후, 거의 아무도 어떤 테스트가 무엇을 커버하는지를 설명할 수 없었고, 대부분의 시나리오는 구식이었습니다.
장점:
단점:
자동화 테스트를 위해 별도의 마스터 계획이 작성되었습니다: 각 모듈에는 소유자가 있었고, 코드 구조는 README에 설명되었으며, 표준은 CONTRIBUTING.md에 문서화되었습니다. 테스트 리포지토리에 대한 모든 PR은 필수 체크리스트와 함께 코드 리뷰를 요구했습니다.
장점:
단점: