프로젝트 기간 | 2023.06.26~2023.07.16 |
---|---|
프로젝트 목적 | jest tour |
Github | https://github.com/Jinwook-Song/tdd-basic |
- 테스트 구조 (Acceptance Criteria)
- 준비 → 실행 → 검증
- Arrange → Act → Assert
- Given → When → Then
Given: 준비 과정 재사용 When: 의도적으로 실패하기 Then: 가장 마지막에 ex) Given: 로그인 하지 않은 사용자가 When: 처음 웹사이트에 접속하면 Then: 로그인 페이지가 보여 져야 한다 하나의 사용자 스토리를 만족하기 위한 다양한 Acceptance Criteria를 Given, When Then 포맷으로 작성
- 좋은 테스트 원칙 (FIRST)
- fast: 느린것에 대한 의존성 낮추기 (mock, 네트워크 등)
- isolated: 최소한의 유닛으로 검증하기 (독립적이고, 집중적으로)
- repeatable: 실행할때마다 동일한 결과를 유지 (환경에 영향을 받지 않도록)
- self-validating: 스스로 결과 검증 (자동화를 통한 CI/CD)
- timely: 시기 절적하게 (사용자에게 배포되기 이전에 테스트 코드 작성)
- Right-BICEP
모든 요구사항이 정상 동작하는지 확인, 모든 결과가 정확한지 확인
- Boundary conditions: 모든 코너 케이스에 대해 테스트
- 유저가 0명일때, 10명일때, 예상보다 더 많을 때 등
- 잘못된 포맷 인풋, null, 특수문자, 잘못된 이메일, 작은 숫자, 큰 숫자, 중복, 순서가 맞지 않음 등
- Inverse relationship: 역관계를 적용해서 결과값 확인
- Cross check: 다른 수단을 이용해서 결과값 확인
- Error conditions: 불행한 경로에 대해 우아하게 처리 하는가?
- 네트워크 에러, 메모리 부족, 데이터 베이스 중지 …
- Performance characteristics: 성능확인은 테스트를 통해 정확한 수치로 확인
- Boundary conditions: 모든 코너 케이스에 대해 테스트
- 테스트 커버리지 (CORRECT)
- conformance: 특정 포맷을 준수
- 전화번호, 이메일, 아이디 , 파일 확장자 …
- ordering: 순서 조건 확인 (순서가 중요한 경우)
- range: 숫자의 범위 (제한된 범위보다 작거나 큰 경우)
- reference: 외부 의존성 유무, 특정한 조건의 유무
- existance: 값이 존재하지 않을 때 어떻게 동작 하는지?
- cardinality: 0-1-N 법칙에 따라 검증
- time: 상대, 절대, 동시의 일들
- 순서가 맞지 않는경우, 소비한 시간, 지역 시간
- conformance: 특정 포맷을 준수