워밍업 클럽 3기 BE 클린코드 3주차 발자국

워밍업 클럽 3기 BE 클린코드 3주차 발자국

3주차를 마무리하며...

테스트 코드에 대해서 공부하는 시간을 가졌습니다.
실무에서도 red green refactoring을 습관화해서 사용하면 심리적으로 안정감 있는 직장 생활이 될 것 같다는 생각이 들었습니다.


강의 내용정리

테스트 코드

테스트 코드(자동화 테스트)가 필요한 이유

  • 수동으로 테스트를 진행하면 시간이 비효율적으로 사용됩니다.

  • 인수인계가 어렵습니다.

  • 수동으로 테스트하기에는 휴먼오류에 대한 리스크가 존재합니다.

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

  • 빠른 피드백과 자동화 그리고 안정감을 얻을 수 있습니다.

단위 테스트

  • 작은 코드 단위를 독립적으로 검증하는 테스트를 단위테스트라고 합니다.

  • 외부에 의존하지 않고 검증을 하도록 설계하여 속도가 빠르고 안정적입니다.

     

    단위 테스트 작성할 때 주의점

  • 암묵적이거 아직 드러나지 않은 요구사항이 있는가? 에 대한 의문을 가지며 테스트 케이스를 세분화 하여야 합니다.

  • 해피케이스, 예외케이스에 대해서 고루 케이스를 세분화하여야 합니다.

  • 테스트하기 어려운 값 (외부 값, 시간)에 대해서는 분리하여 테스트에 용이한 구조로 만드는 것이 좋습니다.

     

    Layered Architecture와 테스트

    Persistence Layer Test

  • 쿼리가 의도대로 잘 작성이 되었는지 확인합니다.

  • 쿼리를 구현하는 기술이 바뀌어도 기능의 동작을 보장하도록 테스트를 작성합니다.

  • @DataJpaTest를 사용해 테스트를 진행하는 경우에는 Persistence Layer에 필요한 빈들만 주입받으며, 자동으로 테스트 후에 roll back을 해줍니다.

Business Layer Test

  • Persistence Layer와 상호작용을 통해 비즈니스 로직을 전개하며, 이를 테스트 합니다.

  • 요청값부터 만들어서 비즈니스 로직을 테스트 합니다.

  • 트랜잭션을 보장하는지 확인합니다.

Presentation Layer Test

  • 주요 로직은 business+persistence의 트랜잭션 경계내에서 끝나므로, presentation 에서는 외부에서 들어오는 값 검증을 주로 수행합니다.

  • 의존 관계를 가짜객체를 사용해서 환경을 재현합니다.

    • @WebMvcTest, @MockBean, MockMvc 객체 등을 사용합니다.


미션 Day 11

댓글을 작성해보세요.


채널톡 아이콘