What is Performance Testing? Difference Between Performance Testing, Load Testing and Stress Testing – With Examples

Hi Readers! In the testing world, many times we come across the terms like performance testing, load testing, and stress testing. These three terms are often misunderstood and interpreted as same concepts. However, there is a significant difference between these three testing types and it is important for a tester to understand the same.

In this article, we will discuss each of these 3 testing types to understand the difference between them.

Q. What is the difference between Performance Testing, Load Testing, and Stress Testing?

What is Performance Testing_ Difference Between Performance Testing, Load Testing and Stress Testing – With Examples

#1) Performance Testing:

=> Click on below link to know more about PT:
What is performance testing?

Performance testing is the testing which is performed to ascertain how the components of a system are performing under a particular given situation. Resource usage, scalability, and reliability of the product are also validated under this testing. This testing is the subset of performance engineering, which is focused on addressing performance issues in the design and architecture of software product.

Performance Testing

The above image tells us clearly that performance testing is the superset for both load & stress testing. Other types of testing included in performance testing are spike testing, volume testing, endurance testing and scalability testing. So, performance testing is basically a very wide term.

Performance Testing Goal:

The primary goal of performance testing includes establishing the benchmark behaviour of the system. There are a number of industry-defined benchmarks which should be met during performance testing.

Performance testing does not aim to find defects in the application. It also does not pass or fail the test. Rather, it addresses the critical task of setting the benchmark and standard for the application. Performance testing should be done very accurately. Close monitoring of the application/system performance is the primary characteristic of performance testing.

The benchmark and standard of the application should be set in terms of attributes like speed, response time, throughput, resource usage, and stability. All these attributes are tested in a performance test.

Example:

For instance, you can test the application network performance through ‘Connection Speed vs. Latency’ chart. Latency is the time difference between the data to reach from source to destination. A 70kb page would take not more than 15 seconds to load for the worst connection of 28.8kbps modem (latency=1000 milliseconds), while the page of the same size would appear within 5 seconds for the average connection of 256kbps DSL (latency=100 milliseconds). And, a 1.5mbps T1 connection (latency=50 milliseconds) would have the performance benchmark set as 1 second to achieve this target.

Another example would be of Request-response model. We can set a benchmark that the time difference between the generation of request and acknowledgement of response should be in the range of x ms (milliseconds) and y ms, where x and y are standard digits.

Performance Load and stress testing

A successful performance test should project most of the performance issues, which could be related to database, network, software, hardware, etc.

#2) Load Testing:

Load testing is meant to test the system through constantly and steadily increasing the load on the system until it reaches the threshold limit. It is a subset of performance testing.

load testing

Load testing can be easily done by employing any of the suitable automation tools available in the market. WAPT and LoadRunner are two such famous tools that aid in load testing. Load testing is also famous by the names like volume testing and endurance testing. However, volume testing mainly focuses on databases. And endurance testing tests the system by keeping it under a significant load for a sustained time period.

The sole purpose of load testing is to assign the system the largest job it can possibly handle to test the endurance of system and monitor the results. An interesting fact here is that sometimes the system is fed with the empty task to determine the behaviour of the system in the zero-load situation!

The attributes which are monitored in a load test are peak performance, server throughput, response time under various load levels (below the threshold of break), adequacy of H/W environment, how many user applications can handle without affecting the performance.

Load Testing Goal:

The goals of load testing include:

  • Exposing the defects in application related to buffer overflow, memory leaks and mismanagement of memory. The issues that would eventually come out as the result of load testing may include load balancing problems, bandwidth issues, the capacity of the existing system, etc.
  • To determines the upper limit of all the components of application like a database, hardware, network, etc. so that the application can manage the anticipated load in future.
  • To set the SLAs for the application.

Example:

For example, to check the email functionality of an application, it could be flooded with 1000 users at a time. Now, 1000 users can fire the email transactions (read, send, delete, forward, reply) in many different ways. If we take one transaction per user per hour, then it would be 1000 transactions per hour. By simulating 10 transactions/user, we could load test the email server by occupying it with 10000 transactions/hour.

Another example of load test is shown in the image below:

example

The above image depicts a load test done in the tool called JMeter. This test is done to identify that how many users a system can handle. In this test, 100 users are added after every 30 seconds until the load reaches 1000 users. Each step takes 30 seconds to complete and JMeter waits for 30 seconds before kicking off the next step. Once, the load reaches 1000 threads, all of them will continue running for 300 seconds (5 mins) together and then finally stop 10 threads every 3 seconds.

#3) Stress testing

Under stress testing, various activities to overload the existing resources with excess jobs are carried out in an attempt to break the system down. Negative testing, which includes removal of the components from the system is also done as a part of stress testing. Also known as fatigue testing, this testing should capture the stability of the application by testing it beyond its bandwidth capacity.

So, basically, stress testing evaluates the behaviour of the application beyond peak load and normal conditions.

Stress testing

The purpose of stress testing is to ascertain the failure of the system and to monitor how the system recovers back gracefully. The challenge here is to set up a controlled environment before launching the test so that you can precisely capture the behaviour of system repeatedly under the most unpredictable scenarios.

The issues that would eventually come out as the result of stress testing may include synchronization issues, memory leaks, race conditions, etc.

If the stress test is checking that how the system behaves in the situation of sudden ramp up in the number of users, it is called a spike test.

If the stress test is check system’s sustainability over a period of time through slow ramp up in the number of users, it is called as a soak test.

Stress Testing Goal:

The goal of the stress testing is to analyze post-crash reports to define the behaviour of the application after failure. The biggest challenge is to ensure that the system does not compromise the security of sensitive data after the failure. In a successful stress testing, the system will come back to normality along with all its components even after the most terrible breakdown.

Example:

As an example, a word processor like Writer1.1.0 by OpenOffice.org is utilized in the development of letters, presentations, spreadsheets etc.  The purpose of our stress testing is to load it with the excess of characters.

To do this, we will repeatedly paste a line of data, till it reaches its threshold limit of handling a large volume of text. As soon as the character size reaches 65,535 characters, it would simply refuse to accept more data. The result of stress testing on Writer 1.1.0 produces the result that it does not crash under the stress and it handles the situation gracefully which makes sure that application is working correctly even under rigorous stress conditions.

Another example of load test is shown in below image which depicts a spike test through sudden ramp-up of 7000 users:

Stress Testing Goal example

Takeaway

To summarize, I would quickly put the major differences between these 3 testing types in the table below:

 Performance TestingLoad testingStress testing
DomainSuperset of load and stress testingA subset of performance testing.A subset of performance testing.
ScopeVery wide scope. Includes - Load Testing, Stress Testing, capacity testing, volume testing, endurance testing, spike testing, scalability testing and reliability testing, etc.Narrower scope as compared to performance testing. Includes volume testing and endurance testing.Narrower scope as compared to performance testing. Includes soak testing and spike testing.
Major goalTo set the benchmark and standards for the application.To identify the upper limit of the system, set SLA of the app and see how the system handles heavy load volumes.To identify how the system behaves under intense loads and how it recovers from failure. Basically, to prepare your app for the unexpected traffic spike.
Load LimitBoth – below and above the threshold of a break.Till the threshold of breakAbove the threshold of break
Attributes studiedResource usage, reliability, scalability, resource usage, response time, throughput, speed, etc.peak performance, server throughput, response time under various load levels (below the threshold of break), adequacy of H/W environment, the number of user app can handle, load balancing requirements, etc.Stability beyond bandwidth capacity, response time (above the threshold of break), etc.
Issues identified through this testing typeAll performance bugs including runtime bloat, the scope for optimization, issues related to speed, latency, throughput, etc. Basically – anything related to performance!Load balancing problems, bandwidth issues, system capacity issues, poor response time, throughput issues, etc.Security loopholes with overload, data corruption issues at overload situation, slowness, memory leaks, etc.

Conclusion

We have seen and understood through discussion and examples that how performance testing, load testing & stress testing are different from each other and what is the scope of each testing type.

We are sure that this was helpful for you to understand and differentiate practically between these three concepts.

Further reading

Have queries on Software Testing? All you need to do is post your questions in the comment section below.


82 thoughts on “What is Performance Testing? Difference Between Performance Testing, Load Testing and Stress Testing – With Examples”

  1. Hi Every one,

    Am New to Performance Testing,
    Am Working with VS2012 Ultimate Version.

    I Have some doubts regarding,
    What is Scalability?
    What is Stability?
    What is Stress Test?

    and What are the major differences between these tests.

    How to perform these tests on web appplication?

    Looking for a better solutions..

    Thanks in advance:)

  2. can i have information about tools for performance testing when an application are access by so many users?
    tell me, please. thank you

  3. Hi Vijay,

    Great article – thanks.
    Who in your opinion are the 3 most respected independent 3rd party testing companies for perfomance, load and stress testing.

    Cheers
    Pierre

  4. Very nicely and clearly described. Well orientation as these are the mostly asked questions, confusing and similar terms.
    Examples are too self explanatory.

    Thanks.

  5. Hi sir,

    you are articles are very nice and helpful for freshers and experience persons. i am from non it background i wnat to do performance testing.Can any one please reply me what are the skills reqired for a performance tester.
    Regards,
    krish.

  6. Hi,

    I faced this interview question yesterday.

    Q. How are performance testing and load testing related?

    Please explain how can i describe relationship between these two types of testing.

    Thanks

    Anamika

  7. This is a very misleading article. I don’t know where you got this information from.

    There is nothing called performance test as such, any test that is executed to validate performance of an application falls under various types of Performance test.

    Load , Stress, Endurance and Volume tests are some of the types of Performance testing.

    Load test is the simplest type of all the Performance tests. I request all the readers to searc for better resources to learn about Performance testing.

  8. Load test is executed to validate if application is simply meeting the performance goals that were defined, when tested with a defined load, defined hardware and configurations.

    Endurance tests are executed to uncover any performance issues that can only happened during prolonged periods of sustained load. One of the main reason to execute Endurance tests are to uncover memory leaks in the application code, which is hard to acheive in short duration tests.

    Volume tests are executed in two cases_

    1. To validate the application performance behavior with varying amounts of data volumes in the database or
    2. To measure the applications ability to process large amounts of data, for example batch processing like generating payrolls in PDF format or importing large volumes of data from a File into database, etc

    Stress tests are executed to identify the application behaviour when the application is subjected to a far greater load than it is expected to handle or designed to handle. Stress test usually is executed with more concurrent users than the target load and/or by sending more number of requests than the original target.

    So, the branch of QA or Engineering which deals with identifying load characters, planning, identifying the required tests, creating scripts, executing tests, analyzing the results, preparing reports and providing the summary of performance issues, is called Performance testing. Performance test is not a test type, it is a generic name for any of the types of tests that are exeucted to validate performance and identify performance issues…

    There are many good books, ebooks which provides you proper understanding of the Software Performance concepts. Always, go through the author credentials before reading their content.

  9. I’ve never seen an article with so much nonsense in it.
    Readers, please, please, please go elsewhere for your knowledge of performance testing

  10. apply the functional testing concepts for the real time examples
    apply the non functional testing concepts for the real time
    examples

  11. What is performance testing?
    As you have written”This testing is the subset of performance engineering”.
    Pls correct me if i am wrong”Performance engineering starts with performance testing and it ends with performance testing then performance engineering is asubset of performance testing but not “This testing is the subset of performance engineering”.”

Leave a Comment