RESTful API는 현재 웹 서비스의 핵심 통신 방식으로 자리매김했으며, REST API 테스팅은 소프트웨어 시스템 버그나 보안 취약점 탐지에 필수적이다. 특히 복잡한 시스템 내부 상태를 파악하고 잠...
RESTful API는 현재 웹 서비스의 핵심 통신 방식으로 자리매김했으며, REST API 테스팅은 소프트웨어 시스템 버그나 보안 취약점 탐지에 필수적이다. 특히 복잡한 시스템 내부 상태를 파악하고 잠재된 취약점을 발견하기 위해 REST API 간의 의존성을 분석하여 스테이트풀(Stateful) REST API 테스팅을 수행하는 것이 필요하다.
최근 소프트웨어 개발에서 마이크로서비스 아키텍처의 도입은 이러한 스테이트풀(Stateful) REST API 테스팅에 난제를 제시한다. 기존 도구들은 단일 OpenAPI Specification (OAS) 문서에 기반하고 있는 반면, 마이크로서비스 아키텍처에서는 다수의, 독립적으로 관리되는 OAS 문서를 소유하는 것이 가능하다. 그리고 다수의, 독립적인 OAS 문서가 존재하는 환경에서 파라미터 및 스키마 정의가 일치하지 않는 문서 간 불일치 문제가 REST API 의존성 추출하는 데 문제가 된다.
본 논문에서는 다수의 독립적으로 관리되는 OAS 문서가 존재하는 분산된 환경에서 REST API 의존성 추출을 방해하는 12가지 유형의 문서 간 불일치를 정의한다. 이 유형들은 스키마 대 파라미터 불일치, 스키마 대 스키마 불일치, 속성 대 속성 불일치의 세 가지 영역으로 분류된다. 이러한 불일치들을 효과적으로 모델링하고 해결하는 것은 마이크로서비스 아키텍처 환경에서 REST API 의존성을 추출하고 글로벌 REST API 실행 순서를 생성하는 데 필수적이다.
정의된 12가지 불일치 유형 기반 분산된 OAS 문서로부터 글로벌 REST API 의존성 그래프를 생성하고 순회하는 두 단계 기법을 제시한다. 그래프 생성(Graph Generation) 과정에서 매칭 알고리즘을 통해 완전 일치(Exact Match)와 유사성 일치(Semantic Similarity Match) 실시하고 12가지 유형의 불일치를 해결하며 REST API 의존성을 파악한다. 발견된 의존성에 따라 그래프를 생성한다. 그 다음은 그래프 순회(Graph Traversal) 단계로, 수정된 BFS 탐색을 수행한다. 이 순회는 생성된 리스트를 사용하여 문서 간 불일치 문제를 고려하며 진행된다. 또한 의존 API가 존재하는 API의 호출을 성공적으로 생성하고 수행한다.
제안된 기법은 19개의 엔드포인트와 30개의 실제 의존성(Ground-Truth Dependencies)을 포함한 테스트 애플리케이션을 통해 평가되었다. 실험 결과, 본 기법은 최적의 유사성 임계값에서 84% 커버리지를 달성한다. 이는 제안하는 기법이 다수의 독립적인 OAS 문서를 관리하는 마이크로서비스 환경에서도 API 시퀀스(Sequence)를 추출하고 실행할 수 있음을 입증하며, 향후 분산 환경에서의 보안 테스팅 및 통합 분석을 위한 기반 기술로서의 가치를 보여준다.