API 테스트 도입

어떤 개발자든 테스트코드를 작성하여 품질을 향상시키려고 노력을 한다. 수많은 테스트 라이브러리도 제공되고 있고 다양한 방식으로 테스트를 진행하고 있다. 많은 테스트 방법 중에서 API Type Schema 테스트를 도입한 부분에 대하여 정리하려고 한다.

앱을 개발할 때 타입스크립트로 타입에 관련된 에러는 컴파일 시점에 타입에러는 많이 잡을 수 있게 되었지만, 서버에 API를 호출하여 가져오는 데이터는 백앤드에서 설정한 모델링을 보면서 개발을 진행해야한다. 이때 만약 별 문제 없겠지라는 마음으로 API response data 모델을 변경하거나 제거한 상태로 앱을 배포하면 어떻게 될까?

앱은 변경된 api을 사용하는 곳에서 에러를 발생을 하고 있을 것이다. 😭

이 글에서 CI/CD는 gitAction를 사용하여 진행하였다.

테스트 체계가 잘 잡혀있다면 QA나 다른 테스트에서 확인은 가능 하지만, 테스트 관련 체계가 없다면 배포가 다 된 이후에 오류 및 버그를 보고 다시 확인하여 재배포를 하게 되는 일이 자주 발생하게 된다. 배포가 되기 전에 테스트 Job를 추가하여 좀 더 안정성 있는 배포를 해보자라는 생각이 들었다.

이번 글에서는 언제든지 변할 수 있는 API Response값과 스키마를 테스트를 하는 방법에 대하여 이야기를 하려고한다. Swagger 있는 API 모델을 TypeScript 파일로 자동으로 생성도 하고, 생성된 파일을 이용하여 API response Schema를 생성하여 ajv로 스키마와 값을 비교할 수 있는 jest Test코드를 작성하는 방법에 대하여 알아보자.

테스트 Flow

Untitled

OpenAPIGenerator

<aside> 💡 Swagger UI는 Live Demo를 사용 했다. 링크

</aside>