공부/Test Code

UnitTEST

kkkkkdddddhhhhh 2024. 1. 11. 03:40

UnitTest

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

Junit 5

  • AssertJ
    • 테스트 라이브러리
    • 풍부한 API, 메서드 체이닝 지원.

TEST CASE

  • Test 세분화 하기
    • Happy Case
      • 요구사항에 맞는 케이스
    • 예외 케이스
      • 요구사항에 들어나지않은 암묵적인 요구사항이 있었을 때
        • 주문 갯수를 -1 로 입력한다거나 0개라거나 등등.. 예외적인 케이스

경계값 테스트가 중요하다.

  • 범위 (이상,이하, 초과,미만) 구간, 날짜 등…

테스트하기 어려운 영역을 분리하기

테스트하기 어려운 영역을 외부로 분리해

테스트 작성시 외부값을 받아 테스트 진행을 한다.

  • ex) 주문 기능에 정해진 영업시간에만 주문이 가능는 서비스가 있을 때
  • 주문시간을 매개변수(외부값)로 받아 테스트를 진행하여 시간에 구속받지않고 테스트를 진행하도록한다.

테스트 하기 어려운 영역을 외부로 더 멀리 분리할수록 테스트 가능한 코드는 많아진다.

테스트하기 어려운 영역

  • 관측할 때 마다 다른값에 의존하는 코드
    • 현재 날짜/시간, 랜덤값, 전역 변수/ 함수, 사용자 입력 등등..
  • 외부세계에 영향을 주는 코드
    • 표준 출력, 메시지 발송, 데이터베이스 기록하기 등등….

순수함수 :

  • 같은 입력에는 항상 같은 결과
  • 외부 세상과 단절된 형태
  • 테스트하기 쉬운 코드

KEYWORD

  • 단위 테스트
  • 수동 테스트, 자동화 테스트
  • 해피 케이스, 예외 케이스
  • 경계값 테스트
  • 테스트하기 쉬운 영역 / 테스트하기 어려운 영역 (순수 함수)

lombok :

@Data , @Setter , @AllArgsConstructor 지양

'공부 > Test Code' 카테고리의 다른 글

TDD  (0) 2024.01.11
TEST = []  (0) 2024.01.11
Spring & JPA 기반 테스트  (0) 2024.01.11
Mock  (0) 2024.01.11
더 나은 테스트 작성하기  (0) 2024.01.11