Isn’t this is a common problem we all face? This happens when your website or app has not gone through robust Performance Testing.
Most performance problems revolve around speed, response time, load time and poor scalability. Speed is often one of the most important attributes of an application. A slow running application will lose potential users. Performance testing is done to make sure an app runs fast enough to keep a user’s attention and interest. It also uncovers what needs to be improved before the product goes to market. Without performance testing, software is likely to suffer from issues such as:
Thus a tester plays a key role while developing and releasing product into the market. The challenge of performance testing is that creating and running tests alone is not enough. You need to understand performance concepts in general – such as performance analysis, performance engineering, capacity planning, and systems architecture – as well as performance peculiarities of specific products and technologies.
Firstly, What exactly is Performance testing?
Performance testing is a non-functional testing to determine how the system performs in terms of speed, scalability, stability, reliability and confidence under the user load.
“Performance is the customer’s perception of how long they had to wait.”
Let’s take a deep dive into the performance testing definition:
Speed – Does the application respond quickly enough for the intended users? (How fast?)
A Speed verification and validation can be user interaction and quick navigation between pages, fast loading content and image loading, user experiences, psychology, hardware configurations, network, software cost etc. Metrics can be collected during the speed test, such as response time, latency etc. Measuring speed can be an expensive attribute.
Scalability – Will the application handle the expected user load and beyond? (How much?)
A scalability tests will be design and execute to find how many users current system handles before it gets ‘slow’, validate the numbers of users which sustain with current system configurations, the size of application or database servers how much data can it hold, Database capacity, File server capacity, Backup server capacity, Data growth rates etc. Metrics can be collected during the scalability tests are: Throughput, CPU utilization, Memory usage, disk I/O data.
Stability – Is the application stable under expected and unexpected user loads? (How Long?)
The stability test are used to validate what happens if suddenly lot of users visit the same page, try to take the same action, or if the user suddenly get disconnected, or the web server goes down in between transactions, and many such cases such as – unavailability of system resources, communication failures, invalid or stressful inputs, unanticipated events, corrupted internally stored data, improper uses by system operators, unavailable databases, stress overloads, equipment damage loss of power, software crashes, etc. Metrics can be collected during this test: Deadlocks, Failed connections, Failed requests, attack vectors etc.
Reliability – Is the application able to function, with given environmental conditions, for a particular amount of time. (How Often?)
Reliability tests can verify most likely scenarios under normal usage conditions and validate that the application provides the expected service. A test is considered reliable if we get the same result repeatedly. It is more about exercising an application so that failures are discovered and removed before the system is deployed. This test includes smoke testing, feature testing, load testing and regression testing. The test objectives include:
Metrics can be calculated during test are: failures, errors, memory leakage, buffer overflows etc.
Confidence – Are you sure that users will have a positive experience on go-live day? (How Trust?)
Confidence testing is the user acceptance testing which defines formal testing with respect to user needs, requirements, and business processes conducted to determine whether a system satisfies the acceptance criteria and to enable the user, customers or other authorized entity to determine whether or not to accept the system.
If we are aware of the system performance level and ready to face the risks, we can make informed decisions and plans for the future. In simple words, End-User Testing or Field Testing is the final verification of a system before it is released into the production.
“The peace of mind that it will work on go-live day alone justifies the importance of Performance Testing.”
Test Early, Test Often! Happy Testing!