본문으로 건너뛰기

FIRST

FIRST란?

Fast, Independent, Repeatable, Self-Validating, Timely의 약자로 좋은 단위 테스트를 작성하는데 도움이 되는 원칙들이다.

Fast(빠르게)

테스트가 빠르게 돌아가지 않으면, 테스트를 매 순간 실행하지 않을 것이다.
테스트를 자주 실행하지 않으면, 버그를 놓칠 수 있다.
따라서 빠르게 테스트를 돌려 피드백 받는 주기를 짧게 만드는 것이 좋다.

Independent(독립적으로)

테스트끼리 서로 의존하면 안된다.
서로 의존하게 된다면 하나의 테스트가 실패할 때, 또 다른 하나의 테스트가 실패할 수 있다.
다른 테스트에 의존하지 않고, 독립적으로 실행 가능한 테스트가 좋은 테스트다.

Repeatable(반복 가능한)

테스트는 어떠한 환경에서라도 반복 가능해야 한다.
또한 반복적으로 수행해도 같은 결과를 낼 수 있어야 한다.

Self-Validating(자가 검증하는)

테스트는 성공 또는 실패로 bool 값으로 결과를 내어 자체적으로 검증해야 된다.
JUnit과 같은 자동화된 테스트 도구를 사용해야 한다.

Timely(적시에)

테스트는 적시에 작성해야 한다.
단위 테스트는 테스트 하려는 실제 코드를 구현하기 직전에 구현해야 한다.(TDD)
실제 코드를 구현한 다음에 테스트 코드를 작성한다면, 테스트 하기 어려운 코드를 작성했다는 것을 뒤늦게 발견할 수 있다.

참고 자료

A clean test, TDD Manifasto
Clean Code 9장 단위테스트, 로버트 C. 마틴