PHpullh
학습 라이브러리/Go/CI/CD 테스트 전략

GO · 테스트

CI/CD 테스트 전략

CI/CD 파이프라인에서의 Go 테스트 전략. 단계별 실행과 캐싱을 최적화합니다.

테스트고급ci-cdtestingpipelinestrategy

핵심 설명

CI/CD 파이프라인에서의 Go 테스트 전략. 단계별 실행과 캐싱을 최적화합니다.

Go code

package main

import "fmt"

func main() {
	fmt.Println("=== CI/CD Go 테스트 전략 ===")
	fmt.Println()
	fmt.Println("1단계: 빠른 검증 (PR 체크)")
	fmt.Println("  go vet ./...")
	fmt.Println("  staticcheck ./...")
	fmt.Println("  go test -short -count=1 ./...")
	fmt.Println()
	fmt.Println("2단계: 전체 테스트")
	fmt.Println("  go test -race -count=1 ./...")
	fmt.Println("  go test -cover -coverprofile=coverage.out ./...")
	fmt.Println()
	fmt.Println("3단계: 통합 테스트")
	fmt.Println("  go test -v -tags=integration -count=1 ./...")
	fmt.Println()
	fmt.Println("4단계: 벤치마크 (주간)")
	fmt.Println("  go test -bench=. -benchmem -count=5 ./...")
	fmt.Println()
	fmt.Println("5단계: 퍼즈 테스트 (야간)")
	fmt.Println("  go test -fuzz=. -fuzztime=5m ./...")
	fmt.Println()
	fmt.Println("캐싱:")
	fmt.Println("  GOMODCACHE, GOCACHE 디렉토리를 CI 캐시에 저장")
	fmt.Println("  go test -count=1 로 캐시 무효화 (CI에서 권장)")
}

학습 팁

go test -count=1은 테스트 캐시를 무효화합니다. CI에서는 항상 사용하여 실제 테스트를 실행하세요.

주의할 점

CI에서 -race-cover를 동시에 사용하면 성능이 크게 저하됩니다. 별도 단계로 분리하세요.

자주 묻는 질문

CI/CD 테스트 전략란 무엇인가요?

CI/CD 파이프라인에서의 Go 테스트 전략. 단계별 실행과 캐싱을 최적화합니다.

CI/CD 테스트 전략 학습 시 주의할 점은 무엇인가요?

CI에서 -race 와 -cover 를 동시에 사용하면 성능이 크게 저하됩니다. 별도 단계로 분리하세요.