[JAVA, TEST] TDD, TEST CODE를 작성해야 할 이유

TDD, Test Code, Refactoring

Posted by iheese on August 10, 2022 · 3 mins read
  • 우리가 작성한 코드를 시험하는 방법은 여러 가지가 있다.
    • System.out.println 으로 콘솔에 찍어보기, 로그 찍어보기, 실제로 서버를 돌려 구현한 것을 실행해보기 등
  • 위의 방법은 오류를 찾기 힘들며, 시간이 많이 걸리는 단점이 있다.
  • 필자 역시 지금까지 서버를 매번 구동시키거나, println을 이용해 오류를 찾아가며 기능을 구현했다.
  • 더 의미있고 효과적인 방법이 필요하다. Test Code? !!


Test Code는 왜 작성할까?

  • 궁극적인 목표는 작동하는 깔끔한 코드를 도모할 수 있다는 것에 있다.
    • TDD(Test Driven Development)의 목표이며 필자는 같은 이유라고 생각한다.
  • 테스트 코드 작성 -> "작동하는" "깔끔한" 코드 를 의미하는 이유
    1. 클래스의 한 메소드에 대한 테스트 코드를 작성하여 초록 막대(테스트 성공)를 확인하는 것은 그 메소드의 기능을 확실하게 해준다.
    2. 테스트 코드로 수많은 기능을 확실하는 것은 잘 작동하는 에 해당된다.
    3. 테스트 코드를 통해 실제 코드를 복기하고 리팩토링 과정을 거치면서 깔끔한 코드가 되게 된다.
      • 리팩토링 : 결과의 변경없이 코드의 구조를 재조정하는 행위, 가독성을 높이고 유지보수를 편하게 한다.


TDD (Test Driven Development, 테스트 주도 개발)

  • 실제 코드 작성 전에 테스트 코드를 작성하는 방법을 의미한다.
  • TDD의 단순한 두 가지 규칙
    1. 오직 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다.
    2. 중복을 제거한다.


TDD의 프로그래밍 순서

tdd

  1. 빨강 : 실패하는 작은 테스트를 작성한다.
  2. 초록 : 어떤 방식으로든 빨리 테스트를 통과하게끔 만든다.
  3. 리팩토링 : 일단 테스트를 통과하게끔 만들면서 생긴 중복을 제거한다.


Test Code의 추가적인 장점

  • Test Code를 잘 작성해놓으면 문서로서의 역할이 가능해진다. 다른 개발자들이 테스트 코드를 통해 실제 코드의 동작, 의도를 이해하고 파악하는데 도움을 준다.
    • 또한 실제 코드 작성자인 경우에도 코드 변경이 일어났을 때 변경된 부분과 영향을 주고 받는 부분을 확실하게 알 수 있고 실수도 줄여줄 수 있다.
  • 시간 절약(서버 실행, DB 뒷처리 등)이 가능해진다.


마무리


Reference: