본문으로 건너뛰기

test

테스트의 궁극적인 목표는 안정성과 유지 보수성의 향상이다. 회귀테스트

모든 테스트는 독립적으로 실행되어야한다.

테스트는 다른 테스트의 결과나 실행 여부와는 무관하게 독립적으로 실행되어야한다.

테스트의 결과는 일관성이 있어야한다.

내부 구현에 종속된 테스트는 깨지기 쉽다. 외부 코드에서 내부 구현에 대해 많이 알고 있는 것은 모듈 간의 결합도를 높이고 캡슐화를 위반하기 때문에 유지보수를 어렵게한다.

테스트는 내부 구현보다는 인터페이스를 기준으로 테스트하는 것이 좋다.

코드가 너무 간단하고 통념적으로 당연하여 오류가 날 확률이 거의 없다면 과감하게 테스트를 생략하는 것이 낫다.

맹목적으로 TDD를 적용하는 것은 결과적으로 개발 생산성을 저하시키고, 시간 낭비가 될 수 있다. 하지만 테스트 대상의 범위등 여기서 검증해야하는 것이 무엇인지 고민하고 적절한 단위로 나누어 테스트를 실행한다면 TDD는 굉장히 큰 효과를 가져올 것이다.

프론트엔드 테스트에서는 특히 통합 테스트가 중요하다. 프론트엔드 애플리케이션은 사용자의 인터렉션으로 다수의 컴포넌트가 함께 상호작용하는 경우가 많다. 단위 테스트를 통해 개별적인 상태나 행위를 검증하는 것도 중요하지만 정말 중요한 것은 이러한 컴포넌트들이 조합되어 의도된 대로 동작하는지 검증하는 것이다. 적절한 단위의 통합 테스트는 여러 개의 단위 테스트나 상대적으로 복잡한 E2E 테스트보다 효율적으로 애플리케이션을 검증할 수 있다.

Cypress는 단위, 통합 및 E2E 테스트를 쉽게 작성하는 것을 목적으로 등장한 테스트 도구이다.

프론트엔드 테스트는 사용자와의 인터렉션이 많기 때문에 사용자 관점에서 검증하는 것이 중요하며, DOM 요소들의 시각적인 부분도 검증해야한다.

회귀 테스트는 변경 사항으로 인해 이전에 안정적이던 소프트웨어의 기능에 문제가 생기거나, 수정했던 버그가 다시 발생하는 것을 검출하는 테스트를 의미한다.