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

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

Day 10. 단위 테스트

테스트는 왜 필요할까?

  • 빠른 피드백

  • 자동화

  • 안정감

단위 테스트

  • 작은 코드 단위(클래스 or 메서드)를 독립적으로 검증하는 테스트

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

테스트 케이스 세분화하기

  • 해피 케이스

  • 예외 케이스

  • 경계값 테스트

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

테스트하기 어려운 영역

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

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

순수 함수

  • 같은 입력에는 항상 같은 결과

  • 외부 세상과 단절된 형태

  • 테스트하기 쉬운 코드

Day 11. TDD | 테스트는 [ ] 다

TDD: Test Driven Development

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

  • 테스트와 상호작용하며 발전하는 구현부

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

  • 애자일 성명서 : http://agilemanifesto.org/

테스트는 [ ] 다

  • [ ]는 강의에서

    😀

  • 우리는 항상 팀으로 일한다

DisplayName을 섬세하게

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

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

BDD 스타일로 작성하기

  • TDD에서 파생된 개발 방법

     

  • Given : 시나리오 진행에 필요한 모든 준비 과정 (객체, 값, 상태 등)

  • When : 시나리오 행동 진행

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

Day 12. 테스트 코드 적용 미션

 https://github.com/japygo/readable-code/commits/mission7-1/

회고

  • 이름 짓기처럼 DisplayName을 짓는 것도 역시나 고민되고 어렵다.

  • 테스트 코드를 굳이 작성해야하나 싶은 테스트를 작성해야 하는지 의문이다.

  • 테스트 커버리지 보다는 다양한 예외 케이스들을 제대로 했는지가 중요한 것 같다.

Day 13. Spring & JPA 기반 테스트: Persistence Layer

레이어드 아키텍처(Layered Architecture)와 테스트

  • 풍부한 단위 테스트 & 큰 기능 단위를 검증하는 통합 테스트

Library vs Framework

  • Library: 내 코드가 주체

  • Framework: 이미 동작할 수 있는 환경이 있어 내 코드가 수동적

Persistence Layer

  • Data Access의 역할

  • 비즈니스 가공 로직이 포함되어서는 안 된다. Data에 대한 CRUD에만 집중한 레이어

Day 14. Spring & JPA 기반 테스트: Business Layer

Business Layer

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

  • Persistence Layer와의 상호작용(Data를 읽고 쓰는 행위)을 통해 비즈니스 로직을 전개시킨다.

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

회고

  • 테스트 코드 강의 역시 상상 속의 있던 유니콘을 만나는 기분이었다.

  • 중요한 걸 알지만 현업에서 만나볼 수 없어서 감이 전혀 오지 않았는데 어떤 느낌인지 알 수 있었다.

  • 열심히 해서 다양한 테스트 케이스를 만나 볼 수 있으면 좋겠다.

출처

댓글을 작성해보세요.

채널톡 아이콘