Why is Performance Testing is needed?
It is done to provide customer with the information about their application regarding response time, stability and capacity. More importantly, it is done to improve the application behavior before it goes into market. It is important because, without it the application will suffer the issues such as:
- Running slow if multiple users access the application simultaneously.
- Inconsistencies across different operating systems and usability.
- Capacity of the application.
It will determine if the customer application is meeting the response time, speed, capacity and stability. It will give the confidence to customer about the behavior in the market.
Customer application sent to market without performance testing will gain bad reputation and will not meet the market sales.
Different type of Performance Testing
It will help to check the application's behavior to perform under anticipated loads on application. The objective is to identify performance bottlenecks of the application under expected load.
It is done to make sure the software can handle the expected load on the application over a long period of time. Because the memory leak will be observed when the application is running for longer duration. So the most important objective of the endurance test is to find the memory leak and behavior during the load for longer duration.
Stress testing is one on the application too find the breaking point of the application. It will determine how much load the application can handle. How will the response time and resource behavior when the extreme load is applied on the system. Important it will give the customer the need confidence how much load the system can handle with existing resources.
Spike testing is done to check if the application can handle, if there is any sudden spike of user on the application. It will let the customer know if the system will crash or it will handle the spike with some degradation on the application behavior.
Under Volume Testing large number of data is populated in database and the overall software system's behavior is monitored. The objective is to check software application's performance under varying database volumes.
Capacity/scalability testing is done to determine the software effectiveness in scaling pattern of the user load on the application. It will help the customer to plan the capacity of the application by adding the resources to your software system.
Performance Testing Process
Five most important phases are
In test initial phase of the project we collect the requirement of the project such as use cases or the work flow of the system. Will a discuss with business analyst team to understand the important flows of the system software.
Strategy document for the system will created such as
- Overview of the System.
- Objective of the testing .
- Scope of the document.
- Enter criteria and Exist criteria.
- Script Pass/Fail criteria.
- Data setup process.
- Environment setup.
- Tools to be used.
- Assumption and dependencies.
High Level test plan will be shared with all the customer along with all the team involved in the process. And all the information will be in details in the test plan for reference.
It is most important phase in performance testing because in this phase we will plan how are we going to do performance testing. We will get to know the requirement of test data and the dependencies of the test data for each script. Which is most time consuming part in the testing phase.
Test Environment setup, you need to understand the environment where your going to perform testing. Because most of the performance test environment will not be similar to the production environment. So you need to understand the dependents of the down stream system and what are the system you need to stub or configure to perform your testing. It will help you to define the work load modelling of your system.
And also the tools which we are going to use for performance testing and there dependencies and there limitations.
In Scripting phase, the script are created using the tools available or agreed as per the planning phase. Most importantly all the use cases are scripted for the system as agreed with the business. The script catalog which will be created which contains the script flow for each of the use cases.Use cases are mapped with simple, moderate and complex. Depending on the complexity of the test cases the duration of the scripting will be confirmed.
You understand the test data required for your system because during planing phase you will get to know what are the test data. But during the scripting you will understand the unique data you need for each script. And also the dependencies of each data for the script. Because of this you can plan your test data preparation activity.
It is the most important phase of the performance testing because in this phase you will find the bottle neck of the system. This phase is where most of the recommendation and the system turning will done. And below are some important part of this phase
Data setup activity for each script need to be completed before the test. Because without the data setup you cannot run the performance testing the script which are data deepened will fail.
Type of Performance Testing
We will be performing different type of performance testing on the system to understand the bottle neck of the application. Because each different type of execution are meant for different purpose and it will help to understand different issues.
Reporting and Analysis Phase
This is the last phase of the process, once the test execution is completed. We will analysis the results collected from different tools used during the testing and share the test will the customer.
We will analysis from each section of the system such as server side, client side, db side and web sever side. Because each section will give you details how the system is behavior and what is the utilization of resources. Most importantly it will give you the exact section where there is an issue in the system.
And Most important recommendation on the application are shared with all the stakeholder and development team. Once the development team gives the fixes for the issue and recommendation we will gain perform the testing and certify the application if the fixes are working or not.
Common Issues Found In Performance Testing
Most of the issues will be because of the test environment because the test environment might not be properly configuration as per the production. Down stream system might not be configured in the environment. Servers are not configuration as per the production or most important the configuration of the server might not be same as the production.
Wrong Use of the Test Data
Important part of execution will be using the data. Because if you use the wrong data for your script then during the execution you will see the error and you will not achieve the target. So understanding the correct data for the test is important.
Wrong Workload Modelling
Need to prepare the workload correct keeping all the factor in mind, such as production and test environment set up. Number of server used in both the environment. Usage of each functionality. So understand this factory before we prepare the workload model.
Not Using the Best Scripting Practice
Using the hard coded values in the scripts. Using different script for each functionality where we can modulaize the flow with same script. Not using the think time and miss use of think time inside the transaction.
High response time of the application during the execution because of many factor .
System is not able to handle the higher load when the user increase. So customer need to plan the capacity of the application.
Application is not running properly with different operation system and with different browser.
CPU utilization of the system high. Which is reaching more than the threshold because of it the system performance is degraded.
Memory utilization of the system high. Which is reaching more than the threshold because of it the system performance is degraded.
Disk utilization of the system high. Which is reaching more than the threshold because of it the system performance is degraded.
Basic Monitoring During the Performance Test Execution
Some of the important section we monitor during the test are
- Response Time, How the application is behavior with the load on the applicaiton.
- CPU Utilization, check how the cpu is getting utilization during the execution and also after the execution.
- Memory Utilization, check the memory utilization during the execution and also see if there is any memory leak in the application.
- DB Utilization, check if the db cpu is properly utilization and if all the sql are getting executed within the time.
- Application sever, observe how the server are behavior during the execution.
- Web server observer how the web server are reacting during the execution.
- Disk Utilization check if the disk space is properly getting utilized.
Different Performance Testing Tools
Rational Performance Tester
Click here for details about tools