Performance testing is a class of tests implemented and executed to characterize and evaluate the performance related characteristics of the target-of-test such as the timing profiles, execution flow, response times, and operational reliability and limits.
It identifies usability problems, compare measures such as success rate, task time and user satisfaction with requirements.
Performance testing is an non-functional testing performed to determine how a system performs in terms of responsiveness and stability under a particular workload. It can also serve to investigate, measure, validate or verify other quality attributes of the system, such as scalability, reliability and resource usage.
Performance Testing Types
- Throughput – How many and how large “things” can I process in a given time?
- Number of users – Mainly web sites
- Response time – How long does the user need to wait?
- Availability – Is it available to the user at all?
- Stress Testing – Stress testing is normally used to understand the upper limits of capacity within the system. This kind of test is done to determine the system's robustness in terms of extreme load and helps application administrators to determine if the system will perform sufficiently if the current load goes well above the expected maximum.
- Turnaround Time – The elapsed time between the submission of a job and the return of the completed results
- Configuration Testing - Rather than testing for performance from a load perspective, tests are created to determine the effects of configuration changes to the system's components on the system's performance and behavior. A common example would be experimenting with different methods of load-balancing.
- Spike Testing - Spike testing is done by suddenly increasing or decreasing the load generated by a very large number of users, and observing the behavior of the system. The goal is to determine whether performance will suffer, the system will fail, or it will be able to handle dramatic changes in load.
- Soak /Endurance Testing - Soak testing, also known as endurance testing, is usually done to determine if the system can sustain the continuous expected load. During soak tests, memory utilization is monitored to detect potential leaks. Also important, but often overlooked is performance degradation, i.e. to ensure that the throughput and/or response times after some long period of sustained activity are as good as or better than at the beginning of the test. It essentially involves applying a significant load to a system for an extended, significant period of time. The goal is to discover how the system behaves under sustained use.
- The Art of Application Performance Testing Paperback. Ian Molyneaux. O'Reilly Publishing, 2009.
- Performance Testing Guidance for Web Applications. Microsoft Press, 2007.