inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[인프런 워밍업 클럽 2기 클린코드 & 테스트 코드] 3주차 발자국

허수빈
0

해당 글은 [인프런 워밍업 클럽 2기 클린 코드 & 테스트 코드]에 참가하여 박우빈님<Readable Code: 읽기 좋은 코드를 작성하는 사고법> 강의를 듣고 작성한 글입니다.

 

이번주 강의 요약

  1. 테스트는 왜 필요할까?

    1. 테스트 코드를 작성하지 않는다면

      1. 안정성 보장 X

      2. 유지 보수 어려움

    2. 테스트 코드로 작성하면 소프트웨어의 빠른 변화에 유연하게 대처 가능!

     

  2. 단위 테스트

    1. 간단한 카페 키오스크 프로그램을 만들어 수동 테스트와 자동 테스트 비교하기

    2. JUnit5를 사용하자

    3. 해피 케이스와 예외 케이스 모두 검증해야 한다. -> 경계값 테스트로!

     

  3. TDD : Test Driven Development

    1. 실패하는 테스트 작성 -> 구현부 없는 프로덕션 코드

    2. 최소한의 코딩으로 테스트를 통과하게끔 구현

    3. 리팩토링

     

  4. 테스트는 [ ]다.

    1. 테스트는 문서다.

    2. 테스트 코드는 프로덕션 기능을 설명하는 문서가 될 수 있다.

    3. @DisplayName을 이용하여 코드를 설명하자

    4. BDD -> Given, When, Then을 이용한 시나리오 기반 테스트

     

  5. 5-1. Spring & JPA 기반 테스트 : Persistance Layer

    1. 여러 모듈이 협력하는 기능은 통합 테스트를 진행한다.

    2. Persistance Layer는 데이터베이스와 상호 작용하는 부분이다.

    3. JPA 코드를 테스트하는데, 단위 테스트와 유사하다.

 

🏃 미션

  1. Day12

Readable Code에서 진행했던 StudyCafe 프로그램을 기반으로 단위 테스트를 작성했다. 뭘 테스트하는게 좋을까... 고민했는데 일단 가장 중요한 건 돈💸이니까 주문 금액을 테스트해야겠다고 생각했다!

이용권별(시간권, 주간권, 고정권) 로 합계를 계산하는 로직을 테스트하기로 결정!

BDD를 이용하여

그 다음엔 파일에서 이용권 목록을 읽어왔을 때, 각 이용권 타입에 맞는 이용권 목록을 제대로 추출하는 지 테스트 했다.

BDD를 이용하여

마지막으로 이용권의 할인된 가격을 제대로 계산하는 지 테스트했다.

BDD를 이용하여

 

🗒️ 회고

  1. 이번주는 제법 부지런히 강의를 들어서 뿌듯했다👍👍

  2. 미션 구현 자체는 그렇게 어렵지 않았는데 내 테스트 코드가 맞는 건지는 모르겠다......ㅜㅜㅋㅋㅋㅋ 아무튼 제출의 의미를 두는 걸로...

  3. 클린 코드 강의보다 테스트 코드 강의가 더 재밌다. 매번 프로젝트 할 때마다 테스트 코드 쪽은 손도 못대서 그런지 더 많이 제대로 알고 싶은 마음이 든다. 완강까지 화이팅!

     

웹 개발 워밍업클럽

답변 0