[테스트 마스터하기#2] 단위 테스트란?

YoungHo-Cha·2022년 5월 26일
1

Testing

목록 보기
2/7

본 내용은 Unit Testing - 블라디미르 코리코프 도서를 읽고 정리한 내용입니다.

단위 테스트란?

✅ 단위 테스트에는 많은 정의가 존재한다. 중요한 부분만 뽑아서 이야기하자면 다음과 같이 3가지의 속성이 있다.

  1. 작은 코드 조각을 검증하고,
  2. 빠르게 수행하고,
  3. 격리된 방식으로 처리하는 자동화된 테스트다.

1번과 2번은 논라의 여지가 없다. 하지만 3번에는 "격리 문제"를 두고 논란이 있다. 논란에는 "고전파"와 "런던파"가 존재한다. 두 가지의 시각을 살펴보자.

런던파

런던파는 "코드 조각을 격리된 방식으로 검증한다는 것은 무엇을 의미하는가?"에 대해서 다음과 같이 이야기 한다.

테스트 대상 시스템을 협력자에게서 격리하는 것을 일컫는다.

✅ 즉, 하나의 클래스가 다른 클래스 또는 여러 클래스에 의존하면 이 모든 의존성을 테스트 대역으로 대체해야 한다. 이런 식으로 동작을 외부 영햐오가 분리해서 테스트 대상 클래스에만 집중할 수 있다.

✅ 런던파와 같이 테스트를 수행하면 좋은 점은 "테스트가 실패하면 확실히 테스트 대상 시스템이 고장 난 것이다. 의존되는 부분은 모두 테스트 대역으로 대체됐기 때문이다." 이다.

고전파

고전파는 "코드 조각을 격리된 방식으로 검증한다는 것은 무엇을 의미하는가?"에 대해서 다음과 같이 이야기 한다.

각각의 테스트를 격리하는 것은 여러 클래스가 모두 메모리에 상주하고 공유 상태에 도달하지 않는 한, 여러 클래스를 한 번에 테스트해도 괜찮다는 뜻이다.

✅ 예를 들어 어떤 테스트가 준비 단계에서 데이터베이스에서 고객을 생성할 수 있고, 이 테스트가 실행되기 전에 다른 테스트의 준비 단계에서 고객을 삭제할 수도 있다. 이 두 가지 테스트를 병렬로 실행하면 첫 번째 테스트가 실패하는데, 이는 제품 코드가 고장 나서가 아니라 두 번째 테스트의 간섭 때문이다.

❗️파일 시스템이나 데이터베이스는 테스트간에 공유되거나 테스트 대역을 사용해야 한다.


참고

  • 도서 Unit Testing - 블라디미르 코리코프
profile
관심많은 영호입니다. 궁금한 거 있으시면 다음 익명 카톡으로 말씀해주시면 가능한 도와드리겠습니다! https://open.kakao.com/o/sE6T84kf

0개의 댓글