상세 컨텐츠

본문 제목

실용주의 단위 테스트. 5장. 좋은 테스트의 FIRST 속성.

TIL/실용주의 단위 테스트

by box-jeon 2019. 11. 10. 15:31

본문

Fast: 빠르다

어느 정도 빨라야 빠른 테스트인가는 상황에 따라 다릅니다. 전형적인 자바 시스템에는 단위 테스트 수천 개가 필요합니다. 평균 200밀리초가 걸린다면 단위 테스트 2500개를 실행하는 데 총 8분 이상 기다려야 합니다. 단위 테스트를 하루에 서너 번 실행하기도 버겁다면 무언가 잘못된 방향으로 나아가고 있는 것입니다. 느린 테스트에 대한 의존성을 줄여야 합니다.

Isolated: 고립시킨다

좋은 단위 테스트는 검증하려는 작은 양의 코드에 집중합니다. 예를 들어 데이터베이스를 읽는 다른 코드와 상호 작용하는 테스트 코드를 작성할 경우, 테스트는 데이터베이스가 올바른 데이터를 가지고 있는지 확인해야 합니다. 테스트를 깨뜨리는 외부의 변화도 걱정해야 합니다. 또 좋은 단위 테스트는 다른 단위 테스트에 의존하지 않습니다. 다른 테스트에 의존성을 가질 경우, 테스트가 실패했을 때 이러한 일을 만들어내는 앞선 이벤트의 긴 사슬을 따라가야할 수도 있습니다.

Single Responsibility Principle은 테스트 메서드에도 유효합니다. 테스드 메서드가 하나 이상의 이유로 깨진다면 테스트를 분할하는 것을 고려해야 합니다. 

Repeatable: 좋은 테스트는 반복 가능해야 한다

반복 가능한 테스트는 실행할 때마다 결과가 같아야 합니다. 반복 가능한 테스트를 만들려면 직접 통제할 수 없는 외부 환경에 있는 항목들을 격리시켜야 합니다.

Self-validating: 스스로 검증 가능하다

테스트 결과를 수동으로 검증하는 것은 소모적이고 실수할 가능성도 높습니다. 코드를 소스 저장소에 통합할 때마다 빌드가 자동으로 수행되고 모든 테스트를 실행합니다. 또 시스템이 허용 가능한 수준으로 건강한지 알려줍니다. 빌드 서버는 확신 정도를 판단하고, 한 단계 나아가 프로덕션 시스템에 변경 사항을 반영합니다.

Timely: 적시에 사용한다

일단 테스트를 작성하라!입니다. 다만 시스템에 있는 오래된 부분에 코드를 추가하고 거기에 단위 테스트를 작성하기보다는, 가능하면 적절한 순간에 단위테스트에 집중하는 것이 좋습니다.

관련글 더보기

댓글 영역