Performance Testing
What is performance testing?
Performance testing focuses on the ability of a component or system to respond to user or system inputs within a specified time and under specified conditions.
Performance measurements vary according to the objectives of the test. For individual software components, performance may be measured according to CPU cycles. In contrast, for client-based systems, performance may be measured according to the time taken to respond to a particular user request. For systems whose architectures consist of several components (e.g., clients, servers, databases), performance measurements are taken for transactions between individual components to identify performance “bottlenecks.”
Reasons for performance testing
- To determine whether the application satisfies performance requirements
- To locate computing bottlenecks within an application
- To confirm whether the performance levels claimed by a software vendor are indeed true
- To compare two or more systems and identify the one that performs best
- To measure stability under peak traffic events
Types of performance Testing
Load testing focuses on the ability of a system to handle increasing levels of anticipated realistic loads resulting from the transaction requests generated by several concurrent users or processes. Average response times for users under different scenarios of typical use (operational profiles) can be measured and analyzed.
Stress testing focuses on the ability of a system or component to handle peak loads at or beyond the limits of its anticipated or specified workloads or with reduced availability of resources such as accessible computer capacity and available bandwidth. The functional integrity of the system should be tested while the system is under stress to find possible faults in functional processing or data inconsistencies.
One possible objective of stress testing is to discover the limits at which a system fails so that the “weakest link in the chain” can be determined.
Scalability testing focuses on the ability of a system to meet future efficiency requirements, which may be beyond those currently required. The objective of the tests is to determine the system’s ability to grow (e.g., with more users and 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 warn of impending problems. In addition, the production environment may be adjusted with appropriate hardware.