테스트 자동화 에세이
CICD 파이프라인에서 모든 테스트 계층(Web Mobile API DB..)을 단일 프레임워크와 1가지 언어로 운영하는 게 유지보수와 운영면에서 좋겠어, QA팀 리소스는 언제 어디서나 늘 제한적이기 때문이고, 여러 도구를 활용하는 것보단 하나의 도구를 깊게 활용하는 것이 좋겠어.
The motivation with this module is to provide a high-level abstraction for testing HTTP, while still allowing you to drop down to the lower-level API provided by superagent.
UI 테스트와 마찬가지로 재사용성이 중요해. QA팀이 API 테스트에 대한 최신 API 스펙을 별도로 유지하고 관리하기 위해선 그만큼 운영과 구현에 필요한 비용을 최소화해야 해. GET POST DELETE 요청에 대해 재사용 가능한 함수를 만들어야겠어. 아무래도 GET POST DELETE 요청을 1개의 함수로 구현하는 것보단 각각의 요청에 대한 개별 함수로 분리하는 게 좋을 것 같아.
baseUri와 payload, endpoint가 필요하겠구나, 이것들을 별도로 관리해서 GET POST DELETE 요청에 대한 함수를 어떠한 시나리오든 재사용할 수 있게 만드는 게 좋겠어. 비유효 시나리오에 대한 payload에서는 faker 라이브러리를 활용해도 괜찮을 것 같네.
API 기능 테스트 플로우도 살펴볼 겸 API 테스트 자동화 구현에 필요한 정보들을 하나하나 직접 확인해 보는 게 좋겠어. 우선 유효 이메일과 비밀번호로 로그인을 시도했을 때 로그인 API가 어떤 API인지 살펴보자. 헤더와 페이로드 그리고 응답이 이렇게 오는구나, 이런 식으로 서비스에 중요한 API를 하나씩 살펴보고 필요한 payload와 endpoint를 정리하면 좋을 것 같아. 검증은 statusCode와 Token의 유무 그리고 비유효시나리오일 경우 에러에 대한 body 체크를 모두 해야겠어.
이제 거의 끝났네, CICD 파이프라인에서 실행할 스크립트를 package.json에 추가하고 unit 테스트 이후 e2e 테스트 실행 스크립트 전에 실행되도록 구성해야겠어. 어차피 api 테스트는 실행 속도가 굉장히 빠르니 ci 워크플로우 job을 분리하지 않아도 될 것 같아.
시간이 흘러..