SW개발/IT 용어

[테스트]단위 테스트(Unit test)란?

단위 테스트(Unit Test)

단위 테스트는 하나의 모듈을 기준으로 독릭적으로 진행되는 가장 작은 단위의 테스트이다. 여기서 모듈이란 하나의 기능 혹은 .py와 같은 파일을 일컫는 말이다. 예를 들어 회원가입 메소드가 있고 이를 위한 독립적인 테스트를 1개의 단위테스트라고 부를 수 있다.

 

테스트 작성의 필요성

테스트 종류에는 단위 테스트, 통합 테스트 등 여러가지 종류의 테스트가 존재한다. 각각 종류는 다르지만 테스트 코드를 작성하는 이유는 전부 동일하다.

  • 사람이 하는 테스트는 완벽하지 않다
    -> 사람은 기계가 아니기에 항상 모든 조건을 동일하게 테스트 할 수 없다.
  • 테스트에 드는 비용을 절감할 수 있다
    -> 직접 기능을 수행하며 테스트를 하는 것 보다 테스트 코드를 돌려보는 것이 시간 절감에 도움 된다.
  • 리팩토링을 마음대로 할 수 있다
    -> 테스트 코드가 존재하기에 이를 믿고 리팩토링을 거침없이 할 수 있다.
  • 배포에 대한 두려움이 사라진다
    -> 높은 테스트 커버리지를 가진 서비스는 곧 배포에 대한 자신감으로 다가온다.

 

이외에도 테스트 코드를 작성하면서 얻는 장점을 엄청나게 많다. 하지만 장점만 존재하는 것은 아니다.

 

테스트 작성의 단점

  • 처음 테스트를 작성하는 경우 무엇부터 시작해야 할지 모른다 (즉, 진입 장벽이 높다)
    -> 테스트 케이스를 늘려나가면서 깨달아야 한다.
  • 테스트 코드 작성에 시간이 소요된다
    -> 최종적으로는 테스트 코드로 인해 비용을 절감하게 될 것이다.

 

좋은 단위 테스트

테스트 코드 역시 코드이기 때문에 아무런 규칙 없이 작성하다보면 가독성은 떨어지기 마련이고, 그렇게 시간이 지나면 쓸모 없는 쓰레기 코드가 될 가능성이 존재한다. 그렇기에 다음과 같은 규칙을 따르는 편이 좋다.

  1. 테스트는 가능한 빠르게 동작하도록 작성한다
  2. 외부 API가 포함된 테스트의 경우, Mocking을 통해 해결한다
  3. 어느 환경에서라도 동일한 결과값을 보장해야 한다
  4. 각각의 테스트는 독립적이고, 의존적이지 않아야 한다
  5. 테스트는 실제 코드를 구현하기 전에 먼저 작성하는 것이 가장 best 

 

단점보다는 장점이 명확하게 많은 테스트 코드이기에 개발자라면 꼭 한번 작성하는 법을 공부해보는 편이 좋다고 생각한다.

 

728x90

'SW개발 > IT 용어' 카테고리의 다른 글

[WAS]WAS 와 Web Server의 차이점  (0) 2021.12.22
[SoC]관심사 분리란?  (0) 2021.12.21
[Gunicorn]Gunicorn 란? 쓰는 이유는?  (3) 2021.07.10
[Webhook]웹훅이란?  (5) 2021.05.27
[Kubernetes]쿠버네티스란?  (0) 2021.05.13