티스토리 뷰

Testing

Unit Test

멋쟁이 그루트 2022. 6. 25. 21:26

Unit Test란?

TDD(Test Driven Development)를 들어본 적 있을 것이다. TDD에는 Unit Test와 Integration Test가 있다.

Unit Test는 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트이다. 어떤 함수를 실행하면 어떤 결과가 나오는지 테스트를 한다고 생각하면 된다.

Integration Test는 각 모듈을 통합하는 과정에서 모듈 간의 호환성을 확인하는 테스트이다. 함수가 잘 작동이 되는 걸 Unit test에서 확인했으면 함수끼리 잘 호환이 되는지 확인한다고 생각하면 된다.

Unit Test는 왜?

현업에서 TDD를 한다라고 하면 대부분 Unit Test를 말한다. Integration Test는 여러 컴포넌트들 간의 상호작용을 테스트하기 떄문에, 다른 모든 컴포넌트가 준비되기 전까지는 테스트를 하기 어렵다. 하지만 Unit Test 각 부분만을 독립적으로 테스트하기 때문에 리팩토링, 컴포넌트 연결 문제 등으로 부터 자유롭다.

Unit Test를 하는 이유는 다음과 같다.

  1. 테스트 시간, 비용 절감
  2. 새로운 기능 추가 시, 빠른 테스트
  3. 리팩토링 안정성 확보
  4. 코드 자체에 대한 문서화

Stub

각 Unit을 테스트하는 것이지만, 이 Unit이 다른 Unit으로부터 데이터를 받아서 실행되는 Unit이라면 이에 대한 대비를 해야한다. 실제로 작동되는 다른 Unit이 아닌 dummy Unit인 Mock을 내가 테스트 하고자 하는 Unit의 input으로 준비하는 것이다.

테스트하기 어려운 부분을 보통 Stub을 사용하는데, 비용이 크지 않다면 stub을 사용하는 것보다 실제 객체를 사용해서 테스트하는 것이 좋다. 무조건 테스트를 할 때 stub을 사용해라라기 보다, 구축 비용을 생각해 실제 객체를 가지고 테스트를 할지 stub을 가지고 테스트 할지 고민해봐야한다.

좋은 Unit Test

테스트 코드를 짜기 위해서 따라야 하는 규칙이 5가지 있다.

  1. Fast: 테스트는 빠르게 동작하여 자주 돌릴 수 있어야 한다.
  2. Independent: 각각의 테스트는 독립적이며 서로 의존해서는 안된다.
  3. Repeatable: 어느 환경에서도 반복 가능해야 한다.
  4. Self-Validating: 테스트는 성공 또는 실패로 bool 값으로 결과를 내어 자체적으로 검증되어야 한다.
  5. Timely: 테스트는 적시에 즉, 테스트하려는 실제 코드를 구현하기 직전에 구현해야 한다.

출처: Clean Code

'Testing' 카테고리의 다른 글

E2E Test  (0) 2022.06.25
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함