본문 바로가기

서버/TDD

[TDD 공부-java] 2) 테스트 코드 작성 순서 익히기

오늘은 테스트 코드의 작성 순서와 왜 그런 순서를 따라야 하는지에 대해서 공부했다. 또, 실습을 위한 프로젝트의 기능명세서를 작성하고 어떻게 구현해야 할지에 대한 구상을 했다. 

테스트 코드의 작성 대상 정하기 

아래 두 가지 규칙에 따라서 어떤 기능의 테스트 코드부터 작성할지 결정한다. 

  • 구현하기 쉬운 경우에서 어려운 경우로 진행
    • 빠르게 테스트를 통과시키기 위하여
    • ex. 테스트 해야할 기능이 아래와 같이 3가지가 있을 때, 아래와 같은 순서로 작성한다. 모든 규칙을 충족하는 경우가 구현하기 가장 쉬울 것이고, 1번으로 구현한 것에서 한 가지면 변형되는 2번을 그 다음으로 작성, 마지막으로 3을 작성한다. 
      1. 모든 규칙을 충족하는 경우
      2. 길이만 8글자 미만이고 나머지 규칙을 충족하는 경우
      3.  길이가 8글자 이상인 규칙만 충족하는 경우
  • 예외적인 경우에서 정상적인 경우로 진행
    • 다른 코드들을 많이 작성한 후에 예외 상황에 대해 테스트 하려면 코드의 구조를 뒤집거나, 중복된 처리를 하게될 가능성이 높아진다. 따라서 예외 상황 먼저 처리하는 것이 좋다. 

테스트 코드 작성 순서

  1. 예시를 추가하면서 구현 : 동일 조건의 예를 추가하면서 구현을 일반화 한다.
  2. 코드 정리 - 중복 제거 : 테스트 코드에서도 중복 된 코드가 있다면 모듈화 -> 이때 @Test 어노테이션은 붙지 않는다.
  3. 다음 테스트 선택 = 예외 상황 선택 : 계속해서 관련 예외 상황에 대해 처리한다.
  4. 코드 정리 - 상수를 변수로 : 객체의 메소드 또는 assertEquals와 같은 곳에 상수를 직접 넣은 곳이 있다면 변수로 바꿔준다. 
  5. 관련 예외처리와 코드 정리까지 모두 끝났다면 다음 테스트를 선택하고 위 과정을 반복한다.  => 구현하기 쉬운 테스트로 선택 

실습을 위해 활용한 것 

우아한 테크코스의 프리코스 프로젝트를 활용했다. 아래 프로젝트를 클론 받고, 어떤 기능을 구현해야 하는지 세분화 했다. 기능을 세세하게 나눌 수록, 각각에 대한 테스트 코드를 작성하기 쉽다.

 

Hyun-juhee/java-racingcar

TDD project 1. Contribute to Hyun-juhee/java-racingcar development by creating an account on GitHub.

github.com

 

반응형