EvoMaster  by WebFuzzing

AI-driven tool for automated system-level test case generation

Created 8 years ago
615 stars

Top 53.5% on SourcePulse

GitHubView on GitHub
Project Summary

EvoMaster is an open-source AI-driven tool for automatically generating system-level test cases for web and enterprise applications, primarily targeting REST, GraphQL, and RPC APIs. It aims to improve software quality by generating effective test suites for regression testing and identifying application faults, benefiting developers and QA engineers.

How It Works

EvoMaster employs an Evolutionary Algorithm combined with Dynamic Program Analysis to generate test cases. It starts with an initial population of random tests and iteratively evolves them to maximize metrics like code coverage and fault detection. AI heuristics, rooted in Search-Based Software Testing, further enhance performance. For white-box testing, it analyzes JVM bytecode, utilizing techniques like testability transformations and taint analysis for more effective test generation.

Quick Start & Requirements

  • Install/Run: docker run -v "$(pwd)/generated_tests":/generated_tests webfuzzing/evomaster --blackBox true --maxTime 30s --ratePerMinute 60 --bbSwaggerUrl https://petstore.swagger.io/v2/swagger.json
  • Prerequisites: Docker is required for the example. White-box testing requires a JVM (JDK 8 supported, higher versions may require specific settings). REST APIs need an OpenAPI/Swagger schema.
  • Resources: No major hardware requirements; works on older laptops. Execution time for good results can range from hours to a day.
  • Docs: www.evomaster.org

Highlighted Details

  • Independently studied as a top-performing fuzzer for RESTful APIs.
  • Supports white-box testing for JVM applications, analyzing bytecode and SQL interactions.
  • Generates tests in Python, JavaScript, Java JUnit, and Kotlin JUnit formats.
  • Handles authentication via headers and cookies, with dynamic token acquisition support.

Maintenance & Community

EvoMaster is a research-driven project with funding from the European Research Council and the Research Council of Norway. Community interaction is encouraged via GitHub issues and discussions.

Licensing & Compatibility

  • License: LGPL (v3).
  • Compatibility: Generally compatible with commercial use, but LGPL's copyleft provisions apply to modifications of the library itself.

Limitations & Caveats

White-box testing requires manual driver creation. Support for JDKs above 8 requires specific configuration. RPC API schema definitions are not directly supported, requiring manual driver implementation. Mocking external services is a work in progress.

Health Check
Last Commit

1 day ago

Responsiveness

1 day

Pull Requests (30d)
30
Issues (30d)
4
Star History
16 stars in the last 30 days

Explore Similar Projects

Starred by Andrej Karpathy Andrej Karpathy(Founder of Eureka Labs; Formerly at Tesla, OpenAI; Author of CS 231n), Edward Z. Yang Edward Z. Yang(Research Engineer at Meta; Maintainer of PyTorch), and
5 more.

yet-another-applied-llm-benchmark by carlini

0.2%
1k
LLM benchmark for evaluating models on previously asked programming questions
Created 1 year ago
Updated 4 months ago
Starred by Chip Huyen Chip Huyen(Author of "AI Engineering", "Designing Machine Learning Systems"), Meng Zhang Meng Zhang(Cofounder of TabbyML), and
3 more.

qodo-cover by qodo-ai

0.2%
5k
CLI tool for AI-powered test generation and code coverage enhancement
Created 1 year ago
Updated 2 months ago
Starred by Boris Cherny Boris Cherny(Creator of Claude Code; MTS at Anthropic), Hiroshi Shibata Hiroshi Shibata(Core Contributor to Ruby), and
6 more.

oss-fuzz by google

0.1%
11k
Continuous fuzzing for open source software
Created 9 years ago
Updated 23 hours ago
Feedback? Help us improve.