Performance vs Load Testing
In the context of software engineering, performance testing is done to find out the bottlenecks of a system. Performance tests can also be used to verify attributes such as reliability, resource usage and scalability, and establish a baseline for the performance of a system. Load testing is one of the subgenres of performance testing. It is performed to measure the behavior of a system under a specified workload. Load testing is more relevant to multi-user systems based on client-server model but other software systems such as word processors or graphics editors can also be load tested.
As mentioned above, performance testing is done to determine and eliminate bottlenecks of a software system and establish a baseline of its performance that would be useful for further testing. Performance testing includes tests such as load tests, endurance tests (soak tests), spike tests, configuration tests and isolation tests. Performance testing requires getting a carefully controlled set of measurements of the system. To get best results out of performance testing, it should be well planned and should be done on a stable system where the testing process can proceed smoothly. It is important to clearly understand what you actually want to measure in terms of performance of the system when doing performance testing. For example, if you are testing performance of a web application, you might want to know the acceptable response time and the number of concurrent users that can be handled by the system. Keeping these two aspects in mind, you can start the test by increasing the number of users constantly and identify the bottleneck.
As mentioned earlier, load testing is part of performance testing and it is often performed by increasing the load on a software system using automated tools. Load testing is sometimes known as volume testing. Some example load tests would be to test a mail server with a large number of user mailboxes or testing of editing a very large document using a word processor. Load tests are performed using a predefined load level usually using the maximum load that the system can handle without crashing. Usually, load testing aims to expose bugs that are not exposed in ordinary testing such as memory management problems, memory leaks, buffer overflows, etc. Load testing also serves as a means of ensuring that the system meets the performance baseline established during performance testing.
Difference between Performance and Load Testing
Even though the terms performance testing and load testing are used interchangeably, load testing is only a single aspect of performance testing. The goals of the two tests are also different. Performance testing uses load testing techniques for the purpose of obtaining measurements and benchmarking and it uses several load levels. But load testing operates on a single predefined load level, usually the highest load the system can manage without crashing. In practice, performance tests are done with the intention of finding the bottlenecks of the system and eliminating them. And when the system cannot be optimized anymore, load testing is started, to determine what you need to add to the system (most often hardware extensions such as number of web servers or database servers) to sustain the requirements pre-defined by the customer.