테스트 방법과 테스트 전략
웹 애플리케이션은 여러 모듈들을 조합하여 만드는데, 활용하는 모듈은 다음과 같다.
라이브러리가 제공하는 함수
로직을 담당하는 함수
UI 관련 함수
웹 API 클라이언트
API 서버
데이터베이스 서버
테스트 범위
정적 분석
타입스크립트다 ESLint가 제공하는 기능을 활용
단위 테스트
한 가지 모듈에 한정하여 해당 모듈이 제공하는 기능을 검증하는 테스트
함수가 고려하지 못한 부분이 있는지 검증
통합 테스트
모듈 조합으로 제공되는 기능을 검증하는 테스트
테스트가 복잡해지면 범위를 좁혀서 통합 테스트를 실시해야 테스트 목적이 명확해짐
E2E 테스트
헤드리스 브라우저와 UI 자동화 도구를 결합하여 검증하는 테스트.
실제로 애플리케이션을 사용할 떄와 가장 유사한 테스트
테스트 목적
기능 테스트(인터랙션 테스트)
개발된 기능에 문제가 없는 검증하는 테스트
프론트엔드의 대부분 기능은 UI 컴포넌트 조작(인터랙션)에서 시작되기 때문에 인터랙션 테스트가 기능 테스트가 될 때가 많으며 중요성이 높음.
실제 브라우저 API를 사용하는 것이 중요한 테스트인 경우, 헤드리스 브라우저와 UI 자동화 도구를 사용하는 것이 좋음
비기능 테스트(접근성 테스트)
접근성을 검증하는 테스트
회귀 테스트
특정 시점을 기준으로 전후 차이를 비교하여 문제가 있는지 검증하는 테스트
헤드리스 브라우저에 그려진 내용을 캡쳐하여 캡쳐한 이미지 간 차이를 검증
초기에 렌더링 된 상태만 캡쳐하여 비교하는 것에 그치지 않고 사용자 조작으로 변경된 화면까지 캡쳐하여 비교
테스트 전략 모델
아이스크림 콘 모델과 테스트 피라미드 모델
단위 테스트 비중이 높을수록, 실행시간이 짧아 신속성이 높다. 신속성이 높기 때문에 자주 실행할 수 있어 안정성도 높아진다.
테스트 피라미드가 우수한 전략이라는 의견이 지배적
테스팅 트로피
테스트 코드를 너무 많이 작성하는 것은 아닌지 고민하여야 한다. 지나치게 많이 작성했을 경우 과감하게 줄여야 한다.
Last updated