본문 바로가기
Spring&SpringBoot/<토비의 스프링 3.1 Vol1.1>, 이일민

테스트 코드는 왜 사용하고, 어떻게 작성해야 하는가?

by 민휘 2023. 3. 8.

테스트의 유용함

테스트는 내가 의도했던 대로 코드가 정확히 동작하는지 확인해서, 만든 코드를 확신할 수 있게 해주는 작업이다.

코드를 개선하는 과정에서 그것이 처음과 동일한 기능을 수행함을 보장해줄 수 있다.

테스트는 개발자가 마음 편하게 잠자리에 들 수 있게 해주는 것이다.

 

수동 테스트 vs 자동 테스트

웹으로 수동 테스트를 하게되면 서버 띄우고 입력하고 클릭까지 해야하므로 실행이 번거롭다.

테스트 수행에 참여하는 클래스의 코드가 많기 때문에 오류 원인을 찾기 어렵다.

반면 자동 테스트는 코드로 작성한다. 실행이 간편하기 때문에 반복 수행이 가능하다.

자동 테스트는 테스트 클래스에 별도로 보관한다.

 

단위 테스트와 관심사 분리

테스트 코드에 관심사 분리를 적용하면 그 대상에만 집중해서 테스트할 수 있다.

확인 대상과 조건이 명확해서 오류의 원인을 찾기 쉽다.

또 단위 테스트는 짧기 때문에 코드를 작성하고 바로 의도대로 동작하는지 확인할 수 있다.

 

테스트 작성 조언

테스트는 동일한 코드에 대해 일관적인 결과를 발생시켜야 한다.

실행 순서에 독립적이어야 하며, 리소스 상태에 의존적이면 안된다.

그래서 DB 계층에 접근하는 테스트이 경우 리소스를 원상태로 돌려놔야 한다.

 

 

테스트는 포괄적이고 꼼꼼하게 작성해야 한다.

한 가지 결과만 검증하고 마는 것은 위험하다.

성공하는 테스트만 골라서 만드는 것 역시 위험하다.

테스트를 작성할 때 부정적인 케이스를 먼저 만드는 습관을 들이면 예외 상황을 빠뜨리지 않는 꼼꼼한 개발이 가능하다.

 

 

테스트는 코드를 작성한 후에 가능한 빨리 실행해야 한다.

그러려면 테스트 없이 한번에 너무 많은 코드를 만드는 것은 좋지 않다.

테스트를 먼저 만들어두면 오류를 찾기도 쉽고 자연스럽게 단위 테스트가 만들어진다.