What is Performance Testing ?
Performance Testing is a type of non-functional testing used to determine how a software will behave under different workloads. Workload can be defined in different terms like no of users simultaneously accessing a website or the volume of data a website tries to fetch from the database etc. Performance testing determines the applications performance in below parameters:
- Speed: response time of the application
- Scalability: maximum load an application can handle
- Stability: determine if the application is stable under heavy loads
Performance testing does not intends to change the functionality of the software neither it finds bugs in the functionality. It just checks the performance of the application under varying workloads or user traffic. There are many critical applications that cannot afford to provide poor performance to the users. Even a downtime of few minutes in major applications can result in a loss of thousands of dollars. Performance testing just tries to remove such kind of anticipated errors and bottlenecks.
Why do we need performance testing ?
Most common performance issues are related to speed, response time, scalability. A website which takes a lot of time to open does not attract enough users. Similarly if we provide some data to a website and expects a response in return which takes a lot of time, then probably such website will lose users. Performance Testing tries to solve these problems.
Below are some of the common problems related to performance:
- Load time: This is the time taken to start any application or time taken to open the first page of any website. Performance testers should aim to reduce this time as much as possible. Because as said, first impression is the last impression, if the application does not open quickly, the users will not find the application to be useful and they will lose interest in checking other aspects of the application.
- Response time: This is the time taken by the application to provide an expected output in response to the input given by user. For example, a login page where a user will enter the login credentials. After clicking the submit button, the application should quickly open the user account page.
- Scalability: This means the ability of the application to behave correctly in increasing loads. This also implies the maximum load an application can handle. If the application cannot handle increasing workloads, then over a period of time, the application will lose many of its users.
Types of Performance Testing
There are various types of testing which are used to determine the performance of any application or a software:
- Load Testing: This test is used to check a software’s response under a defined user load or traffic. It is used to identify bottlenecks in the software.
- Stress Testing: This is used to determine an application performance under very heavy workloads or high user traffic to determine the break point or the threshold of the application performance.
- Endurance Testing: This is used to determine for how long an application can handle the defined load or traffic.
- Spike Testing: As the name suggests, this test checks how an application will react under sudden increase in load or user traffic.
- Volume Testing: This test is used to check the performance when a high amount of data is being fetched or inserted in the database through the application.
- Scalability Testing: This test is done to check the application’s ability to adapt its performance in times of continuously increasing workloads. It may mean to plan capacity improvement for the software.