Updated: Nov 30, 2020
Performance testing is one of the most important testing methods you need to get familiar with. The main reason for it is, that this is one of the best ways to evaluate your systems' stability, reliability, and effectiveness, all under a given workload.
While executing performance tests, we must validate the system's ability to deliver an expected performance based on the predefined requirements and specifications (i.e.: Operation X should last between 1-5 seconds, Operation Y should not cause any delay greater than 1 millisecond).
Main Goals of Performance Tests
We can say that there are four main aspects we want to achieve during the process of our test execution, those four aspects relevant to the “Non-Functional” side of testing:
The Application's Stability
Is the application stable to use when running for a long time?
Are there any architectures that lead to stabilization issues?
Is the application stable to use under different loads?
The Application's Scalability
What are the environments that we can use to execute the software?
How many users can interact with the software at the same time?
How many inputs the software can handle at the same time?
The Application's Response time (responsiveness)
How fast the system interacts under different architectures?
How fast the system can return the expected output?
How fast the system can handle user requests?
The Application's reliability
Is the application reliable for use by the end-users?
Do the application critical bugs removed before we deploy the system on the user's architectures?
Advantages of Performance testing
There are many reasons that can justify the existence of this testing type, among them we can list a few:
Performance tests allow the company to understand the overall limits of the system.
Performance tests can be used to evaluate and compare two systems against each other.
Poor performance results may indicate a configuration/functional defect.
Performance tests are also used to improve the end-user experience.
Performance tests may involve some additional corresponding testing types that lead to greater coverage (endurance, Spike, and load, etc.).
Performance tests can evaluate multiple aspects of the software (stability, overall performance speed, bottlenecks, effectiveness, etc.).
Performance tests will allow the testing team to raise the problematic areas that are affecting the application's performance, based on this, the R&D department can improve the problematic areas that involve in the process.
Performance tests are one of the best ways to evaluate the software under different architectures and overloads.
Performance tests will provide confidence in the product (Both from stockholders and management).
Performance tests are used to evaluate the product against the predefined requirements and specifications.
Disadvantages of Performance testing
Although I reviewed many reasons why performance tests are great, every coin has two faces. So I just wanted to raise a few disadvantages of this testing method, I know that it may help you when you need to decide whether to perform this type of tests or not.
Performance tests may not find functional bugs that you can find with other testing types.
Sometimes it’s very hard to understand the root cause of a problem.
Performance tests need a dedicated and large testing environment.
Performance tests need to be carefully designed and evaluated.
Performance tests is a process that takes time, a very long time.
Sometimes you cannot anticipate the expected results.
Performance tests are a costly process.
In most cases, performance tests are executed with 3rd party applications that need further learning and investigation.