EvoOtter: Evolutionary Reproduction Test Generator
EvoOtter is a cost-effective evolutionary programming approach that combines successive halving, batched LLM crossover, and rule-based mutations with a tailored fitness score to generate high-quality bug reproduction tests at a fraction of the cost of prior inference-scaling methods.
Original paper licensed under CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). This is an AI-generated explanation of the paper below. It is not written or endorsed by the authors. For technical accuracy, refer to the original paper. Read full disclaimer
Imagine you are a software detective trying to solve a mystery. A developer says, "My code has a bug!" but they haven't fixed it yet. Before you can help them fix it, you need to prove the bug actually exists. To do this, you need to write a special "trap" test—a test that is designed to fail right now because of the bug, but will pass once the bug is fixed.
This paper introduces EvoOtter, a new tool that acts like a smart, evolutionary breeding program to create these trap tests automatically. Here is how it works, using simple analogies:
The Problem: Finding the Right Trap
Writing a test that fails for the exact right reason is hard. It's like trying to catch a specific type of fish in a dark pond. If you just throw out a thousand nets (a common method called "inference scaling"), you might catch a lot of fish, but it's expensive, and you might catch the wrong kind. Also, you don't have the "fixed code" yet to check if your test is actually good.
The Solution: An Evolutionary Zoo
EvoOtter treats test generation like a game of Predator and Prey.
- The Predators (The Tests): EvoOtter starts with a group of candidate tests (the predators).
- The Prey (The Buggy Code Variants): Instead of just testing against the original code, EvoOtter creates many slightly broken versions of the code (mutants). Think of these as "fake bugs" or "dummies" that the predators need to hunt.
- The Fitness Score: A test is considered "fit" if it successfully catches (kills) these fake bugs. If a test fails for the right reason, it will react differently to these fake bugs than a test that fails for the wrong reason.
How EvoOtter Saves Money and Time
The paper introduces three clever tricks to make this process fast and cheap:
Successive Halving (The "Survival of the Fittest" Filter):
Imagine you have 8 test candidates. Instead of testing all of them forever, EvoOtter runs a quick round of tests. It kills off the bottom 50% (the weak predators) immediately. It then doubles the number of "fake bugs" (prey) to make the next round harder. This way, the feedback gets sharper, but the total cost stays the same because you are testing fewer tests against more bugs.Batched Crossover (The "Group Brainstorm"):
Usually, to improve a test, you might ask an AI (Large Language Model) to fix one test at a time. That's like asking a chef to cook one meal, then another, then another. EvoOtter asks the AI to look at all the remaining good tests at once and say, "Here is a whole new batch of improved tests." This saves a massive amount of money because it only costs one "call" to the AI instead of many.Rule-Based Mutants (The "Toy Soldiers"):
Instead of asking the expensive AI to create the fake bugs (the prey), EvoOtter uses simple, cheap computer rules to break the code in predictable ways. This frees up the expensive AI to focus entirely on the hard job: creating the tests.
The Results
The paper tested EvoOtter on real-world software problems.
- It found that by using this evolutionary "breeding" method, it could generate high-quality trap tests much cheaper than previous methods.
- When using a powerful AI model (Claude-Opus-4.7) with their "batched" approach, it achieved a success rate of 75.3% on one major benchmark and 66.3% on another.
- Crucially, it did this at a fraction of the cost of other methods that try to generate thousands of tests and pick the best one.
In a Nutshell
EvoOtter is like a smart coach for a sports team. Instead of having every player run a marathon to see who is the best (which is exhausting and expensive), the coach sets up a series of drills where the weak players are cut early. The remaining players then get a group coaching session to improve together. The result is a champion team (a perfect bug-reproduction test) that was found quickly and without breaking the bank.
Drowning in papers in your field?
Get daily digests of the most novel papers matching your research keywords — with technical summaries, in your language.