[워밍업 클럽 스터디 2기 :: BE 클린코드 & 테스트] 3주차 발자국
단위 테스트
JUNIT5 : 단위 테스트를 위한 테스트 프레임워크
AssertJ : 테스트 코드 작성을 원할하게 돕는 테스트 라이브러리
테스트 팁
테스트하기 어려운 영역을 구분하고 분리하기
테스트 하고자 하는 영역에서 테스트 하기 어려운 영역을 외부로 분리할수록 테스트 가능한 코드는 많아짐
테스트하기 어려운 영역
관측할 때마다 다른 값에 의존하는 코드
현재 날짜/ 시간, 랜덤 값, 전역 변수/함수, 사용자 입력
함수의 input에 해당
외부 세계에 영향을 주는 코드
표준 출력, 메시지 발송, 데이터 베이스에 기록하기
함수의 output에 해당
TDD
TDD : 프로덕션 코드보다 테스트 코드를 먼저 작성하여 테스트가 구현 과정을 주도록하는 방법론
TDD 순환 사이클
RED : 실패하는 테스트 작성
Green : 테스트 통과 최소한의 코딩
REFACTOR : 구현 코드 개선 테스트 통과 유지
TDD 핵심 가치
피드백이라는 것은 내가 작성하는 구현 코드 프로덕션 코드에 대해서 자주 그리고 빠르게 피드백을 받을 수 있다는 의미
결론 선 테스트 작성, 후 기능 구현을 해야함..
테스트는 []이다.
기술 자체의 숙련도도 중요하지만 소프트 스킬도 중요
소프트 스킬
커뮤니케이션 능력
태도 일에 임하는 몰입도 자세
글 글쓰기 능력
문서 작성 능력
테스트는 왜 문서일까?
TDD는 클라이언트가 되서 프로덕션의 기능들을 테스트
@DisplayName("음료를 1개 추가할 수 있다.")
명사의 나열보다 문장으로
테스트 행위에 대한 결과까지 기술하기
도메인 용어를 사용하여 추상화된 내용 담기
테스트의 현상을 중점으로 기술하지 말기
BDD
TDD에서 파생된 개발 방법
Given : 시나리오 진행에 필요한 모든 준비 과정
When : 시나리오 행동 진행
Then : 시나리오 진행에 대한 결과 명시 , 검증
어떤 환경에서/ 어떤 행동을 진행했을 떄 / 어떤 상태가 일어난다.
→ DisplayName에 명확하게 작성할 수 있음
댓글을 작성해보세요.