[java] TestContainers를 사용하여 성능 테스트하기

성능 테스트는 애플리케이션이 예상된 부하 및 요청을 처리할 수 있는지 확인하기 위해 필수적인 작업입니다. 이를 위해 여러 방법이 사용되지만, 이번에는 TestContainers 라이브러리를 사용하여 성능 테스트를 수행하는 방법에 대해 알아보겠습니다.

TestContainers란?

TestContainers는 독립적으로 실행 가능한 테스트 환경을 제공하는 자바 라이브러리입니다. 이 라이브러리는 컨테이너 기반 인프라를 사용하여 테스트를 실행하며, 많은 인기있는 컨테이너들을 지원합니다. 예를 들어, Docker를 사용하여 PostgreSQL, MySQL, Redis 등의 데이터베이스 서버를 실행할 수 있습니다.

성능 테스트를 위한 TestContainers 설정

먼저, Maven 또는 Gradle 프로젝트에 TestContainers를 추가해야 합니다. 이를 위해 다음과 같이 의존성을 추가해주세요.

Maven:

<dependencies>
  ...
  <dependency>
    <groupId>org.testcontainers</groupId>
    <artifactId>testcontainers</artifactId>
    <version>1.16.0</version>
    <scope>test</scope>
  </dependency>
  ...
</dependencies>

Gradle:

dependencies {
  ...
  testImplementation 'org.testcontainers:testcontainers:1.16.0'
  ...
}

성능 테스트 작성하기

성능 테스트를 작성하기 위해 다음 단계를 따르세요:

  1. @ClassRule 어노테이션을 사용하여 Testcontainers의 컨테이너 관리를 활성화합니다.
  2. 컨테이너를 시작하고 종료하는데 필요한 리소스를 정의합니다.
  3. 성능 테스트를 작성하는 메서드를 생성합니다.

다음은 PostgreSQL 데이터베이스를 사용하여 성능 테스트를 수행하는 예시입니다.

import org.junit.ClassRule;
import org.junit.Test;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.containers.wait.strategy.Wait;

public class PerformanceTest {

    @ClassRule
    public static PostgreSQLContainer<?> postgreSQLContainer = new PostgreSQLContainer<>("postgres:latest")
            .withExposedPorts(5432)
            .waitingFor(Wait.forListeningPort());

    @Test
    public void testPerformance() {
        // 테스트 로직 작성
        System.out.println("테스트를 실행합니다.");
    }
}

위의 예제에서는 @ClassRule 어노테이션을 사용하여 Testcontainers의 PostgreSQL 컨테이너를 시작하고 관리합니다. testPerformance 메서드는 성능 테스트를 수행하는 로직을 작성하는 부분입니다. 이 예시에서는 간단한 문장을 출력하도록 하였습니다.

성능 테스트 실행하기

성능 테스트를 실행하기 전에, 로컬 환경에서 Docker가 실행 중인지 확인하세요. 그렇지 않으면 테스트시 문제가 발생할 수 있습니다.

성능 테스트를 실행하기 위해서는 테스트 헬퍼(PerformanceTest) 클래스에서 단위 테스트를 실행하면 됩니다. 성능 테스트는 일반적으로 여러 번 실행하여 결과를 평균화하고 안정성을 확인하는 것이 좋습니다.

마무리

이제 TestContainers를 사용하여 성능 테스트를 할 수 있는 방법에 대해 알아보았습니다. TestContainers는 다양한 컨테이너를 지원하기 때문에 여러 종류의 성능 테스트를 수행할 수 있습니다. 추가적으로 TestContainers의 다른 기능을 탐색하며 성능 테스트를 더욱 강력하게 만들어보세요.

더 많은 정보는 TestContainers 공식 문서에서 확인할 수 있습니다.