Test code

 

Summry

본 문서에서는 Test code에 대해 정리한다.

send me email if you have any questions.


Test Code 작성 이유

  • 테스트 코드를 작성하는 가장 큰 이유는, 잘 작동하는, 깔끔한 코드를 얻기 위해서이다.
    • 테스트를 쉽게하기 위해서는, 어플리케이션 코드를 테스트하기 쉽게 짜야한다. 결국 테스트 코드를 짜기 위해 노력하다보면, 어플리케이션 코드가 깔끔해진다.
  • 시간의 단축
    • 테스트 코드를 작성하면 귀찮고 시간도 되려 오래걸린다고 생각할 수 있지만 오히려, 시간을 단축할 수 있다.
    • 테스트 코드 작성 전 테스트 과정
      1. 코드를 수정한다.
      2. 서버를 동작시킨다.
      3. 필요에 따라 테스트에 필요한 데이터를 DB에 입력한다.
      4. 브라우저를 통해 우리의 서버에 접속하고, 테스트 대상 메소드를 동작시키는 요청을 한다.
      5. 테스트를 마치고, DB의 데이터를 정리한다.
      6. 이 과정을 반복한다.
    • 테스트 코드 작성 후 테스트 과정
      1. 코드를 수정 한다.
      2. 테스트 코드를 실행한다. (테스트 코드를 이미 작성했다는 가정)
      3. 결과를 확인한다.

Test Code 사용 시 장점

  • 서버를 실행하는 등의 시간을 절약할 수 있다.
  • 필요한 데이터를 미리 기입하고, 테스트가 끝나고 정리하는등의 행동을 하지 않아도 된다.
  • 단위테스트의 경우 수십ms 이기 때문에 테스트가 매우 빠르다.
  • 문서로서의 역할이 가능하다.
    • 테스트 코드는, 개발자가 작성한 메소드가 어떻게 동작했으면, 어떤 결과를 반환했으면, 하는 것을 작성한 것이기 때문에 처음 코드를 보는 개발자들이 테스트 코드를 통해서, 코드의 동작을 조금더 수월하게 이해할 수 있다.
  • 깔끔한 인터페이스를 얻어낼 수 있다.

Test Code 작성 방법

public class Person{

    public String hi(String name){
        return "hi " + name;
    }
}

위의 Person 클래스를 테스트한다고 가정한다.

1. 테스트 대상 행위를 정한다.
* Person객체에 hi()라는 메소드에 매개변수로 String 타입의 name을 전달하여 호출. 2. 기대하는 결과를 작성한다.
* “hi name”을 반환. 1, 2번을 결합해 테스트 코드로 작성한다.

public class PersonTest{
    @Test
    public void hi_test() throws Exception{
        //given
        String name = "junho";
        Person p1 = new Person();

        //when
        String result = p1.hi(name);

        //then
        assertThat(result, is("hi junho"));
    }
}

Tip

1. given, when, then

테스트 코드 작성시, 많은 곳에서 추천하는 코딩 스타일이다.
어떤값이 주어지고(given), 무엇을 했을때(when), 어떤 값을 원한다(then)을 나누어 직관적으로 볼 수 있기 때문에, 테스트 코드의 가독성이 향상된다.

  • 테스트 코드의 가독성이 중요한 또 다른 이유는, 테스트 코드가 문서로써의 역할을 하기도 하기 때문.

2. 모든 response에 대한 테스트를 진행한다.

  • api가(테스트대상) 조금이라도 수정될 경우, 테스트코드가 실패하게 됨으로써, 항상 올바른 테스트 코드를 유지할 수 있도록 한다.
  • api가(테스트대상) 변경되면, 테스트 코드역시 변경되어야 하는 것은 당연하다.
  • 테스트 코드의 커버리지가 높을 수록 좋다. 테스트 코드는 정상적으로 작동하는 부분만을 테스트 하면 안된다. 테스트 코드는 실수나 오류를 발견하고 이를 줄이고 수정하기 위해 작성하는 것이다.

    Reference

Test - Test 코드를 작성해야하는 이유와, 방법 - 사용자 galid1