Four simple steps to transform your API testing process
Run bumblebee init
with your OpenAPI specification. Flow files and MiniZinc data
structures are automatically generated for all your endpoints.
Write input and output constraints in the auto-generated MiniZinc files to specify valid test data and expected response validation rules.
Define your application's state transitions in JavaScript, specifying how API responses update the global system state.
Create execution flows that specify the sequence of operations. Once defined, Bumblebee automatically tests all possible happy paths and all possible error paths. This eliminates the tedious manual work of specifying individual execution paths - a massive improvement over traditional testing approaches.
Execute comprehensive test suites that automatically generate inputs, run operations, validate outputs, and maintain state consistency across your entire API.
Get up and running with Bumblebee in minutes
Edit the auto-generated MiniZinc files to specify your test data constraints:
Define how your application state evolves:
✅ That's it! Bumblebee will automatically generate thousands of test cases, execute them against your API, and validate all responses using your constraints.
Access global application state directly in your MiniZinc constraints for sophisticated validation rules
Your JavaScript state machine automatically exposes state variables to MiniZinc constraints, enabling context-aware validation that understands your application's current state.
global_state.cart.items
- Current cart contentsglobal_state.cart.total
- Running total valueglobal_state.user.preferences
- User settingsglobal_state.inventory
- Available stock levels💡 Pro Tip: State-aware constraints catch bugs that traditional stateless testing misses!
Validates that cart totals, item counts, and pricing remain consistent across operations
Ensures operations respect real-time inventory limits and stock availability
Applies user-specific business rules, preferences, and access controls
Endpoint guards prevent invalid operations by checking global state before execution
Each endpoint can have a guard function that depends on the global state. Bumblebee automatically evaluates these guards to determine whether the current system state allows for the endpoint to be called, ensuring realistic test execution flows.
💡 Smart Testing: Guards enable Bumblebee to automatically discover realistic execution paths without manual configuration!
Bumblebee actively breaks your constraints to ensure robust error handling and security
Most testing frameworks only validate that valid inputs produce expected outputs. They rarely test what happens when constraints are violated, invalid data is submitted, or systems are pushed beyond their limits.
Bumblebee intentionally violates your constraints to verify that your API gracefully handles invalid inputs, enforces business rules, and fails securely when it should.
Submit negative quantities, invalid IDs, oversized strings, malformed data
Exceed inventory limits, violate user permissions, break pricing rules
Access unauthorized resources, manipulate protected state, race conditions
Watch Bumblebee systematically test constraint violations:
quantity > 0 && quantity <= 100
quantity = -5
(negative
values)quantity = 999
(exceeds
maximum)quantity = 0
(boundary
violation)quantity = "invalid"
(type
violation)API returns appropriate HTTP status codes and error messages
Invalid operations don't corrupt application state
System fails securely and doesn't expose sensitive information
Example of state management and constraint-based validation in action
Reduction in Manual Test Creation
Faster Bug Discovery
State Consistency Validation
Edge Cases Generated