Performance testing is a form of testing that tests the speed, response time, and resource usage of software under a particular workload. These tests help identify deficiencies of scalability and reliability of the software.
This form of testing checks the software's performance metrics in response to regular and sudden usage patterns, it is also known as load testing. This test aims to ensure response times and resource usage are within limits and identify and fix any performance bottlenecks.
What metrics are measured?
- Concurrent users: The number of users an application can support simultaneously. This metric sometimes translates to the number of simultaneous connections that can be kept alive between a server and a client.
- Response time: The time taken by the server, usually measured in milliseconds, to process a request and return a response. This time can drastically increase with load and might lead to timeouts, indicating a performance issue.
- Database load: In most applications, the database is the system that is mostly in flux. The time it takes to execute database queries can often be the bottleneck. So we must monitor it during performance testing.
What are the different types of performance testing?
- Soak testing: This is a milder form of load testing designed to test the long-term performance sustenance of the system. It can identify any small memory leaks or bottlenecks that might build up over time during continuous usage.
- Stress testing: This is a more harsh evaluation of load testing, specifically testing the system's upper limits. This form of testing prevents software failure under unexpected bursts of usage and identifies other points that might become bottlenecks.
- Spike testing: This is another form of load testing but involving a sudden spike in usage. This form of testing checks if the software can quickly scale up to meet demand during spikes and scale down to manage costs afterward.