수동 테스팅(Manual Testing)
- 브라우저에서 작성한 코드를 미리보고, 테스트 하는 것
- 우리가 보는 것이 사용자가 보는 것과 똑같기 때문에 매우 중요함
- 단점 : 수동으로는 가능한 모든 조합과 시나리오를 테스트 하는 것이 힘듦
자동 테스팅(Automated Testing)
- 추가적으로 작성한 코드를 통해 작성된 코드를 테스트하는 것
- 코드가 변경될 때마다 서로 다른 개별 구성 요소를 테스트하고 그 다음 모든 구성 요소를 한번에 테스트한다.
- 모든 것을 상시 테스트할 수 있다는 장점이 있다.
자동 테스트의 종류
- 단위 테스트 (Unit Test)
- 앱의 가장 작은 단위에 대한 테스트를 작성 (ex 앱의 함수 또는 컴포넌트)
- 모든 함수 및 컴포넌트를 테스트하기 때문에 프로젝트에 가장 많이 사용되는 테스트 즉, 가장 흔하고 중요한 테스트
- 통합 테스트 (Intergration Test)
- 여러개의 구성 요소 조합을 테스트할 때 사용 (ex 다수의 컴포넌트가 함께 작동될 때)
- 통합 테스트도 중요하지만 단위 테스트보단 적게 사용됨
- 전구간 테스트 (End to End Test)
- 앱 전체의 워크플로우를 테스트할 때 사용(ex 사용자가 경험할 수 있는 모든 것)
테스트 시작할 때 중요한 것
- 무엇을 테스트 할 것 인가?
- 앱을 구성하는 서로 다른 요소를 테스트
- 작고, 집중된 테스트로 주요 사항만 테스트
- 어떻게 테스트 할 것인가?
- 사용자가 앱을 사용했을 때 발생할 수 있는 성공 및 오류 사례를 테스트, 흔하지 않은 시나리오 결과도 테스트
테스트 작성 시 사용되는 three 'A'
- Arrange
- render()를 사용하여 테스트 하고자 하는 컴포넌트를 렌더링
- Act
- 버튼 클릭 같이 행동을 통해 테스트할 때 사용
- Assert
- test를 통해 나온 결과와 우리가 예상한 결과와 같은지 확인
리액트에서 사용하는 툴
- create-react-app으로 생성 시 기본적으로 포함되어 있음
- Jest
- 테스트를 위한 코드를 실행하고 결과를 확인하기 위해 사용
- react-testing-library
- 리액트 앱에서 컴포넌트를 렌더링하고 시뮬레이팅하기 위해 사용