[워밍업 클럽 스터디 2기 :: BE 클린코드 & 테스트] 3주차 발자국

단위 테스트


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

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

테스트 팁

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

    • 테스트 하고자 하는 영역에서 테스트 하기 어려운 영역을 외부로 분리할수록 테스트 가능한 코드는 많아짐

  • 테스트하기 어려운 영역

    • 관측할 때마다 다른 값에 의존하는 코드

      • 현재 날짜/ 시간, 랜덤 값, 전역 변수/함수, 사용자 입력

      • 함수의 input에 해당

    • 외부 세계에 영향을 주는 코드

      • 표준 출력, 메시지 발송, 데이터 베이스에 기록하기

      • 함수의 output에 해당

TDD


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

TDD 순환 사이클

  1. RED : 실패하는 테스트 작성

  2. Green : 테스트 통과 최소한의 코딩

  3. REFACTOR : 구현 코드 개선 테스트 통과 유지

TDD 핵심 가치

  • 피드백이라는 것은 내가 작성하는 구현 코드 프로덕션 코드에 대해서 자주 그리고 빠르게 피드백을 받을 수 있다는 의미

    • 결론 선 테스트 작성, 후 기능 구현을 해야함..

테스트는 []이다.


기술 자체의 숙련도도 중요하지만 소프트 스킬도 중요

  • 소프트 스킬

    • 커뮤니케이션 능력

    • 태도 일에 임하는 몰입도 자세

    • 글 글쓰기 능력

    • 문서 작성 능력

테스트는 왜 문서일까?


  • TDD는 클라이언트가 되서 프로덕션의 기능들을 테스트

@DisplayName("음료를 1개 추가할 수 있다.")
  • 명사의 나열보다 문장으로

  • 테스트 행위에 대한 결과까지 기술하기

  • 도메인 용어를 사용하여 추상화된 내용 담기

  • 테스트의 현상을 중점으로 기술하지 말기

BDD

  • TDD에서 파생된 개발 방법

    • Given : 시나리오 진행에 필요한 모든 준비 과정

    • When : 시나리오 행동 진행

    • Then : 시나리오 진행에 대한 결과 명시 , 검증

  • 어떤 환경에서/ 어떤 행동을 진행했을 떄 / 어떤 상태가 일어난다.

    → DisplayName에 명확하게 작성할 수 있음


댓글을 작성해보세요.

채널톡 아이콘