PERFORMANCE TESTING
Determines the performance of systems to measure and validate quality attributes of the system like responsiveness, speed, scalability, and stability under a variety of load conditions.
Load Testing:
Load Testing is a type of performance testing to check the system by constantly increasing the load on the system until the time load reaches its threshold value. Here Increasing load means increasing the number of concurrent users, transactions & check the behavior of the application under test. It is normally carried out underneath a controlled environment in order to distinguish between two different systems. It is also called “Endurance testing” and “Volume testing”. The main purpose of load testing is to monitor the response time and staying power of applications when the system is performing well under heavy load.
Simple examples of load testing:
Testing printer by sending large job;
Editing a very large document for testing of word processor;
Continuously reading and writing data into the hard disk;
Running multiple applications simultaneously on the server;
Testing of mail server by accessing thousands of mailboxes
In case of zero-volume testing & system fed with zero load.
Stress Testing:
Stress Testing is a performance testing type to check the stability of software when hardware resources are not sufficient like CPU, memory, disk space, etc.
“To determine or validate an application’s behavior when it is pushed beyond normal or peak load conditions.”
Stress testing is Negative testing where we load the software with a large number of concurrent users/processes which cannot be handled by the system’s hardware resources. This testing is also known as Fatigue testing, this testing should capture the stability of the application by testing it beyond its bandwidth capacity.
The main idea behind stress testing is to determine the failure of the system and to keep an eye on how the system gracefully gets recover back, this quality is known as recoverability. This testing is to be carried out under a controlled environment before launch so that we can accurately capture the system behavior under most erratic scenarios.
Spike testing:
Spike testing is a subset of Stress Testing. A spike test is carried out to validate the performance characteristics when the system under test subjected to workload models and load volumes that repeatedly increase beyond anticipated production operations for short periods of time.
Endurance testing:
Endurance testing is a non-functional type of testing. Endurance testing involves testing a system with a expected amount of load over a long period of time to find the behavior of system. Let’s take a example where system is designed to work for three hours of time but same system endure for 6 hrs of time to check the staying power of system. Most commonly test cases are executed to check the behavior of system like memory leaks or system fails or random behavior. Sometimes endurance testing is also referred as Soak testing.
Scalability Testing:
Scalability Testing is type of non-functional tests and it is the testing of a software application for determine its capability to scale up in terms of any of its non-functional capability like the user load supported, the number of transactions, the data volume etc. The main aim if this testing is to understand at what peak the system prevent more scaling.
Volume testing:
Volume testing is non-functional testing which refers to testing a software application with a large amount of data to be processed to check the efficiency of the application. The main goal of this testing is to monitor the performance of application under varying database volumes.