통합 테스트

Java 테스트 소개

Maria Milusheva

Senior Software Engineer

통합 테스트 정의

  • 통합(Integration) - 개별 소프트웨어 구성요소나 하위 시스템을 결합해 일관되게 동작하는 하나의 시스템을 만드는 과정
  • 통합 테스트 - 여러 구성요소나 모듈 간 상호작용을 검증해 함께 올바로 동작하는지 확인하는 테스트. 종종 외부 의존성을 포함합니다.

조립 직전의 이케아 가구 이미지

Java 테스트 소개

의존성

  • 소프트웨어 의존성 - 한 구성요소가 다른 구성요소에 의존해 동작하는 관계

1 Mermaid로 만든 차트: https://mermaid.live
Java 테스트 소개

통합 테스트 vs. 단위 테스트

단위 테스트:

  • 개별 구성요소를 고립해 테스트
  • 실패 시 특정 코드 부분의 문제를 정확히 지적
  • 작성·실행이 더 빠름
  • 의존성 테스트를 피하기 위한 다양한 도구 사용
  • 정확한 결과와 결과값을 단언

통합 테스트:

  • 여러 구성요소와 그 상호작용을 테스트
  • 실패 원인 추적에 더 깊은 분석 필요
  • 설정·실행이 무겁고 더 오래 걸릴 수 있음
  • 실제 의존성과의 실제 상호작용을 테스트
  • 정확값보다 일반적 동작을 단언할 수 있음
Java 테스트 소개

예시: 외환

환율 앱을 만든다고 가정해 봅시다:

public class ExchangeApp {
    private EuropeanCentralBankServer bank; // Enables ExchangeApp to use the bank server

    public ExchangeApp(EuropeanCentralBankServer bank) {
        this.bank = bank; // Save the object passed through the constructor
    }


public double convertEuroTo(String currency, double amount) { double rate = this.bank.getRateEuroTo(currency); return amount * rate; // Use the return values of the bank method in calculations } }
Java 테스트 소개

외환 통합 테스트

통합 테스트는 convertEuroTo 메서드와 EuropeanCentralBankServer를 함께 검증합니다:

@Test
void convert_convertsWithoutError() {
    EuropeanCentralBankServer bank = new EuropeanCentralBankServer();
    ExchangeApp exchangeApp = new ExchangeApp(bank); // Pass bank object to constructor

double amount = 1000.0; String currency = "USD"; // convertEuroTo calls getRateEuroTo from the bank object double result = exchangeApp.convertEuroTo(currency, amount); assertTrue(result > 0); // Can't predict exact value, can only sanity test }
Java 테스트 소개

연습해 봅시다!

Java 테스트 소개

Preparing Video For Download...