%%
date:: [[2023-04-08]]
%%
# [[Emergent load testing]]
What does it mean for a [[Load Testing|load test]] to be [[Emergence|emergent]]?
An emergent load test is one that encourages the formation of new and complex behaviors that were unexpected and unplanned. By its very nature, though, we can't *plan* emergence. We can only recreate conditions that encourage it. ^b83cd0
Our best chance of encouraging true emergence in load testing begins with considering writing a different type of test script. ^eb56ee
## Evolving software trends affect testing
When software evolves, so does [[Software Testing]] because [[Test as code|tests are code]].
### [[Imperative]] load tests
*Do these steps in order.*
- Fixed inputs (instructions)
- Fixed outputs
- Processing just means carrying out instructions
### [[Declarative]] load tests
*I don't care how you do it, but get here.*
- Fixed output
- Variable process
### [[Generative]] load tests
*Here's what you can do. Surprise me.*
- Fixed *range* of input.
- Unknown output.
Generative load testing is about defining the [[Affordances]] of an application.
A generative load test is not necessarily an emergent one: remember, that's something we can't plan for.
## Range for generative load testing
[[Performance|Application Performance]] consists of the following factors:
- [[Scalability]]
- [[Elasticity]]
- [[Availability]]
- [[Reliability]]
- [[Speed]]
These factors serve as [[Affordances]] in a generative load test.
## Examples of emergent behaviors