320x100
320x100

목표

1. 테스트의 실행만으로 기능의 동작을 보장할 수 있다

2. 테스트가 외부 환경에 영향받지 않고 독립적으로 실행된다

3. 테스트는 배포 전 자동으로 실행되며, 개발환경에서도 직접 실행시킬 수 있다

4. 테스트의 버전 관리가 가능하다

5. 전체 테스트가 수 분 안에 완료된다

 

 

 

테스트의 동작

: 유닛 테스트는 각 기능이 정상적으로 동작하면 전체의 동작을 보장 할 수 있다

: 그러나, API 레베렝서 테스트를 시행하면 실제로 각 기능을 검증하게 되므로 추측에 의한 검증이 아니라 동작을 보장할 수 있다

 

 

 

테스트 실행만으로 기능 검증

- 프로덕트 코드의 무결성

: 테스트만을 위한 로직이 프로덕트 코드에 존재해서는 안되며, 테스트가 프로덕트 코드를 그대로 통과해야한다

 

- 각종 환경 문제로부터의 내성

: 네트워크 연결 등 환경 문제에 대한 처리

 

- 다른 서비스 장애로부터의 내성

: 다른 서비스들로 부터 장애가 발생했을때에 대한 처리

 

 

 

 

실행

- 외부 환경으로부터의 독립

: 테스트 실행을 위해 내/외부 서비스에 접근하지 않는다

: 테스트 실행을 위해 개발 DB를 사용하지 않는다

 

- Fake 서비스 구축 (MockServer)

: 여러 사람들이 테스트를 실행할 수 있으므로 동시 처리가 가능한 Fake 서버가 필요

: 테스트 시작 시에 생성되고 종료 시에 휘발되는 fake 서비스

: 이를 MockServer를 통해 활용

 

- DB 환경 분리

: TestContainers를 활용하여 DB, Redis, 큐 등에 대한 테스트용 DB 환경을 구성

 

- 테스트 병렬화

: 테스트 병렬성을 지원하는 JUnit5을 사용

 

 

 

 

 

 

Reference

https://velog.io/@kasania/API-%EC%9E%90%EB%8F%99%ED%99%94-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EB%8F%84%EC%9E%85%EA%B8%B0

 

300x250
728x90