[테스트 마스터하기 #5] FIRST 속성

YoungHo-Cha·2022년 6월 3일
1

Testing

목록 보기
7/7

오늘은 좋은 테스트를 만들기위한 지표인 "FIRST" 속성에 대해서 공부할 예정이다.

🧐 FIRST란?

JUnit으로 생산성을 높이기 위해서는 테스트 대상과 커버하는 경계 조건, 좋은 테스트의 요건을 알아야 한다.

위와 같은 요건을 위한 가이드 라인이 존재한다. 그게 바로 "FIRST"이다.

  • F : Fast이며, 테스트는 빨라야 한다.
  • I : Isolated이며, 테스트는 고립되어야 한다.
  • R : Repeatable이며, 테스트는 반복이 가능해야 한다.
  • S : Self-validating이며, 테스트는 스스로 검증이 가능해야 한다.
  • T : Timely이며, 적시에 단위 테스트가 작성되어야 한다.

🧐 [F]ast

테스트가 빨라야하는 이유는 매번 소스를 작성할 때마다 테스트를 돌려야하는데, 테스트가 30분이 걸린다면 그 누가 돌리고 싶겠는가..

테스트를 빠르게 하는 방법은 여러가지가 존재한다.

  1. 데이터베이스에 접근을 피하자
  2. 영속성 컨텍스트에 접근을 피하자
  3. 오래걸리는 로직을 피하자

🧐 [I]solated

테스트 대상 코드는 다른 대상과 상호작용해서는 안된다.

  • 외부 코드와 상호작용할 경우에는 외부 변화에도 걱정해야한다. 그리하여 테스트가 가용성 혹은 접근성에 이슈가 생겨 실패할 가능성이 있다.

  • 테스트 코드가 다른 테스트 코드에 의존할 경우 테스트가 실패했을 때, 앞선 테스트 중에서 어떤 테스트가 오류인지 확인하기 힘들다.

해당 내용은 SRP(단일 책임 원칙)을 따르면 해결된다.


🧐 [R]epeatable

반복 가능한 테스트는 실행할 때마다 같은 결과가 나와야 한다.

"현재 시간"과 같은 내용이 들어갈 경우 테스트를 할 때 마다 다른 결과가 나올 수 있다. 불가피하게 "현재 시간"을 사용해야할 경우 실패할 가능성을 없애야 한다.


🧐 [S]elf-validating

시스템은 자체적으로 검증할 수 있어야 한다.

개발자가 테스트 하나하나 살펴보지않아도(print문을 통한 내용 확인) 테스트는 자체적으로 검증이 되어야 한다.


🧐 [T]imely

테스트는 적시에 사용해야 한다.

단위 테스트로 코드를 검증하는 것을 미룰수록 테스트는 기하급수적으로 어려워진다. 그래서 새로운 소스를 작성할 때 바로 단위테스트를 수행하는 것이 가장 효과가 좋다.


참고

  • (도서) 자바와 JUnit을 활용한 실용주의 테스트 - 길벗
profile
관심많은 영호입니다. 궁금한 거 있으시면 다음 익명 카톡으로 말씀해주시면 가능한 도와드리겠습니다! https://open.kakao.com/o/sE6T84kf

0개의 댓글