세번째  발자국 👣

세번째 발자국 👣

테스트는 왜 필요할까?

-테스트를 통해 얻고자 하는것

  • 빠른 피드백

  • 자동화

  • 안정감

단위테스트

작은 코드단위를 독립적으로 검증하는 테스트

검증속도가 빠르고, 안정적이다

테스트 케이스 세분화하기

해피케이스

예외케이스

경계값 테스트 ( 범위(이상,이하,초과,미만)구간 날짜 등)

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

테스트하기 어려운 영역

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

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

     

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

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

TDD : Test Driven Development

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

레드: 실패하는 테스트 작성 -> 그린: 최소한의 코딩 -> 리팩터: 구현코드 개선 테스트 통과유지

클라이언트 관점에서의 피드백을 주는 Test Driven

테스트는 []다

프로덕선 기능을 설명하는 테스트 코드 문서

DisplayName을 섬세하게

-명사의 나열보다 문장으로

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

-도메인 용어를 사용하여 한층 추상화된 내용을 담기

-테스트 현상을 중점으로 기술하지 말것

BDD 스타일로 작성하기

-TDD에서 파생된 개발 방법

-함수 단위의 테스트 보다 시나리오에 기반한 테스트케이스자체에 집중

-개발자가 아닌 사람이 봐도 이해할수 있을 정도의 추상화 수준을 권장

Given / When / Then

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

  • When : 시나리오 행동 진행

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

Layerd Architecture와 테스트

Layerd Architecture -> 관심사의 분리

Persistence Layer

Data에 대한 CRUD에만 집중한 레이어

  • Data Access의 역할

  • 비지니스 가공 로직이 포함 되어서는 안된다.

Business Layer

  • 비즈니스 로직을 구현하는 역할

  • Persistence Layer와의 상호작용(Data를 읽고 쓰는 행위)를 통해

    비즈니스 로직을 전개시킨다.

  • 트랜잭션을 보장해야한다.


테스트 코드 작성하기 미션 회고

이렇게 하는 것이 맞는지 계속 의문이 들었다. DisplayName을 짓는 것도 어렵고 쉽지 않았다. 예외 케이스를 생각하는게 쉽지않았다.

댓글을 작성해보세요.

채널톡 아이콘