단위 테스트

김나영·2023년 7월 12일
0

Spring

목록 보기
37/38

단위 테스트란?

  • 소프트웨어 개발에서 각 개별적인 구성 요소 또는 모듈을 독립적으로 테스트하는 접근 방법

    • 즉, 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트
  • 코드의 작은 부분인 함수, 메서드 또는 클래스의 동작을 분리된 환경에서 확인하여 해당 코드가 의도한 대로 작동하는지 확인하는 것을 목표로 함

  • 버그 발견 시간이 늦어짐에 따라 비용이 기하급수적으로 커짐

  • 하나의 기능이 올바르게 동작하는지를 독립적으로 테스트하는 것

  • 빠르게 작성할 수 있고 문제 발생 시 어느 부분이 잘못 되었는지를 빠르고 정확하게 확인할 수 있음

    • 테스트하고자 하는 부분만 독립적으로 테스트를 하기 때문에 해당 단위를 유지 보수 또는 리팩토링 하더라도 빠르게 문제 여부 확인 가능

  1. Development: 개발

  2. Unit Tests (단위 테스트): 개발자 테스트

  3. QA Testing:

    • 블랙박스 테스팅

    • 주로 QA 팀이 Production 환경과 유사한 환경(Stage)에서 테스팅

  4. Production: 실 서비스 운영 환경


FIRST 규칙

  • Fast : 테스트는 빠르게 동작하고 자주 가동 해야함

  • Independent : 각각의 테스트는 독립적어이야 하며, 서로에 대한 의존성은 없어야 함

  • Repeatable : 어느 환경에서도 반복이 가능해야 함

  • Self-Validating : 테스트는 성공 또는 실패 값으로 결과를 내어 자체적으로 검증 되어야 함

  • Timely : 테스트는 테스트 하려는 실제 코드를 구현하기 직전에 구현 해야함


테스트 코드 작성 공통 준수 사항

  • Given / When / Then 패턴

    : 테스트 코드 스타일을 표현하는 방식

    • Given : 테스트 하고자 하는 대상을 실제로 실행하기 전에 그 테스트에 필요한 값들을 미리 선언
    • When : 테스트 하고자 하는 대상을 실제로 실행시킴
    • Then : 어던 특정한 행동 때문에 발생할 거라고 예상되는 결과에 대해 예측하고 맞는지 확인
  @Test
  @DisplayName("Test")
  void test() {
      // Given

      // When

      // Then
  }

목적

  • 코드 품질 향상

    • 작은 코드 조각을 격리된 환경에서 테스트하므로 버그를 식별하고 수정하기 쉬워짐
  • 변경 사항 검증

    • 기존 기능이나 로직을 변경할 때, 테스트 스위트를 실행하여 코드가 여전히 기대한 대로 작동하는지 확인할 수 있음
  • 문서화

    • 코드의 동작과 사용법을 설명하는 자동화된 문서로 간주될 수 있음
    • 테스트 코드는 개발자들이 기능을 이해하고 코드를 사용하는 방법을 알 수 있도록 도와줌
  • 리팩토링 지원

    • 리팩토링 과정에서 코드의 동작이 변하지 않도록 확인하기 위해 테스트 스위트를 실행하여 안정성을 보장할 수 있음

참고

https://velog.io/@sussa3007/Spring-JUnit-Mockito-%EA%B8%B0%EB%B0%98-Spring-%EB%8B%A8%EC%9C%84-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%BD%94%EB%93%9C-%EC%9E%91%EC%84%B1

https://thalals.tistory.com/273

0개의 댓글