본문 바로가기
프로그래밍/스프링 자바

TDD , 단위 테스트, 리팩토링

by 커피는아아 2021. 6. 28.
반응형

TDD

  • 테스트가 주도하는 개발
    • 요구사항이 급변하는 개발문화에 적합한 개발방법론
  • 테스트코드를 먼저작성한다.
  • Red → Green → Refactor 사이클
    • 실패하는 테스트를 먼저 작성하고, 테스트가 통과하는 코드를 작성하고, 통과하면 프로덕션 코드를 리팩토링 한다.

단위 테스트 코드 (Unit test)

  • TDD 첫번째 단계인 기능 단위의 테스트 코드를 작성하는 것
    • TDD와 달리 테스트 코드를 먼저 작성해야 하는 것도 아니고, 리팩토링도 포함되지 않는다.

장점

  1. 빠른 피드백
    • 기존방식
      1. 코드작성
      2. Tomcat 실행
      3. Postman과 같은 API 테스트도구로 HTTP 요청
      4. System.out.println()으로 눈으로 검증
      5. 결과 다르면 Tomcat중지하고 코드 수정
    • 코드수정시마다 톰캣을 다시 실행하는 시간을 줄일 수 있다.
  2. 자동검증 (눈 검증 x)
    • System.out.println()을 찍으며 수동검증 할 필요가 없어진다.
  3. 개발자가 만든 기능을 안전하게 보호 해준다.
    • 기존 기능이 잘 작동되는 것을 보장해 준다.
      • B기능을 추가하였더니 기존 A기능이 문제가 생긴 경우, 새기능 하나 추가할 때 서비스의 모든 기능을 테스트 하기 힘들다.
  4. 문제를 조기에 검증 할 수 있다.

리팩토링

  • 코드를 다듬는 과정
    • 가독성이 좋고 유지보수가 좋게 할 수 있는가?
  • 예)
    • 오직 한단계의 들여쓰기(indent)를 한다.
    • else를 하지 않고 return으로 처리한다.
    • 메소드가 한가지 일만 하게 하자.
    • 로컬변수가 필요한가?
    • compose Method패턴 적용
      • 추상화정도가 같아야한다.
  • 참고: https://www.youtube.com/watch?v=MRarMhbIdcQ