Updated: Jan 19
Performance testing is one of the most crucial 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 more significant than one millisecond).
Primary 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 can the software handle at the same time?
The Application's Response time (responsiveness)
How fast the system interacts under different architectures?
How fast can the system return the expected output?
How fast can the system handle user requests?
The Application's reliability
Is the application reliable for use by the end-users?
Are the critical application bugs removed before deploying the system on the user's architectures?
Advantages of Performance testing
Many reasons 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 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 additional corresponding testing types that lead to more excellent coverage (endurance, Spike, 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 affecting the application's performance; based on this, the R&D department can improve the problematic areas involved 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 (From stockholders and management).
Performance tests 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 test or not.
Performance tests may not find functional bugs that you can find with other testing types.
Sometimes it’s tough 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 are 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.