What is Performance Testing and its types
Updated: Sep 18, 2021
Performance testing is a type of non-functional testing because when we perform the performance testing we do not test the functionality of the software under test instead we assume that the functionality of the software is already gone through the functional testing phase and it is working fine.
There are numerous types of performance testing techniques:
1. Load testing
2. Volume testing
3. Stability testing
4. Stress testing
When load testing is performed on any software application we gradually increase the load on the application using virtual users. For example we start with 1 virtual user then increase it to 5 then 10 then 100 then 1000 and so on to check how the application is behaving when so many users try to access the application at the same time.
This gradual increase of load in form of users is a real time scenario for any application because there could be any number of users who try to access the application over the Internet from all over the world and the application should behave normally no matter how many users are trying to access the application at one time.
Generally the client gives the benchmark in form of number of users that he wants his application should handle at a peak time and the role of development team is to develop an application that could handle that many users with good performance. By good performance I mean that the response time of the application should be within the benchmark defined by the client even when the application is handling huge load.
During Volume testing we gradually increase the records in the application’s database and check the performance of the application. Similar to load testing here also we start with 1 record in database and move to 5, 10, 100, 1000 and even Lakhs of records in database to test the performance of the application. Our goal as a tester is that the application should behave normally i.e. response time of the application should be within the limits defined by the client even when there are Lakhs of records in the database.
While performing stability testing our goal is to test that the application should run properly even for long hours i.e. its performance should not degrade after running for long hours say 24 hours. During stability testing we run the application continuously for long hours, keep on performing different tasks on the application by many users like 100 users. We set up 100 virtual users who perform different tasks on the application continuously for long hours and we check the performance of the application.
In Stress testing our intention is to keep on increasing load on the application until it breaks down, this way we could know that the current hardware of the machine on which the application is deployed could handle this much load and if we want the application to handle many more concurrent users without getting broken down than the number of users it is able to handle currently then we need to improve the hardware infrastructure of the machine on which the application is deployed.
Tools required to do Performance Testing
Performance testing can’t be performed manually as it is impossible to arrange even 100 users on 100 machines trying the access the application concurrently so we need to rely on automation testing tools to perform the performance testing. There are many tools available in the market but the 2 most popular ones are:
It is open source so anybody could download and use it but it could be used just for doing performance testing of a web application.
It is a paid tool by HP Company. You could use it for free up to 50 virtual users but beyond that you need to buy a license which is very expensive. But you could use Loadrunner to do performance testing for application other than web also like desktop applications. There are number of protocols like File Transfer Protocol (FTP), Internet Messaging (IMAP) etc. which are not available in open source free tool Jmeter so for any complex application it is better to use Loadrunner.