Load Testing Engine
A short overview over the engines.
2 minute read
The term engine is used to describe the software we use to execute the test runs described by the test case DSL. We switched to a new engine in 2020 which is the current stable
engine used for all users.
The old engine has served as the power house of StormForge Performance Testing since 2014. You can read a bit about its history in our blog: Load Test Engine Evolution.
Engine Evolution
While the new engine is designed to support all existing test cases there are some differences compared to the old legacy
engine.
Some important differences are:
- We are now strictly checking the request target, even for dynamic requests (like when following a redirect)
- Requests MUST now be unambiguously specify the target - if you perform a request without a host or protocol, you will get an error. The legacy engine chose a random target from the defined ones here, which could lead to subtle errors
- To help with this, we added
session.redirectTarget()
to make following redirects easier
- To help with this, we added
- We now fully support HTTP/2 which is chosen by default, if available by the target
- Improved Traffic Dumping
- a new dump format, which is easier to read and no longer interleaved by different clients
- Traffic dumping no longer prevents a test report from being created
- Traffic dumping always records uncompressed content, even if the network traffic was compressed
- Traffic Dumping reconstructs the request & response instead of recording the actual network traffic. This makes the dump more useful but it might look a bit different compared to data transferred on the wire.
- regexp content extractions no longer include the header
- response size in the request log is now the uncompressed body. In the legacy engine this was the transferred headers and body bytes.
- Network measurements (total transferred bytes and rates) are now recorded at the TCP level and will be more accurate (including TLS overhead e.g.)
- Having an
Authorization
field in your headers disables theauthentication: {username, password}
property on requests. This makes sure a request is only sent with one auth header. - JSONPath extractions are now more powerful, but the filter notation changed a bit.
- We redefined various timeouts, see the request timeouts. Currently they are not configurable, but that will soon change to give you more control.
Last modified May 25, 2022