EvoMaster: A Search-Based System Test Generation Tool
Andrea Arcuri, Juan Pablo Galeotti, Bogdan Mărculescu, Man Zhang · The Journal of Open Source Software · 2021
Statement of NeedTesting web/enterprise applications is complex and expensive when done manually.Often, software testing takes up to half of the development time and cost for a system.So much testing is needed because the cost of software failure is simply too large: for example, in 2017, 304 software failures (reported in the media) impacted 3.6 billion people and $1.7 trillion in assets worldwide (Tricentis, 2017).Unfortunately, due to its high cost, software testing is often left incomplete, and only applied partially.To address this problem, in Software Engineering (SE) research a lot of effort has been spent in trying to design and implement novel techniques aimed at automating several different tasks, where software testing is among the most studied tasks.Search-Based Software Testing (SBST) (Harman et al., 2012) casts the problem of software testing as an optimization problem, aimed at, for example, maximizing code coverage and fault detection.Our SBST tool called EvoMaster addresses these challenges by using evolutionary techniques to automatically generate test cases.It currently focuses on RESTful web services, which are the pillars of modern web and enterprise applications (Allamaraju, 2010;Fielding, 2000).The EvoMaster tool is aimed at:• practitioners in industry that want to automatically test their software.• researchers that need generated test cases for their studies. Tool SummaryEvoMaster (Arcuri, 2018a) is a SBST tool that automatically generates system-level test cases.Internally, it uses an Evolutionary Algorithm and Dynamic Program Analysis to be able to generate effective test cases.The approach is to evolve test cases from an initial population of random ones, using code coverage and fault detection as fitness function. Key features:• At the moment, EvoMaster targets RESTful APIs compiled to JVM 8 and 11 bytecode.• The APIs must provide a schema in OpenAPI/Swagger format (either v2 or v3).• The tool generates JUnit (version 4 or 5) tests, written in either Java or Kotlin.