Monday 30 April 2012

Performance vs Load vs Stress Testing


Performance testing - It is performed to evaluate the performance of components of a particular system in a specific situation. It very wide term. It includes: Load Testing, Stress Testing, capacity testing, volume testing, endurance testing, spike testing, scalability testing and reliability testing etc. This type of testing generally does not give pass or fail. It is basically done to set the benchmark & standard of the application against Concurrency / Throughput, Server response time, Latency, Render response time etc. In other words, you can say it is technical & formal evaluation for responsiveness, speed, scalability and stability characteristics.

Load Testing is subset of performance testing. It is done by constantly increasing the load on the application under test till the time it reaches the threshold limit. The main goal of load testing is to identify the upper limit of the system in terms of database, hardware and network etc. The common goal of doing the load testing is to set the SLAs for the application. Example of load testing can be:

Running multiple applications on a computer simultaneously - starting with one application, then start second application, then third and so on....Now see the performance of your computer.

Endurance test is also a part of load testing which used to calculate metrics like Mean Time between Failure and Mean Time to Failure.
Load Testing helps to determine:

·      Throughput
·      Peak Production Load
·      Adequacy of H/W environment
·      Load balancing requirements
·      How many users application can handle with optimal performance results
·      How many users hardware can handle with optimal performance results

Stress testing - It is done to evaluate the application's behaviour beyond normal or peak load conditions. It is basically testing the functionality of the application under high loads. Normally these are related to synchronization issues, memory leaks or race conditions etc. Some testing experts also call it as fatigue testing. Sometimes, it becomes difficult to set up a controlled environment before running the test. Example of Stress testing is:

A banking application can take a maximum user load of 20000 concurrent users. Increase the load to 21000 and do some transaction like deposit or withdraw. As soon as you did the transaction, banking application server database will sync with ATM database server. Now check with the user load of 21000 does this sync happened successfully. Now repeat the same test with 22000 thousand concurrent users and so on.

Spike test is also a part of stress testing which is performed when application is loaded with heavy loads repeatedly and increase beyond production operations for short duration.
Stress Testing helps to determine:

·      Errors in slowness & at peak user loads
·      Any security loop holes with over loads
·      How the hardware reacts with over loads
·      Data corruption issues at over loads


3 comments:

  1. Wow,It is a Valuable post and well explained about the concept of different testing.
    So, The Performance testing is higher class than Loading testing, Stress testing.

    ReplyDelete
  2. Concurrency:
    In computer science, concurrency is a property of systems in which several computations are executing simultaneously, and potentially interacting with each other.

    service level agreements (SLA)

    ReplyDelete
  3. Nice one. Gives lot of valuable information

    ReplyDelete