CI/CD 테스트 자동화

테스트 자동화는 모든 CI/CD 파이프라인에서 중심이 되는 부분이며 더 자주 릴리스하기 위한 필수 단계입니다. TeamCity는 테스트 순서 재지정, 테스트 병렬화, 스마트한 실패 분석, 품질 게이트를 포함하여 자동화된 테스트를 최대한 활용하는 데 도움이 되는 다양한 기능을 제공합니다. .NET, Java, Python, JavaScript 및 기타 프로그래밍 언어에서 인기 테스트 프레임워크를 기본적으로 지원하는 TeamCity는 전체 소프트웨어 스택에 대해 코드 개선과 더 안정적인 릴리스 프로세스를 위한 길을 열어줍니다.

해당 워크플로에 맞춤화

소프트웨어 테스트 워크플로는 소프트웨어 자체만큼이나 다양합니다. Docker 컨테이너 오케스트레이션, 테스트 환경 구성, 다양한 매개변수를 기반으로 한 테스트 범위 변경, 품질 게이트 설정 등은 CI/CD 도구에서 수행할 수 있는 몇 가지 일반적인 작업에 불과합니다. 다행히 TeamCity는 이러한 모든 시나리오를 지원하므로 특정 테스트 워크플로에 맞게 자동화된 파이프라인을 쉽게 설정할 수 있습니다.

모든 인기 빌드 및 테스트 도구와 통합

TeamCity는 다른 CI/CD 솔루션과는 달리 빌드 도구 및 테스트 프레임워크와 통합됩니다. 테스트 실행을 병렬화하고 불안정한 테스트를 식별하며 빌드 로그, 기간, 실행 순서, 코드 커버리지, 정적 분석 결과 및 기타 데이터를 포함하여 실행되는 모든 테스트의 기록을 유지합니다. 테스트 통계가 쌓일수록 TeamCity는 테스트를 중단시키기 쉬운 변경 사항을 이해하는 데 필수적 역할을 합니다.

규모와 복잡성에 관계없이 모든 프로젝트에 적합

한 CI/CD 도구에서 다른 도구로 이동한 경험이 있다면 이 과정에 몇 달이 걸릴 수 있다는 것을 알고 계실 것입니다. TeamCity를 사용하면 회사의 성장이 현재 빌드 시스템을 앞질러서 다른 시스템으로 전환해야 하는 문제를 고민할 필요가 없습니다. JetBrains 솔루션은 가장 크고 가장 복잡한 프로젝트를 처리하도록 빌드되었습니다. 예를 들어 JetBrains 내에서 TeamCity 설치 프로그램 하나를 1,000명 이상의 개발자가 사용하고 이들이 동시 실행하는 빌드는 5,000개가 넘습니다.

고급 테스트 보고 기능으로 생산성 향상

테스트를 자동화하고 정기적으로 실행하면, 변경 사항에 대한 즉각적인 피드백을 얻을 수 있습니다. 결과적으로, 변경 사항이 아직 머리 속에 생생하게 남아 있는 동안 새로운 버그를 더 빨리 발견하고 더 빨리 수정할 수 있습니다.

TeamCity를 사용하면 CI/CD 파이프라인의 일부로 자동 테스트를 구성할 수 있습니다. 빠른 피드백을 보장하기 위해 테스트 결과가 즉시 제공됩니다. 테스트가 실패하면 TeamCity는 디버그 프로세스를 시작할 수 있도록 스택 추적, 로그 및 빌드 아티팩트와 함께 관련 코드 변경 사항에 대한 세부 정보를 제공합니다. 불안정한 테스트와 새로 실패한 테스트가 강조 표시되고 일부 테스트가 이후 빌드에서 수정되면 해당 정보가 테스트 결과 페이지에 자동 업데이트됩니다.

테스트 결과는 웹 UI에서 볼 수 있을 뿐만 아니라 이메일, Slack 또는 기타 메신저를 통해 보내거나 IDE로 직접 전달할 수 있습니다. 그러면 빌드 단계가 완료될 때까지 기다릴 필요 없이 최신 변경 사항에 대한 즉각적인 피드백을 얻을 수 있습니다.

핵심 테스트 자동화 기능

오류 분석 및 코드 커버리지

TeamCity는 소프트웨어 빌드, 테스트 및 배포에 사용되는 도구와 통합되는 다양한 빌드 러너와 함께 제공됩니다. 빌드 러너의 도움으로 일련의 테스트를 실행하면 TeamCity가 빌드 중에 발생하는 이벤트를 이해하고, 코드 커버리지를 확인하고, 즉석 보고서를 제공하고, 통계를 수집하고, 추세를 분석할 수 있습니다.

때로는 테스트 스크립트를 TeamCity 빌드 단계로 변환하는 것이 실용적이지 않은 것 같아, 그 대신 일반 명령줄 빌드 러너를 사용하고 싶을 수 있습니다. 이 경로로 가기로 결정한 경우 TeamCity 서비스 메시지를 스크립트 출력에 추가하여 TeamCity에 진행 상황을 알려주고 모든 스마트 기능을 계속해서 사용할 수 있습니다. 예를 들어 테스트 이름과 기간에 대한 정보를 제공하면 TeamCity에서 테스트를 병렬화할 방법을 계산할 수 있습니다. 자세한 내용은 문서의 서비스 메시지 섹션을 참조하세요.

특정한 요구 사항에 따라 TeamCity에서 빌드를 성공 또는 실패로 표시해야 하는 경우를 정의할 수 있습니다. 예를 들어, 유닛 테스트 커버리지가 한 빌드에서 다음 빌드로 가면서 감소하지 않아야 하는 경우 코드 커버리지 메트릭을 빌드 단계의 실패 조건으로 만들 수 있습니다.

테스트 실패를 관리하는 부분에서 TeamCity를 사용하면 팀원에게 조사를 할당하거나 즉시 수정할 필요가 없는 테스트를 숨길 수 있습니다. 숨겨진 테스트는 후속 파이프라인 실행에서 무시되므로 파이프라인을 수동으로 변경하지 않고도 자동화된 테스트 프로세스를 중단 없이 계속할 수 있습니다.

JetBrains는 다음을 포함하여 모든 인기 도구와 프로그래밍 언어에 대한 빌드 러너를 개발합니다.

  • Gradle
  • Kotlin
  • Maven
  • .NET
  • Node.js
  • Python
  • 기타 다양한 도구

JetBrains에서 지원하는 빌드 러너 외에도 100개 이상의 무료 플러그인과 TeamCity를 자체 도구 및 스크립트와 통합할 수 있는 포괄적인 API가 있습니다.

병렬 테스트

지능형 테스트 병렬화는 테스트 프로세스의 속도를 크게 높일 수 있는 TeamCity의 고유한 기능입니다. 여러 빌드 에이전트를 사용할 수 있는 경우 TeamCity는 테스트 기간에 따라 자동으로 동일한 배치로 테스트를 나누고 병렬로 실행할 수 있습니다. 테스트에서 TeamCity의 빌드 러너 대신 사용자 지정 스크립트를 사용하는 경우 서비스 메시지를 사용하여 TeamCity에 진행 상황을 알릴 수 있습니다. 그러면 TeamCity가 테스트를 병렬화하는 최적의 방법을 계산하고 이를 사용하여 병렬화를 설정하는 데 도움을 주는 특수 지침 파일을 생성할 수 있습니다.

자세한 내용은 문서의 병렬 테스트 섹션을 참조하세요.

성능 모니터링

테스트를 실행하는 하드웨어 또는 클라우드 인스턴스가 프로젝트에 최적인지 이해하기가 쉽지 않은 경우가 많습니다. TeamCity의 성능 모니터는 CPU, 메모리 및 하드 드라이브 성능에 대한 통계를 자동으로 수집하고 파이프라인을 방해하는 병목 현상이 있는지 파악하도록 도와줍니다.

자세한 내용은 문서의 성능 모니터 섹션을 참조하세요.

VCS에 커밋하지 않고 코드 테스트

TeamCity를 사용하면 버전 관리 시스템에 커밋하지 않고도 코드를 테스트할 수 있습니다. 그러면 빌드를 중단시키고 다른 팀원의 작업을 차단할 가능성이 최소화되므로 개발이 하나의 기본 브랜치에서 수행되는 경우 특히 유용합니다.

커밋하지 않고 변경 사항을 테스트하는 가장 쉬운 방법은 IntelliJ 기반 IDE 또는 Visual Studio용 TeamCity 플러그인의 원격 실행 기능을 사용하는 것입니다. Git에서 코드를 호스팅하는 팀에게는 Git 패치를 만들고 TeamCity에 업로드한 다음 TeamCity UI를 사용하여 개인 빌드를 실행할 수 있는 추가 옵션이 제공됩니다.

자동화된 테스트 파이프라인의 유연한 구성

TeamCity는 테스트를 자동으로 시작하는 다양한 빌드 트리거를 제공하며 TeamCity UI 또는 IDE에서 수동으로 테스트를 실행할 수 있습니다. 빌드를 트리거한 내용과 파이프라인에서 이전에 발생한 상황에 따라 테스트 파이프라인에 조건부 논리를 추가하여 프로세스를 간소화하고 테스트가 실행되는 시기를 제어할 수 있습니다. 예를 들어 야간 빌드를 예약하여 전체 테스트 모음을 실행하거나, 모든 커밋에서 유닛 테스트만 실행하거나, 파이프라인을 수동으로 실행할 때 정확한 테스트 범위를 지정할 수 있습니다.

테스트 워크플로를 보완하는 더 많은 TeamCity 기능

자동 CI/CD 인프라 확장

많은 프로젝트가 포함된 대규모 CI/CD 시스템을 사용하면 빌드 및 테스트를 실행하는 데 필요한 빌드 에이전트 수를 정확하게 결정하기가 어려울 수 있습니다. TeamCity는 클라우드에서 새로운 빌드 에이전트를 자동으로 시작하여 파이프라인의 용량을 동적으로 늘림으로써 확장 가능한 CI/CD 설정을 구현하는 데 도움을 줄 수 있습니다. 지원되는 클라우드 플랫폼에는 Amazon EC2, Microsoft Azure, Google Cloud, VMWare vSphere, Kubernetes 등이 포함됩니다.

Docker 통합

TeamCity는 Docker를 활용하는 모든 소프트웨어 개발 워크플로를 지원하고 가속화할 수 있습니다. 예를 들어 특정 환경 버전에서 테스트를 실행하여 일관되고 재현 가능한 결과를 보장하거나 여러 Docker 컨테이너를 조정해야 하는 통합 테스트를 수행할 수 있습니다. CI/CD 파이프라인에서 Docker를 사용하는 방식에 관계없이 TeamCity는 빌드 중에 발생하는 모든 이벤트를 추적하고 실시간 보고서, 테스트 분석 및 기타 인사이트를 제공할 수 있습니다.

변경 사항 자동 병합

TeamCity에는 빌드가 성공하면 변경 사항을 지정된 대상 브랜치에 자동으로 병합하는 기능이 있습니다. 나란히 이어진 일련의 병합 작업을 설정할 수도 있습니다. 코드를 VCS에 커밋하기 전에 테스트하는 기능과 함께 게이트 커밋 패턴을 활용할 수 있습니다.

FAQ: TeamCity로 자동화된 테스트

TeamCity의 테스트 병렬화는 무료 기능인가요?

예. 테스트 병렬화는 무료 자체 호스팅 버전을 포함하여 모든 TeamCity 버전에서 무료로 사용할 수 있습니다. TeamCity On-Premises에서는 라이선스에서 허용되는 만큼의 빌드 에이전트에 테스트를 분할할 수 있습니다.

TeamCity는 어떤 운영 체제를 지원하나요?

TeamCity는 Windows, Linux 및 macOS에서 사용할 수 있으며 Docker 런타임을 지원하는 모든 플랫폼에서 Docker 컨테이너로 실행할 수 있습니다. 또한 관리형 서비스인 TeamCity Cloud로도 사용할 수 있으므로 직접 설치하고 유지 관리할 필요가 없습니다.

TeamCity에서 실패한 테스트를 자동으로 재시도할 수 있나요?

예. 재시도 빌드 트리거의 도움으로 TeamCity는 실패 후 빌드를 빌드 대기열에 다시 자동으로 추가할 수 있습니다. 이렇게 하면 코드는 정확하지만 네트워크 문제나 기타 외부 요인으로 인해 테스트가 실패하는 상황을 처리하는 데 도움이 됩니다.

TeamCity는 UI 테스트 프레임워크를 지원하나요?

TeamCity는 UI 테스트에 사용되는 도구를 포함하여 다양한 도구 및 테스트 프레임워크와 함께 사용할 수 있는 다목적 CI/CD 도구입니다. UI 테스트에 TeamCity를 사용하는 방법을 자세히 알아보려면 TeamCity UI: 테스트하는 방법이라는 블로그 게시물을 확인하세요.