What is Performance testing?
Performance testing is one of the types of Software Testing, it is categorized as Non-functional testing. Performance testing allows the user to test the stability and response time of a particular application while applying the desired load. The number of users an application can handle is the ‘Load’. Time taken by a particular application to perform the desired action is the ‘Response time’. Performance testing is nothing but to ensure how well the application could handle the desired load.
What are the types of Performance testing?
- Load Testing – Applying a load less than or equal to the desired number of users and checking the stability and response time of the application.
- Stress Testing – Applying a load greater than the desired number and checking the stability and response time of the application. Also, restricting or reducing the hardware resources and having the application tested.
- Scalability Testing – It is the extension of stress testing. Applying a load which is greater than the desired number and checking the exact number of scalable users the application can handle.
- Volume Testing – Transferring huge volumes of data and checking the stability and the response time of the application.
- Soak Testing – Applying a load over a period of time and checking the stability and the response time of the application.
- Reliability Testing – Testing application for its ability to function under a specific environmental condition for a particular amount of time.
Performance Testing Life Cycle
Performance testing life cycle includes the following processes:
- App Specifications - Analyse the functionality of the application before doing the performance testing. If any functional bugs are encountered while testing the application manually, do not proceed to performance testing.
- Scripting - Identify various scenarios in the application. Capture/record the scenario that you would like to do performance testing on, using any performance testing tools such as JMeter, LoadRunner, etc.,
- Validation - Verify whether the scripted scenarios could be executed properly. Also, ensure that the validations kept in the application are executed successfully.
- System Configuration - Verify whether the system configurations such as RAM, Network bandwidth, Processors which are required for the performance testing are appropriate, such that the system can work without any flaws or issues. Also, ensure the size of the application database before you do performance testing.
- Execution - Verify that the application is running properly while feeding the desired load to the application.
- Report Analysis - Verify that the application loads any page/request within the expected response time. We need to validate the load time against the universal response time and status codes.
Why do we need performance testing?
- Performance testing helps to identify the scalability, stability and response time of the application.
- To improve the performance of the application to deliver a good product.
- It helps to test the application by concurrent users to ensure that the software will work well when the load increases.
- We can test the system hardware of a particular user.
- We can identify the bottlenecks involved to conclude on the maximum supported users for the application.
What kind of applications are suitable for performance testing?
- Performance testing is mainly done for client-server applications and web-based applications.
- If the application is used concurrently by a large number of users, then performance testing is required.
What are the tools used for performance testing in business standards?
We cannot test an application through 1000 concurrent users manually, can we? Hence, comes the need for tools. Listed below are some of the performance testing tools.
- HP Load Runner
- Silk Performer
- Stress Stimulus
- Load Ninja
- Rational Performance Tester
Online Performance testing tools
- GT metrics
- Google Page speed
How to check performance of application using tool?
- Before you do performance testing, you need to check the functional flow of the application manually.
- Verify all the possible scenarios before performance testing. If any functional bug occurs, we cannot do performance testing.
- Once the application flows pass with manual testing, we can proceed to performance testing.
- Scripting is the first step in Performance testing.
- Record the scenario.
- Do Correlation and Parameterization.
- Correlation is used to change dynamic values. For example, consider you are login to the Gmail application, unique tokens/sessions ID gets generated for each request. System generated unique ID’s cannot be parameterized. Auto-generated ID’s get stored in Primary request response. When the user wants to create a new token ID, user should use the syntax for correlation and update the new ID in the previously stored Primary request response.
- Parameterization is used to change static values. For example, consider if you want to login to the application as different users, you can use the user-specified data via parameterization.
- Validate the script.
- Execute the script.
- Execute different patterns of users [Starts at 1 user, to achieve the desired result]
- While execution, we need to monitor the system metrics.
- Prepare report from the execution.
How to analyze performance testing report?
- Verify the response time of the request.
- Universal response time to load a particular page is 10 secs and load time for particular request in a page is 2 to 4 seconds.
- Throughput time is the number of items produced by a process in a given period of time.
Checklist for Performance testing metrics
- CPU Utilization
- Memory Utilization
- Network Utilization
- Operating System limitations
- Disk usage
- Thread counts
- Database locks
- No. of Hits per second
Performance Testing Checklist
- Measure the time taken for a particular action to response.
- Measure the database size used for testing.
- Measure the time taken to fetch data from database.
- Ensure the layers or tires used for application.
- Ensure test Environment same as Production Environment.
- Hardware (System) configuration during performance engineering.
Difference between Performance testing and Performance Engineering
- Performance testing will test the application scalability and response time and reports the performance of the application.
- Performance engineering analyses the performance test reports and improvises the code level or hardware level changes if required.
Performance Engineering is a step ahead of Performance testing, since after execution, the results are analysed with the aim to find the performance bottlenecks and the solution is provided to resolve the identified issues.