Adaptive REST API Testing with Reinforcement Learning
Myeongsoo Kim, Saurabh Sinha, Alessandro Orso

TL;DR
This paper introduces an adaptive REST API testing method using reinforcement learning to improve exploration efficiency, prioritize operations, and handle dynamic schemas, leading to better coverage and fault detection.
Contribution
The paper presents a novel reinforcement learning-based approach for REST API testing that dynamically prioritizes operations and parameters, addressing limitations of existing tools.
Findings
Outperforms state-of-the-art tools in code coverage and fault detection
Achieves higher operation and request coverage with fewer requests
Effective in testing APIs with dynamic and incomplete schemas
Abstract
Modern web services increasingly rely on REST APIs. Effectively testing these APIs is challenging due to the vast search space to be explored, which involves selecting API operations for sequence creation, choosing parameters for each operation from a potentially large set of parameters, and sampling values from the virtually infinite parameter input space. Current testing tools lack efficient exploration mechanisms, treating all operations and parameters equally (i.e., not considering their importance or complexity) and lacking prioritization strategies. Furthermore, these tools struggle when response schemas are absent in the specification or exhibit variants. To address these limitations, we present an adaptive REST API testing technique that incorporates reinforcement learning to prioritize operations and parameters during exploration. Our approach dynamically analyzes request and…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Software System Performance and Reliability · Software Testing and Debugging Techniques
