What is performance testing?
A non-functional testing process to determine the performance of software. So we can test the application's speed, response time, stability, load-bearing capacity and resource usage under different workloads. It is important to note that it makes sense to perform performance testing early in the development phase, which helps to detect performance problems when they can be fixed more easily and at lower cost.
Why is performance testing important?
Basically, it saves time and money. If you start testing for performance early in development - when the application is already stable in the development environment - you can identify potential reliability issues sooner.
After running the test, we can conclude from the reports whether the application has sufficient resources to meet the predefined KPI (Key Performance Indicator) or whether it needs hardware enhancement or development optimization.
What types of performance testing are there?
Performance testing is a generic term, there are many types, but the 3 most common ones are worth mentioning.
- Load Test: Here we are looking at how the system behaves under normal or higher loads. Such loads can be concurrent user count, Api calls, or database operations, etc. Possible bottlenecks become visible with this test type. This could be, for example, communication with the database or some external system or resource-intensive operation due to programming errors or inattention.
- Stress test: The purpose of this test is to monitor how the system reacts by putting a higher than normal load on the system. The load is continuously increased until the system collapses. This is to detect signs of system collapse, gaining experience for a possible sharp collapse and to learn about the limitations of the system under development.
- Soak Test: This is a type of load test, designed to keep the system at a specific load for a long period of time. This allows you to see if the application works properly under a continuous load. You can also observe possible memory leaks, an increase in system response time or a degradation of other performance metrics.

How to conduct a performance test?
Before you actually start testing a system, there are a number of questions about the test environment that need to be clarified. What hardware resources does the server have? (It is worth mentioning here that valid performance can be measured in a test environment that is similar to a live environment.) How many users will use it? How will it be accessed? What is the network connection between the components? And we could go on.
Once the answers to the questions have been found, the next step before testing is to determine the exit points using key performance indicators (KPIs). For example, it can simultaneously perform 4000 concurrent database operations per second.
It is also important that the testers are aware of the business processes of the application in order to select test cases for performance testing.
For testing, we need different tools to simulate test cases or user interactions. The range of tools includes both licensed and open source software. The latter group includes, for example, Jmeter, Grinder, or Locust.io.
Once everything is in place, the testers run the tests and monitor the test runs, and finally analyse and evaluate them. Detecting bugs early in the software lifecycle can significantly reduce costs.