[논문 리뷰] White-Box and Black-Box Fuzzing for GraphQL APIs
이 논문은 화이트박스 및_BLK-박스 퍼지잉을 활용한 GraphQL API 자동 테스팅을 위한 혁신적인 프레임워크를 제시한다. 화이트박스 테스팅에서는 코드 커버리지와 결함 탐지 최적화를 위해 진화 알고리즘을 통합하고, 블랙박스 테스팅에서는 무작위 탐색을 적용하여, 오픈소스 7개 및 온라인 GraphQL API 31개에서 테스트 효과성 향상을 입증한다. 이는 EvoMaster 도구를 통해 이루어졌다.
The Graph Query Language (GraphQL) is a powerful language for APIs manipulation in web services. It has been recently introduced as an alternative solution for addressing the limitations of RESTful APIs. This paper introduces an automated solution for GraphQL APIs testing. We present a full framework for automated APIs testing, from the schema extraction to test case generation. In addition, we consider two kinds of testing: white-box and black-box testing. The white-box testing is performed when the source code of the GraphQL API is available. Our approach is based on evolutionary search. Test cases are evolved to intelligently explore the solution space while maximizing code coverage and fault-finding criteria. The black-box testing does not require access to the source code of the GraphQL API. It is therefore of more general applicability, albeit it has worse performance. In this context, we use a random search to generate GraphQL data. The proposed framework is implemented and integrated into the open-source EvoMaster tool. With enabled white-box heuristics, i.e., white-box mode, experiments on 7 open-source GraphQL APIs show statistically significant improvement of the evolutionary approach compared to the baseline random search. In addition, experiments on 31 online GraphQL APIs reveal the ability of the black-box mode to detect real faults.
연구 동기 및 목표
- GraphQL API에 대한 자동 테스팅 솔루션의 부족, 특히 화이트박스 및 블랙박스 환경에서의 문제 해결.
- 스키마 추출 및 JUnit 및 Jest 형식의 실행 가능한 테스트 케이스 생성을 포함한 통합 스택 프레임워크 개발.
- GraphQL API에 대한 화이트박스 테스팅에서 진화 알고리즘의 효과성과 블랙박스 테스팅에서의 무작위 탐색의 효과를 평가.
- 실세계 오픈소스 및 온라인 GraphQL API에서 결함 탐지 및 커버리지 향상을 위해 프레임워크 검증.
- 소스 접근 가능 여부에 관계없이 원격 API를 대상으로 하는 화이트박스 및 블랙박스 테스팅을 지원하기 위해 EvoMaster 도구에 GraphQL 전용 테스트 생성 기능을 확장.
제안 방법
- 프레임워크는 GraphQL 스키마를 추출하고, 다중 유전자 유형을 활용한 유전적 표현 방식을 사용해 테스트 가능한 구조로 모델링한다.
- 화이트박스 테스팅에서는 내부 및 구조적 변형 연산자를 사용하는 진화 알고리즘이 코드 커버리지와 결함 탐지 최적화를 위한 테스트 케이스를 진화시킨다.
- 블랙박스 테스팅에서는 소스 코드 접근 없이도 스키마만을 기반으로 유효한 GraphQL 쿼리를 생성하는 무작위 탐색을 사용한다.
- 이 방법은 오픈소스 EvoMaster 도구의 확장으로 구현되었으며, JUnit 및 Jest 형식의 테스트 출력을 지원한다.
- 프레임워크는 중첩된 함수 호출 및 재귀적 데이터 구조와 같은 복잡한 스키마 기능을 지원한다.
- 화이트박스 평가에서 결과의 강건성을 확보하기 위해 통계 분석 및 다양한 랜덤 시드를 사용한 30회 반복 실행을 실시하였다.
실험 결과
연구 질문
- RQ1진화적 탐색이 무작위 탐색보다 화이트박스 테스팅에서 코드 커버리지 및 결함 탐지 측면에서 더 우수한 성능을 보일 수 있는가?
- RQ2소스 코드 접근 없이도 블랙박스 무작위 테스팅이 프로덕션 수준의 GraphQL API에서 실질적인 결함을 효과적으로 발견할 수 있는가?
- RQ3제안된 프레임워크는 오픈소스 및 온라인 서비스를 포함한 다양한 GraphQL API 구현 환경에서 어떻게 확장 가능한가?
- RQ4스키마 분해 및 유전적 연산자가 GraphQL 테스팅에서 테스트 케이스 생성 품질에 미치는 영향은 무엇인가?
- RQ5EvoMaster 프레임워크는 화이트박스 및 블랙박스 테스팅을 모두 지원하기 위해 어느 정도 확장 가능한가?
주요 결과
- 화이트박스 테스팅에서 진화적 접근은 7개의 오픈소스 API에서 무작위 탐색 대비 평균 라인 커버리지가 6% 향상되었으며(최대 26.9%), 성능 향상을 입증하였다.
- 화이트박스 모드에서는 7개의 테스트 API에서 추가로 77개의 결함을 탐지하여 우수한 결함 탐지 능력을 입증하였다.
- 블랙박스 테스팅에서는 31개의 온라인 GraphQL API에서 총 825개 엔드포인트 중 최대 641개에서 오류를 탐지하였다.
- 프레임워크는 JUnit 및 Jest 형식의 실행 가능한 테스트 세트를 성공적으로 생성하여 CI/CD 파이프라인에의 통합을 가능케 하였다.
- 결과는 통계적으로 유의미하였으며, 각 API에 대해 30회 반복 실행을 통해 랜덤 초기화에 의한 변동성 감소 및 신뢰성 확보를 실시하였다.
- 프레임워크는 공개적으로 EvoMaster 확장 기능으로 제공되며, 실험 스크립트 및 데이터셋은 모두 GitHub 및 Zenodo에 게시되어 재현 가능성을 확보하였다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.