Performance Testing
What is Performance Testing? Performance testing is a type of testing to determine the performance of application/system to measure, validate or verify the quality attributes of the system like responsiveness, speed, scalability under a variety of load conditions.
Performance Testing is an essential activity in a software development life cycle. From initial planning to production analysis, application performance drives the development of better software iterations and releases. Application stakeholders, programmers and testers must make performance a primary consideration in all iterations of agile development process.
Copyright Š by QA InfoTech. All rights reserved.
End-to-End Test Process and Methodology
Copyright Š by QA InfoTech. All rights reserved.
Load Test Types ●
Benchmark Test: Test with X number of concurrent users (e.g., 20 users) to establish baseline. All 20 users will be logged in to the application at specific intervals (called ramp-up time) and will perform different user transactions concurrently.
●
Load Test: Ensure that the application can handle the anticipated number of concurrent users. The anticipated number of concurrent users (equivalent to the number of hits/second) will be determined in collaboration with product team. This information then would be used to create a workload. Here is a sample workload for 100 concurrent users-
Copyright © by QA InfoTech. All rights reserved.
â—?
Step-up Test: Test the application capacity by increasing the number of concurrent users periodically during the load tests. This test will help in finding the maximum number of concurrent users that can be supported by the test environment. Test monitoring and analysis helps in finding the bottlenecks. Step-up test is designed to have multiple alternate ramp-up and steady states. Here is a sample workload for a ramp-up test:
Copyright Š by QA InfoTech. All rights reserved.
●
Stability/Endurance/Soak Test: The goal of the test is to ensure that the application is stable and performs well (under baseline user count) for extended duration. Such tests typically reveal memory leaks.
●
Stress - Breakpoint Test: The objective of the test is to determine under what user-load the application stops responding/the average response time of 50% of the transactions is more than the acceptable criteria.
●
Stress - Failover Test: The focus of the test is to ensure that the application recovers & functions as accurately when certain failures are encountered. Failover/Recovery testing comprises of intentionally shutting down a server (web server and/or database server or any other server) by either physically pulling the cord of the server or shutting it down via the command line.
●
Scalability Test: Ensure that the application is scalable and supports the number of users and user patterns associated with the system. Application can be tested for both scaling-up and scaling-out.
Copyright © by QA InfoTech. All rights reserved.
●
Spike Test: Spike testing is subset of stress testing. A spike test is carried out to validate the performance characteristics when the system under test is subjected to workload models and load volumes that repeatedly increase beyond the anticipated production operations for short periods of time. This type of performance testing involves an instant rise in the load, with a goal to observe how the system behaves against this spike in load.
●
Isolation Test: Isolation testing is not unique to performance testing but involves repeating a test execution that resulted in a system problem. Such testing can often isolate and confirm the faulty domain.
●
Volume Test: Volume testing, a non-functional type of testing is conducted to test a software application with a large amount of data to be processed to check the efficiency of the application. The main goal of this testing is to monitor the performance of the application under varying database volumes.
●
Configuration Test: Rather than testing for application performance from a load perspective, tests are created to determine the effects of configuration changes to the system’s components on the system’s performance and behavior. A common example would be experimenting with different methods of load-balancing.
Copyright © by QA InfoTech. All rights reserved.
Agile Performance Testing By adopting various techniques and methodologies to remain efficient and thorough in an agile environment in all kinds of web applications, mobile applications, web services, APIs and internet based desktop applications, the objective here is to determine the performance bottlenecks in key business processes as early as possible during the project development cycle. This transition is known as “shift left” as it shifts performance testing earlier within a sprint, in the software development lifecycle. Only when performance testing has been completed, the product team can confidently deliver a successful application to their end users. Agile performance testing is done in three phases: ●
Unit Level Test: Executing tests to isolate and fix bottlenecks at code level
●
API Level Test: Executing tests to isolate and fix bottlenecks in the application’s components
●
Application Level Test: Testing the critical application flow under normal and peak load for a satisfying user experience
Copyright © by QA InfoTech. All rights reserved.
Continuous Testing and Monitoring Continuous Integration (CI) is considered a ‘Best Practice’ and is a key element of agile development methodologies. Running CI processes without running load tests, is only one part of the equation which would result in an incomplete answer. If the application is going to be deployed to QA or production, it’s important to integrate load testing into the processes.
Copyright © by QA InfoTech. All rights reserved.
Thank You
info@qainfotech.com www.qainfotech.com