Getting started with performance testing
In this blog post we’ll look at the different types of performance testing and how to get started if you’re new to it.
First things first, what do we mean when we talk about performance testing? Performance testing can refer to several different types of testing, such as load testing, stress testing, scalability testing, and endurance testing amongst others. So when you’re asked to performance test a particular application, the first thing you need to work out is what type (or types) of performance testing are needed.
Performance testing is about creating good user experiences
The objective of performance testing is to ensure that the user of an application has a good experience. Simply put, if a user is spending extended time waiting for page loads or button presses to take effect, they are less likely to continue using your application.
What are the common types of performance testing?
🏋️♂️ Load testing – Simulating the expected number of users of a system to check how the system behaves under normal circumstances.
😧 Stress testing – Similar to load testing but using a higher number of users to find the limits of your system.
📈 Scalability testing – Determining if your system can cope if the number of users increases or decreases by a large number.
🏃♂️ Endurance testing – Also called soak testing, this is testing to see if your application can continue to run under the expected user load for an extended period of time.
👉 Spike testing – Imitating a sudden large user load to check the system can handle this type of situation.
🔇 Volume testing – Filling your database with a large amount of data to check that the system continues to perform as expected.
What types of performance testing should I use for my application?
Desktop application If you were testing an isolated desktop application with no network connection to a server, such as a calculator. Performance testing in such applications would typically relate to how responsive the application is. If a user could do the calculation quicker themselves, then the application is of no use to them, so here, testing how quickly the application can respond with a result is key. Another important type of performance testing is endurance testing; if a user is using your application intensively for a long period of time, can the application cope? For this type of application, stress testing and scalability testing would not be relevant as there is only one user. In this situation, you may also need to consider different hardware specifications to determine the minimum support levels required for your application to run at the desired performance level.
Application with a physical server Now consider a web application with a remote server. This is a much more complex system and the performance testing requirements are also going to be more demanding. You’ll need to consider the whole system and not just the application that the user sees. The responsiveness and endurance of the application are still going to be important, but you also need to think about load testing and stress testing. The application is no longer isolated with a single user, it has the scope to be used by far more people. Consider the following questions:
What if these people are all using the application at the same time and the application is making calls to the server?
Can you be certain that the user experience is not going to be degraded when the application is under this load?
Can the server respond to all the calls in a timely manner, and can it do it reliably?
You should also consider what might happen if your application suddenly becomes very popular- can the system cope with scaling for an influx of new users and still give each of the users the best user experience?
Application with cloud architecture Another option to consider is a web application with cloud architecture. One of the main benefits of using cloud architecture is that it can scale with your application, so if you increase the load on your application, the cloud services can adjust to cope with this. Despite this, it’s still important to test how your application will handle spikes, scalability and stress, as this can be tied to how well the system has been configured. So regardless of the architecture, each area of performance should still be tested to ensure it is acting in the way you expect and the user experience is consistent.
Now that you have an idea of the different types of performance testing and their suitabilities for different types of applications, it’s time to run some tests! In the next article we’ll explore how to benchmark your tests, different tools to try out and some other practical tips.
At WORTH we believe that knowledge sharing should be free, enabling and impactful. Want further insight into our thoughts and ideas? Sign up to our newsletter.