Performance testing has proved itself as a crucial success factor of projects with an aim to demonstrate an application which works as per benchmarked specification within a given response time and on a practical database.
It actually enables developers to elicit the diagnostic information needed to eliminate bottlenecks in the performance of a system or software or application in users’ system. In otherwise it determines the readiness of the system to third party use.
Type of Performance tests
Performance testing is a comprehensive terminology. It entails five types of tests such as performance testing, load testing, scalability test, volume testing and stress testing.
1) Performance testing
This is the first task and it includes testing each part of the system to detect which part is slow. Based on the results of this test, efforts are made to make the response faster.
2) Load testing
This test is done to test whether the application or system is user ready in terms of expected load or not. The applications performance is examined by the response time it takes for a specified user load.
3) Stress testing
The test is done to understand at what level of stress or user number, the system starts generating errors and whether it is able to come back online after a massive spike in user number or a crash. The time taken to come back online is another factor to reckon with in this test.
4) Scalability testing
Scalability testing is done to ensure that the software is handling increasing workload effectively. This is done by gradually adding work load or users and continuously monitoring performance of the software or application.
5) Volume testing
This ensures how effectively the system is able to handle a large amount of data. That is why, it is also known as flood testing. The data is then gradually increased with the apps usage.
Performance Testing Stages
There are basically 7 important steps in performance testing.
1) Identifying the testing environment:
The testing team has to identify the hardware, software, network configurations and tools needed to start the test. This may include the actual production system or a replica of the same. Sometimes a subset of the production system with same or lower specification is also used.
2) Identifying the performance metrics:
Performance metrics is very important which determines the parameters on which the performance has to be tested. The metric must include response time, wait time, average load time, peak response time, error rate, concurrent users, throughput, request per second, CPU utilisation, memory utilisation, constraints etc. The success criterion differs from application to application. Therefore, corresponding success criteria must be included in the metrics.
3) Planning and designing the test:
At this stage the test team has to identify test scenarios taking into account variability of users, test data and testing parameters. This may lead to creation of more than one model for testing.
4) Configuring the testing environment:
At this stage the testing environment consisting of hardware, software and testing instruments needs to be prepared to monitor the performance of the application or system.
5) Capturing the data:
When everything is ready testing is begun and the data captured on different parameters is captured for analysis.
6) Analysis and report generation:
The data captured in the previous step is analysed and shared with the team. Based on the analysis corrective action is taken to rectify the problems.
7) Retesting:
The test is again performed on the same parameters to test if the rectification work is sufficient or needs fine tuning. Once this is found to be okay testing is carried out using different parameters and rectification, if needed, conducted.
Advantages of Performance Testing
Performance testing helps to –
- Assess the amenability of the system to growth
- Identify weak points in the architecture
- Detect bugs in the software that could not have been identified otherwise
- Tune up the system
- Verify resilience and reliability of the system
When Should Performance Testing be Performed?
To save money and time, performance testing should be done early in the application or system development life cycle. This helps in testing the basic technology such as network performance, load balancing, application server performance, database server performance and web server performance. However, this should be done with expected load levels.
Detecting and correcting a performance problem after the website has gone live can be a prohibitively costly proposition for you. As soon as all the web pages are built and working load testing should be initiated. Thereafter, every time a module or part of software or application is implemented it should be tested for performance.
Conclusion
To avoid delay and cost overrun the best practice to be adopted is testing the application early in its development cycle. So individual units or modules should be tested for performance as and when these are complete.
Moreover, a single test does not resolve all queries. So repeated, but smaller tests need to be performed to come up with a robust system.