Fitness and presets
Objectives
Section titled “Objectives”Each test call is scored on these objectives, each between 0 and 1:
| Objective | Scores |
|---|---|
state_coverage |
The share of the flow’s reachable blocks the call visits. |
branch_coverage |
The share of the transitions a call can take that this call takes. |
happy_path |
Calls that reach an end having answered the flow’s prompts; halved if they hit an error on the way. |
error_recovery |
Of the errors the call caused (a timeout, a wrong key), how many it got back from. |
queue_reachability |
1 for a call that reaches a queue or an agent, and partial credit the closer it gets. |
Coverage counts only what a test can reach: blocks no path leads to, and error arms a call can never take (a queue’s at-capacity arm, say), are left out, so a suite that takes every path scores 1.
Combining them
Section titled “Combining them”- Weighted sum (the default): each objective times its weight, added up.
- Pareto: calls that no other call beats on every objective rank first, then the next layer, and so on; within a layer, calls unlike their neighbours rank higher.
- Lexicographic: the most important objective decides, and the next one breaks ties.
Presets
Section titled “Presets”| Size | Calls × generations | Typical time |
|---|---|---|
| Quick | 40 × 15 | under a minute |
| Standard | 100 × 50 | a few minutes |
| Thorough | 200 × 120 | for a final suite; it also mutates less |
| Focus | Weights |
|---|---|
| Balanced | coverage 0.3 + 0.3, happy path 0.2, error recovery 0.2 |
| Coverage | state and branch coverage, 0.5 each |
| Error handling | error recovery 0.6, branch coverage 0.4 |
| Reaching agents | queue reachability 0.6, state coverage 0.4 |
The size sets the population and the number of generations. The rest of the genetic algorithm (mutation and crossover rates, tournament size, elites kept each generation, the random seed, and how fitness scores are combined) is under Advanced settings. A fixed seed makes a run reproducible.