Performance Testing is a type of software testing that ensures software applications perform properly under their expected workload. It is a testing technique carried out to determine system performance in terms of sensitivity, reactivity and stability under a particular workload.
Performance Testing is the process of analyzing the quality and capability of a product. It is a testing method performed to determine the system performance in terms of speed, reliability and stability under varying workload. Performance testing is also known as Perf Testing.
Types of Performance Testing
Load Testingchecks the application's ability to perform under anticipated user loads. The objective is to identify performance bottlenecks before the software application goes live.
Stress Testinginvolves testing an application under extreme workloads to see how it handles high traffic or data processing. The objective is to identify the breaking point of an application.
Endurance Testingis done to make sure the software can handle the expected load over a long period of time.
Spike Testingtests the software's reaction to sudden large spikes in the load generated by users.
Volume TestingUnder Volume Testing large no. of. Data is populated in a database and the overall software system's behavior is monitored. The objective is to check software application's performance under varying database volumes.
Scalability TestingThe objective of scalability testing is to determine the software application's effectiveness in "scaling up" to support an increase in user load. It helps plan capacity addition to your software system.
Process flow of Performance Testing
- Identify your testing environment - Know your physical test environment, production environment and what testing tools are available.
- Identify the performance acceptance criteria - This includes goals and constraints for throughput, response times and resource allocation.
- Plan & design performance tests - Determine how usage is likely to vary amongst end users and identify key scenarios to test for all possible use cases.
- Configuring the test environment - Prepare the testing environment before execution. Also, arrange tools and other resources.
- Implement test design - Create the performance tests according to your test design.
- Run the tests - Execute and monitor the tests.
- Analyze, tune and retest - Consolidate, analyze and share test results.
Challenges in Performance Testing
- Some functional errors are only visible under load. There is a chance for not detecting such errors while doing performance testing.
- Testing ends as a mere process if it is not programmed and executed carefully.
- If testing is not performed on various devices, it might cause variation in results and hence users experience difficulties.
- Not programmed to principally concentrate on speed of response.
- Chances for application or network failures are high if testing conditions are not isolated.
Pro’s and Con’s
- Validating the basic features of the application gives you confidence to announce notable business decisions based on your software.
- Testing helps you know whether the features of your software are set in such a way to please the users.
- Able to detect the mismatches and rectify it before the software gets published.
- Performance testing enhances your optimization and capacity planning efforts.
- Code is already live so performance issues may be causing problems to real users already.
- Testing must be conducted out of hours during non-peak periods.
- Clearly there will be a limited opportunity in services serving a global user base, e.g. bank trade processing systems.
- Debugging the test scripts.
- If the test script has to test more screens, maintenance of the test data files is difficult.
- Maintenance of test data becomes a little bit costly in playback methods.