This article will explore the different types of performance tests you can perform and what are they for.
Load testing is performed to evaluate the performance of the system under a specific load.
The load is normally the expected concurrent number of users on the application performing a specific number of transactions within a set duration.
The load test will normally determine the response time, throughput, CPU utilization and error rate during the period of the test. By monitoring these elements when running the test i.e. CPU, Memory, Network, Database, Application and so forth. This can assist in identifying the bottlenecks.
Example – A new banking web application is expected to have a load of 2000 concurrent users. A Load test could be configured with 2000 virtual users and run for a period of an hour. Once the test has run, we can then analyse the test results to determine how the application will behave at its expected peak load.
Stress testing is performed to evaluate the application’s performance at a load much higher than the expected load.
Stress testing is also used to determine the breakpoint of the application, which is the point at which the application fails to respond in the correct manner.
For example, for a banking web application with an anticipated load of 2000 users, we will run the test with 2500 users and check if the application is robust enough to not crash. if it is robust enough then we can continue to increase the number of virtual users until the application crashes. This will give us the breakpoint of the system.
Soak testing (also known as Endurance testing) is performed to determine if the system can sustain a continuous expected load over a significant time period.
During a soak test, memory utilisation is monitored to detect any potential memory leaks. Performance degradation can also be checked during a soak test, to ensure that the throughput/response times after a long period of sustained activity have not degraded.
For example, a sports betting web application where the application is used continuously by different users placing bets in the period runup to the start of the Grand National horse race. Therefore we can run a test for the duration, between 24 to 48 hours with an expected load and monitor the memory utilisation during the test.
Spike testing (a subset of stress testing) is performed by suddenly increasing or decreasing the load generated and observing the behavior of the system. We evaluate the behavior of the system when suddenly there is an increase decrease in the number of users.
The goal is to determine whether a) performance will suffer, b) the system will fail, or c) if it is able to handle dramatic changes in load.
For example, in a sports betting web application just before a football match kicks off, the number of users can increase suddenly in a very short duration to place a bet on the match.
Volume testing is performed by feeding an application with a high volume of data.
This can be achieved by inserting a large amount of data into the database or providing a large file for the application to process. The goal of this testing is to monitor the performance of application under varying volumes. During volume testing we can identify any bottlenecks in the application when a high volume of data is used.
For example, for an invoice processing system, we can perform volume testing by inserting millions of rows of invoice records into the database and then carry out the performance test execution.
In conclusion, this is not an exhaustive list, but it covers the main types of performance testing activities you may have to undertake.