🔎 테스트 코드 작성하기
- 한번 작성된 테스트 코드는
지속적인 유지보수
필요.
- 내부 구현 사항 테스트 X
- mock, stub와 같은 별도의 함수 및 테스트용 클래스를 만들어
재사용성 높이기
배포용 코드 철저히 분리
- 구현한 코드의 기능 및 동작을 한 눈에 알아볼 수 있는
문서화 기능
🔎 좋은 테스트의 원칙
📌 F : Fast
- 테스트 코드는 빠르게 실행되어야 한다.
- 파일, 데이터베이스, 네트워크 접근의 경우 테스트 코드를 느리게 만들고, 의존 환경을 만들어 테스트에 영향을 끼칠 수 있으므로
mock
stub
를 활용한다.
📌 I : Isolated
- 각각의 테스트는 독립된 환경에서 최소한의 유닛으로 검증해야 한다.
📌 R : Repeatable
- 실행할 때마다 동일한 결과를 유지해야 한다.
- 다른 테스트 코드에 의존하거나, 네트워크와 같은 외부 환경에 의존하는 경우 테스트 횟수, 환경에 따라 결과가 달라질 수 있으므로
mock
stub
를 활용한다
📌 S : Self-Validating
- 스스로 결과값을 검증하고 확인할 수 있어야 한다.
📌 T : Timely
- 테스트 코드를 작성하여 사용자에게 배포되기 전에 예상하지 못한 오류를 해결할 수 있어야 한다.
🔎 테스트 범위
Right-BICEP
📌 B : Boundary conditions
- 모든 코너 케이스에 대해 테스트 하기
- 잘못된 포멧의 input, null, 특수문자, 잘못된 이메일, 작은 숫자, 큰 숫자, 중복, 순서성 등
📌 I : Inverse relationship
- 반대 경우를 적용하여 결과값을 확인
- 덧셈 - 뺼셈, 추가 - 제거
📌 C : Cross-check
- 다른 수단을 통해 결과값이 맞는지 확인
- 추가된 과일 == 전체 과일 - 예전 과일 갯수, A 알고리즘 == 라이브러리 B 알고리즘
📌 E : Error conditions
- 예측된 에러 사항에 대한 테스트 코드 작성
- 네트워크 에러, 메모리 부족, 데이터 베이스 중지 등
📌 P : Performance characteristics
- 테스트를 통해 성능을 확인하고, 개선의 척도를 확인
참조