[TIL] 47. 통합테스트와 단위 테스트

김지수·2024년 7월 2일

TIL

목록 보기
48/53

단위 테스트(Unit Test)


정의

단위 테스트는 소프트웨어의 가장 작은 부분인 "단위"를 테스트하는 것입니다. 여기서 단위는 일반적으로 하나의 메서드, 함수, 클래스 또는 모듈을 의미합니다.

목적

개별 구성 요소의 정확성 검증 : 각 단위가 독립적으로 올바르게 작동하는지 확인합니다.
버그 조기 발견 : 작은 코드 조각에서 발생할 수 있는 버그를 조기에 발견합니다.
리팩토링 용이성 : 코드 변경 시 단위 테스트를 통해 기능이 여전히 정상적으로 작동하는지 확인할 수 있습니다.

특징

독립적 실행 : 다른 코드나 시스템 상태에 의존하지 않고 독립적으로 실행됩니다.
빠른 실행 속도 : 작은 코드 단위를 테스트하므로 실행 속도가 빠릅니다.
모킹 사용 : 종종 모킹(Mocking) 기법을 사용하여 외부 의존성을 대체합니다.

@Test
public void testAdd() {
    Calculator calculator = new Calculator();
    assertEquals(5, calculator.add(2, 3));
}


통합 테스트(Integration Test)


정의

통합 테스트는 소프트웨어의 여러 구성 요소나 모듈이 상호 작용하는 방식을 테스트하는 것입니다.

목적

모듈 간 인터페이스 검증 : 서로 다른 모듈이 올바르게 상호 작용하는지 확인합니다.
시스템 통합 : 전체 시스템이 통합되어 기대한 대로 작동하는지 확인합니다.
실제 환경 검증 : 실제 사용 환경과 유사한 조건에서 소프트웨어를 테스트합니다.

특징

의존성 존재 : 다른 모듈이나 외부 시스템과의 의존성이 존재합니다.
느린 실행 속도 : 전체 시스템이나 많은 모듈을 테스트하므로 실행 속도가 상대적으로 느립니다.
복잡한 설정 : 테스트 환경을 설정하고 여러 모듈을 통합하는 과정이 복잡할 수 있습니다.

@Test
public void testOrderService() {
    OrderService orderService = new OrderService();
    orderService.setPaymentService(new PaymentService());
    orderService.setInventoryService(new InventoryService());

    Order order = new Order("item1", 2);
    boolean result = orderService.placeOrder(order);
    
    assertTrue(result);
}

요약

단위 테스트(Unit Test)

개별 구성 요소(단위)를 독립적으로 테스트하며, 주로 코드 내부 로직을 검증합니다. 빠르고 독립적이며 모킹을 많이 사용합니다.

통합 테스트(Integration Test)

여러 구성 요소가 상호 작용하는 방식을 테스트하며, 시스템의 전반적인 통합 상태를 검증합니다. 느리고 복잡하며 실제 환경과 유사한 조건을 필요로 합니다.



오늘의 회고


아직 테스트 코드를 짜는데 필요하지 않는 부분도 신경을 쓰면서 많이 짜는거 같다. 좀 더 고민을 하고 많이 찾아봐야겠다.

profile
서툴고 부족한 점이 많지만, 배우고 발전하며 성장하기 위해 노력하겠습니다.

0개의 댓글