Capacity testing determines how many users and/or transactions a given system will support and still meet the stated performance goals.
Concurrency testing focuses on the impact of situations where specific actions occur simultaneously (e.g., when large numbers of users log in at the same time). Concurrency issues are notoriously difficult to find and reproduce, particularly when the problem occurs in an uncontrolled environment such as production.
Endurance testing focuses on the stability of the system over a time frame specific to the system’s operational context. This type of testing verifies that there are no resource capacity problems that may eventually degrade performance and/or cause failures (e.g., memory leaks, database connections, thread pools).
Spike testing focuses on the ability of a system to recover from sudden bursts of peak loads and return afterward to a steady state.
Scalability testing focuses on the ability of a system to meet future efficiency requirements which may be beyond those currently required. The objective of these tests is to determine the system’s ability to grow (e.g., with more users, larger amounts of data stored) without exceeding the currently specified performance requirements or failing. Once the limits of scalability are known, threshold values can be set and monitored in production to provide a warning of impending problems. In addition, the production environment may be adjusted with appropriate amounts of hardware.
Stress testing focuses on the ability of a system or component to handle peak loads that are at or beyond the limits of its anticipated or specified workloads. Stress testing is also used to evaluate a system’s ability to handle reduced availability of resources such as accessible computing capacity, available bandwidth, and memory.
Load testing focuses on the ability of a system to handle increasing levels of anticipated realistic loads resulting from transaction requests generated by controlled numbers of concurrent users or processes.
Performance testing is an umbrella term including any kind of testing focused on performance (responsiveness) of the system under different volumes of load.