🎁 모든 강의 30% + 무료 강의 선물🎁

[워밍업 클럽 3기 BE code] 2주차

테스트가 필요한 이유

  • 사람이 애플리케이션을 실행하면서 잘 작동되는지 확인하는 작업은 놓칠 수도 있고, 시간이 오래 걸려 비효율적이다.

  • 테스트 코드 작성의 이점

    • 빠른 피드백: 코드 수정 후 바로 검증 가능

    • 자동화: 반복적인 수동 테스트가 불필요

    • 안정성: 코드 변경이 발생해도 기존 기능이 정상 동작하는지 보장

    • 디버깅 용이: 문제 발생 시 원인 파악이 쉬움


단위 테스트

  • 작은 코드 단위를 독립적으로 검증하는 테스트 → 검증 속도가 빠르고 안정적이다.

  • 관련 라이브러리

    • JUnit5: 단위 테스트를 위한 테스트 프레임워크

    • AssertJ: 테스트 코드 작성을 원활하게 돕는 라이브러리


수동 테스트 vs 자동화된 테스트 비교

수동 테스트

  • 사람이 직접 성공/실패를 판단

  • 실수 가능성 높음

  • 반복이 어려움

  • 시간이 오래 걸림

자동화된 테스트

  • 시스템이 자동으로 판단

  • 실수 가능성 낮음

  • 반복이 쉬움

  • 소요 시간이 짧음

     

  • 자동화된 테스트를 활용하면 수동 테스트의 한계를 극복할 수 있다.

  • 자동화 테스트를 작성하면 테스트 결과만 확인하면 되므로 빠르고 정확하다.


테스트 케이스 세분화하기

  • 해피 케이스(정상 동작)*만 작성하지 않고 예외 케이스(예상하지 못한 상황)도 함께 테스트해야 한다.


TDD (Test Driven Development)

  • 프로덕션 코드보다 테스트 코드를 먼저 작성하여, 테스트가 구현 과정을 주도하도록 하는 개발 방법론

  • 빠른 피드백을 통해 코드 품질을 높이고, 유연한 설계를 가능하게 함

TDD의 장점

  • 내 코드의 피드백을 빠르게 받을 수 있음

  • 리팩토링이 쉬워짐 → 테스트가 있으므로 기존 기능이 정상 동작하는지 보장됨

  • 테스트 가능한 코드 설계 → 단일 책임 원칙(SRP)에 맞게 코드 구조를 고민하게 됨

  • 디버깅 시간 단축 → 기능 개발 중 발생하는 문제를 사전에 방지할 수 있음


기능 구현 방식 비교

방식 장점 단점

선 기능 구현, 후 테스트 작성

  • 장점 : 구현이 직관적이고 빠르게 가능

  • 단점 : 테스트 누락 가능성, 특정 케이스만 검증, 잘못된 구현 발견 지연

     

     

    선 테스트 작성, 후 기능 구현 (TDD)

  • 장점 : 테스트가 어려운 영역을 미리 발견하여 설계를 개선할 수 있음

  • 단점 : 초기 개발 속도가 다소 느릴 수 있음


TDD의 핵심 원칙: Red → Green → Refactor

1⃣ Red (실패하는 테스트 작성)

  • 테스트 코드를 먼저 작성하고 실행 → 아직 기능이 없으므로 테스트가 실패해야 한다.

2⃣ Green (기능 구현하여 테스트 통과)

  • 테스트가 통과하도록 최소한의 기능을 구현한다.

3⃣ Refactor (리팩토링)

  • 중복 제거, 코드 개선을 통해 더 나은 구조로 변경한다.

  • 리팩토링 후에도 테스트가 통과하는지 확인한다.


테스트는 [문서]다

  • 테스트 코드는 해당 기능의 동작을 설명하는 문서 역할을 한다.

  • @DisplayName을 활용하여 테스트 목적을 명확히 하자.

@DisplayName("회원 가입 시 이메일이 중복되면 예외가 발생한다")
@Test
void 회원가입_이메일중복_예외발생() {
    // Given
    // When
    // Then
}

생각 정리

테스트의 중요성에 대해서는 인지하고 있었지만 테스트 코드 작성이 항상 귀찮고 어렵게 느껴졌었다. 하지만 테스트 코드를 작성하고 결과를 확인하는 과정 자체가 더 나은 프로덕션 코드를 만드는 과정이 될 수 있다는 것을 깨달았다.

특히 TDD의 경우에는 기능이 없는데 테스트 코드를 먼저 작성하는게 이해가 안 됐었는데 테스트를 실패하는 최소한의 기능을 먼저 만들고 점진적으로 더 나은 코드 작성 및 설계를 할 수 있도록 유도하는 과정이라는 것을 알게 되었다.

 

강의

댓글을 작성해보세요.


채널톡 아이콘