테스트
- 에러를 사전에 검사하기 위한 것
- 동작이 이전과 다른것이 있는지 검사하는 것
- 사전 검증을 통하여 안정성 있는 앱을 전달하기 위함
static analysis(정적 분석)
- 코드 상에서 있는 문제를 바로 알아낼 수 있는 것
- type checking(typescript,flow 등)
- Lint(ESLint)
- 가장 쉽게 접근할 수 있는 방법
- 저비용 고 효율
Testable code
- 코드를 각각 단위에 맞게 쪼개는 것
- 잘게 쪼갤 수록 더 테스트가 쉬워짐
- 비즈니스 로직, app state, 컴포넌트 등의 단위로 분리
Structuring Test
- 테스트 작성시 명확하게 어떤 테스트인지를 전달하기 위함
- 구조화된 테스트문은 모드가 테스트의 요구사항을 파악하기 쉬워짐
- 구조화된 테스트문 작성법
- Given : 어떤 조건의 테스트인지?
- When : 어떤 함수 또는 행동에 의해서 발생하는것 인지?
- Then : 어떠한 결과값이 나와야 하는지
테스트 종류
Unit Test
- 가장 작은단위 테스트
- 쉽고빠르게 작성 가능, 바로 실행하여 검증 가능
- function 또는 class 등에 적용
- 작은단위로만 테스트하기 때문에, 합쳐졌을때 동작이 달라질 수 있음
Integration Test
- 통합테스트, 유닛테스트들과 함께 통합해서 테스트 하는 것
- 각각의 유닛 테스트 결과들을 섞어 테스트 결과값을 정하게 됨
Component Test
- 컴포넌트 자체에 대한 검증을 진행
- Interaction Test : 버튼이 눌리는지, 혹은 disable되었을 때 눌리지 않는지 등에 대한 검증
- Snapshot Test : 이전에 render되던 것과 지금 render되는 것이 같은지 검증
E2E Test (End to End Test)
- 실제로 돌아가는 앱에서 지정된 스크립트대로 반복하는것
- 실제로 로그인 플로우 등 잘 변하지 않는 화면에 대해서 테스트 가능
- 실제 핸드폰과 연동하여 테스트 가능
- Detox, Appium 등 오픈소스 이용가능
- 많은 구축 비용이 들어감