Load testing is one part of a more general process we normally call performance testing. Essentially, performance testing is a process in which a demand on a system or device is created and its response measured. This kind of process is carried out to determine a system’s behavior under normal circumstances as well as its behavior under what is anticipated to be the peak load conditions.
Load testing is helpful in identifying the maximum operating capacity of an application, any bottlenecks in the system and pinpoint which element or elements are responsible for any degradation.
In cases when the load placed on the system is higher than normal usage patterns in order to test the system’s response at unusually high or peak loads, it is known as stress testing. The load is usually so great that error conditions are the expected result, although the boundaries between a load test and a stress test are somewhat fuzzy. However, it is safe to say that load testing differs from stress testing as stress testing seeks to evaluate the extent to which a system keeps working when subjected to extreme work loads or when some of its hardware or software has been compromised. The primary goal of load testing is defining the maximum amount of work a system can handle without significant performance degradation.
The purpose of any load test needs to be clearly understood and documented. Of course, it is to be clear to everyone that load testing does not itself mitigate risk directly, but because we are able to identify and quantify the risks involved, we have an opportunity to remedy the areas which need attention, thus mitigating the risk.
Two categories of load testing you can keep in mind include ‘quantification of risk‘ in which we determine through formal testing the likelihood of the system performance meeting the agreed upon performance expectations of stakeholders, or ‘determination of minimum configuration‘, that is, to determine the minimum configuration using which the system will reach the performance expectations of stakeholders, often so as to minimize expenditure on unnecessary hardware.
Load testing can be conducted in two ways. Longevity testing (or endurance testing), evaluates the system’s ability to handle a constant yet moderate work load for a long time while volume testing subjects a system to a heavy work load for a limited time. Both approaches make it possible to identify bottlenecks, bugs and any component limitations.
There are a number of things which ought to be included in a load test. Four of these include –
High Frequency transactions – the most frequently used transactions. If these do not function correctly there is the potential that other transactions are also affected.
Mission Critical transactions – these include the more important transactions which allow the functioning of the core objectives of the system. Failure in this area has, by definition, the greatest impact.
Read Transactions – At least one read-only transaction should be included in load testing, so that performance of these transactions can be differentiated from other, more complex transactions.
Update Transactions – At least one update transaction should be included so that performance of such transactions can be differentiated from other transactions.