Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between open-ended and close-ended load testing tools

What is the difference between open-ended and close-ended load testing?
Thread-based load-testing tool comes in which category?
Which are some examples of load testing tools in each category?

like image 676
Stanly Avatar asked May 10 '16 18:05

Stanly


People also ask

What is the difference between load testing and performance testing?

Performance testing is concerned with evaluating the overall system's performance and collecting metrics such as availability, response time, and stability. Load testing is a technique that verifies whether the application can handle the expected load.

What is difference between load testing and stress testing?

Load testing and stress testing are both types of performance testing, which check how your application performs when many people use it at once. While load testing simulates real-life application load, stress testing tests application performance at peak times.


2 Answers

Looks like you are speaking about closed vs. open workload models.

This classification based on closed/open systems separation:

  • in case of closed system model a new request is only triggered by the completion of a previous request, following by a think time. System has negative feedback that makes it impossible to bury-out the service, so users wait for the responses before making new requests;
  • in case of open system model new requests arrival independently of completions, e.g. according to a stochastic process or fixed trace. System has no negative feedback.

Based on this classification we can divide load-testing tools into following categories based on workload model used:

  • thread-based model where each thread will wait for a response before sending another request - so request rate depends on response rate (load generator drives the load as fast as system can take it):
    • thread-based approach is VU [virtual user]-oriented while trying to simulate N users working together;
    • thread-based tools require a separate thread to simulate a user;
    • examples: JMeter;
  • hit-based model
    • hit-based approach is RPS [request per second]-oriented while trying to produce N hits per second load;
    • hit-based tools use async approach and will always attempt to create defined request rate, queuing requests if necessary;
    • examples: tsung, Yandex.Tank.
like image 157
Aliaksandr Belik Avatar answered Sep 21 '22 12:09

Aliaksandr Belik


I basically agree with the explanation of closed/open system from Aliaksandr and give you an example.

For example: you have 3 users, each iterating over a sequence of requests. Before a new iteration can start, the previous iteration has to finish. The previous iteration finishes, if all requests are finished. If the System-under-Test takes longer to respond, the request/s rate drops. So load-generator and system-under-test are in a closed loop.

In open loops, the request rate is constant, regardless of the response times - there is no feedback.

Both models reveal different performance characteristics of the system under test, i.e. capacity/throughput limits with closed-loop, queue sizes with open loops. It's more easy to overload a system with an open-loop

Regarding threads, usually thread-based tools define a close-loop, but, you could model open loops as well.

Take JMeter for example, if you want a constant rate of 2 users/s over a period of 3600 seconds, you use a rampup time of 3600 seconds and use a thread number of 7200, without looping.

Gatling is another free tool that is not thread-based but event based. You can model closed-loops (repeat, during) or open-loops (constantUsersPerSecs)

like image 9
Gerald Mücke Avatar answered Sep 22 '22 12:09

Gerald Mücke