Swagger와 DB를 활용한 API테스트로 QA퀄리티 높이기
서비스 기획자에게도 API 테스트가 필요한 순간이 있다. 비록 주로 TC(Test Case) 위주의 QA를 진행하지만, 기획자가 Swagger와 DB(데이터베이스)를 활용해 API 테스트를 할 줄 알면, API의 기능을 정확하게 검증하고 잠재적인 문제를 조기에 발견할 수 있다. 이번 글에서는 이 경험을 공유하고, 효과적인 QA 방법을 소개하고자 한다.
많은 사람들이 API 테스트는 개발자만 할 수 있다고 생각할 수 있지만, 기획자도 충분히 API를 테스트하며 QA 과정이나 개발 진행 상황을 모니터링할 수 있다. Postman 같은 도구를 정식으로 세팅하는 것도 좋지만, 요즘 개발자들이 많이 활용하는 Swagger를 통해 쉽게 시작할 수 있다.
API 테스트는 서비스 기획자가 놓치기 쉬운 부분 중 하나다. 하지만 API가 서비스의 핵심 기능을 담당하고 있기 때문에 이 부분을 철저히 테스트해야 한다고 생각한다. Swagger는 이러한 API 테스트를 간편하게 도와주는 툴로, 나는 주로 다음과 같은 방식으로 활용했다.
먼저, Swagger란? API 설계, 빌드, 문서화 및 테스트를 위한 오픈 소스 툴이다. 이를 통해 API의 동작을 시각적으로 확인하고, 다양한 테스트를 수행할 수 있다. 개발자와 기획자 모두가 쉽게 접근할 수 있어 API 개발 및 관리를 효율적으로 도와준다.(https://swagger.io/) 주요 기능은 아래와 같다.
API 명세서 작성 및 확인: Swagger를 사용하여 API 명세서를 작성하고, 이를 통해 개발팀과 소통하며 API의 동작 방식을 명확히 했다. 명세서에는 각 API의 엔드포인트, 요청 방식(GET, POST 등), 요청 및 응답 데이터 형식을 포함시킬 수 있다.
API 테스트 자동화: Swagger UI를 통해 직접 API 호출을 테스트하고, 응답 데이터를 확인했다. 이 과정에서 예상치 못한 오류를 발견하면 즉시 개발팀에 피드백을 주어 수정할 수 있다.
문서화와 공유: Swagger를 통해 생성된 API 문서를 팀 내에서 공유하여, QA 팀원들이 쉽게 접근하고 테스트할 수 있다.
API 테스트 중 발생하는 여러 문제는 DB(데이터베이스)와의 상호작용에서 비롯될 수 있다. 따라서 DB를 활용한 데이터 검증은 필수적이다. 나는 보통 MySQL사용하는 환경이었기에 Workbench를 설치해 쿼리를 던져 간단하게 검증할 수 있었다.
테스트 데이터 준비: QA 과정에서 다양한 시나리오를 테스트하기 위해 필요한 데이터를 DB에 사전에 준비해야 한다. 실제 서비스에서 활용될 데이터와 동일(또는 유사한) 목데이터를 사용한다.
데이터 검증: API 호출 후 쿼리를 통해 데이터베이스에 저장된 데이터가 기대한 대로 반영되었는지 확인한다. 예를 들어, 사용자 등록 API 테스트 후 해당 사용자가 DB에 정상적으로 추가되었는지 검증한다.
문제 해결: 데이터 불일치나 저장 오류 등의 문제가 발생할 경우, 쿼리를 통해 원인을 분석하고 문제를 해결한다. 이 과정에서 발견된 문제는 상세히 기록하고, 개발팀과 협력하여 수정한다.
DB를 다룰 때 주의해야 할 몇 가지 중요한 사항이 있다.
권한 및 상의: 쿼리를 사용해 데이터를 조회하는 것은 가능하지만, 칼럼을 수정하거나 데이터를 삭제하는 등의 작업은 반드시 DB 관리자와 상의한 후 진행해야 한다. 특히 ALTER 같은 명령어를 사용한 수정 작업은 절대 혼자서 하지 말아야 한다. 이는 데이터 유실이나 시스템 장애를 초래할 수 있기 때문이다.
데이터 추가/삭제: 데이터베이스에 데이터를 추가하거나 삭제할 때는 기본적으로 개발자를 통해 목데이터(mock data)를 받고, 직접적인 변경은 피하는 것이 좋다. 이는 데이터의 일관성과 무결성을 유지하기 위함이다.
DB 접근 제한: 누구나 DB에 접근하여 수정하는 것은 좋지 않은 습관이다. 데이터 유실의 위험이 있으므로, DB를 다룰 수 있다고 해서 마음대로 DB를 생성하거나 테이블을 만들고 지우는 등의 작업은 하지 않도록 주의해야 한다. 컬럼을 만들고 지우는 작업도 개발팀과 긴밀히 협의한 후 진행해야 한다.
QA 과정 중 API와 데이터베이스 간의 문제를 해결했던 사례를 소개하고자 한다. (프로젝트를 상세히 설명하기 어려워 간단하게 요약해 보았다.)
문제 발견: 특정 조건에서 사용자 정보가 업데이트되지 않는 오류가 발생했다. Swagger를 통해 API 호출을 테스트했지만, 응답은 정상적으로 반환되었다.
원인 분석: MySQL DB 내 쿼리를 통해 데이터베이스를 조회한 결과, 업데이트된 정보가 반영되지 않았음을 확인했다. API 로그를 분석한 결과, 특정 필드에 대한 유효성 검사 오류로 인해 업데이트가 실패한 것을 발견했다.
문제 해결: 해당 유효성 검사 로직을 수정하고, 다시 API 호출을 통해 정상적으로 업데이트가 이루어짐을 확인했다. 수정된 코드를 기반으로 Swagger 명세서를 업데이트하고, 관련 테스트 케이스를 추가하여 재발 방지를 도모했다.
서비스 기획자로서 Swagger와 DB를 활용한 API 테스트는 QA 과정에서 발생하는 다양한 문제를 효과적으로 해결할 수 있는 방법 중 하나다. 철저한 테스트와 데이터 검증을 통해 서비스의 품질을 높이고, 사용자 경험을 개선할 수 있었다. 앞으로도 이러한 경험을 바탕으로 더욱 완성도 높은 서비스를 기획하고자 한다.