TDD(Test Driven Development)
단위 테스트는 특정한 모듈 혹은 단위가 기능을 의도한 대로 올바르게 수행하고 있는지 확인하는 것으로, 테스트 중에서도 가장 기본이고 기저에 깔려 있어야 하는 테스트입니다.
Fast: 단위 테스트는 빨라야 한다.
Isolated: 단위 테스트는 외부 요인에 종속적이지 않고 독립적으로 실행되어야 한다.
Repeatable: 단위 테스트는 실행할 때마다 같은 결과를 만들어야 한다.
Self-validating: 단위 테스트는 스스로 테스트를 통과했는지 아닌지 판단할 수 있어야 한다.
Timely/Thorough – 2가지 해석이 존재
테스트 코드에서는 DAMP(Descriptive And Meaningful Phrases)하게 작성하라고 이야기하는 글들이 많습니다. 한글로 풀어보면 서술적이고 의미 있게 작성하라는 이야기인데요.
DAMP하게 코드를 작성하다 보면 DRY(Don’t Repeat Yourself) 원칙과 충돌할 때도 있습니다. 일반적인 코드라면 DRY 원칙에 따라 중복을 줄이려 노력할 것입니다. 하지만 테스트 코드는 중복이 다소 발생하더라도 직관적이고 명확하게 이해되도록 테스트 코드를 작성하는 쪽에 무게를 두고 작성하는 것이 좋습니다.
Given-When-Then 구조는 BDD(Behavior Driven Development)의 중심인 사용자 행위를 기반으로 한 테스트 시나리오를 정의할 수 있도록 도와줍니다.
Given: 테스트를 하기 위해 세팅하는 주어진 환경
When: 테스트를 하기 위한 조건으로 프론트엔드에선 사용자와의 상호작용인 경우도 많음
Then: 예상 결과를 나타내며 의도대로 동작하는지 검증 및 확인할 수 있음