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

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

Practical Testing: 실용적인 테스트 가이드 수강 후 작성한 4주차 발자국입니다.

 

4주차 강의 정리

 

Test Double

  • Dummy : 아무 것도 하지 않는 깡통 객체

  • Fake : 단순한 형태로 동일한 기능은 수행하나, 프로덕션에서 쓰기에는 부족한 객체

  • Stub : 테스트에서 요청한 것에 대해 미리 준비한 결과를 제공하는 객체 그 외에는 응답하지 않는다. - 상태 검증 (State Verification)

  • Spy : Stub이면서 호출된 내용을 기록하여 보여줄 수 있는 객체 일부는 실제 객체처럼 동작시키고 일부만 Stubing 할 수 있다.

  • Mock : 행위에 대한 기대를 명세하고, 그에 따라 동작하도록 만들어진 객체 - 행위 검증 (Behavior Verification)

BDDMockito

  • Mockito에서 BDD 스타일에 맞춰서 작성할 수 있게 끔 도와주는 라이브러리

Classicist vs Mockist

  • Classicist

    • Mocking 처리를 다 하지 말고 진짜 객체로 최대한의 테스트를 해야 한다는 주의

  • Mockist

    • 모든 것을 Mocking 위주로 테스트하자. 기능이 보장된 것들은 mocking 처리하고 테스트를 빠르고 간단하게 하자는 주의

더 나은 테스트를 작성하기 위한 구체적 조언

  • 한 문단에 한 주제

    • 테스트는 문서로서의 기능을 한다.

    • 하나의 테스트가 한 문단이라고 생각한다면 하나의 테스트는 하나의 주제만을 가져야 한다.

  • 완벽하게 제어하기

    • 어떤 테스트 환경을 조성하기 위해 완벽하게 제어할 수 있어야 한다.

    • 현재 시간, 랜덤 값, 외부 시스템과 연동하는 경우

  • 테스트 환경의 독립성을 보장하자

    • 테스트 간 결합도가 생기는 경우 독립성을 보장해야 한다.

  • 테스트 간 독립성을 보장하자

    • 두 개 이상의 테스트에 대한 독립성을 보장해야 한다.

  • 한 눈에 들어오는 Test Fixture 구성하기

    • 테스트를 위해 원하는 상태로 고정시킨 일련의 객체

    • given절에서 생성했던 모든 객체들을 의미한다

  • Test Fixture 클렌징

    • deleteAll vs deleteAllInBatch

  • @ParameterizedTest

    • 하나의 테스트 케이스인데 값을 여러 개로 바꿔보면서 테스트를 하고 싶을 때 사용하면 좋은 테스트

  • @DynamicTest

    • 어떠 환경을 설정해놓고 이 환경에 변화를 주면서 테스트하고싶을때 사용하면 좋은 테스트

  • private 메서드는 테스트할 필요가 없다.

  • 테스트에서만 필요한 메서드 중 생성자 등은 프로덕션 코드에 생성해도 좋다.

 

4주차 회고

이번 워밍업 클럽에 참여하면서 느낀점 한 가지는 '조금이더라도 계속해서 공부하자'이다. 워밍업 클럽에 참여하면서 지식을 많이 얻어갔다고는 못하겠지만 확실한건 공부에 대한 동기부여가 됐다. 이번 테스트 코드 강의를 들으면서 테스트 코드 자체를 처음 작성해보고 JPA도 처음이어서 강의를 보긴 했어도 100퍼센트 이해하진 못했다. 그래서 이번 워밍업 클럽이 끝난 후엔 JPA 스프링 자바에 대한 공부를 더 해야겠다고 생각했다. 부족한 점이 너무너무 많다고 느껴서 퇴근 후에 조금이라도 공부해서 실력을 꾸준히 쌓을 것이다.

댓글을 작성해보세요.

채널톡 아이콘