Automated Test-Case Generation for REST APIs Using Model Inference Search Heuristic

Research output: Chapter in Book/Conference proceedings/Edited volumeConference contributionScientificpeer-review

43 Downloads (Pure)

Abstract

The rising popularity of the microservice architectural style has led to a growing demand for automated testing approaches tailored to these systems. EvoMaster is a state-of-the-art tool that uses Evolutionary Algorithms (EAs) to automatically generate test cases for microservices’ REST APIs. One limitation of these EAs is the use of unit-level search heuristics, such as branch distances, which focus on fine-grained code coverage and may not effectively capture the complex, interconnected behaviors characteristic of system-level testing. To address this limitation, we propose a new search heuristic (MISH) that uses real-time automaton learning to guide the test case generation process. We capture the sequential call patterns exhibited by a test case by learning an automaton from the stream of log events outputted by different microservices within the same system. Therefore, MISH learns a representation of the systemwide behavior, allowing us to define the fitness of a test case based on the path it traverses within the inferred automaton. We empirically evaluate MISH’s effectiveness on six real-world benchmark microservice applications and compare it against a state-of-the-art technique, MOSA, for testing REST APIs. Our evaluation shows promising results for using MISH to guide the automated test case generation within EvoMaster.
Original languageEnglish
Title of host publicationThe 6th ACM/IEEE International Conference on Automation of Software Test
PublisherIEEE / ACM
Publication statusAccepted/In press - May 2025

Keywords

  • Software testing
  • evolutionary algorithm
  • Automata learning
  • REST API

Fingerprint

Dive into the research topics of 'Automated Test-Case Generation for REST APIs Using Model Inference Search Heuristic'. Together they form a unique fingerprint.

Cite this