When the new version of your website or web app is ready, you probably can’t wait to get it deployed on production. But wait – there’s one crucial step you have to make before you provide it to a broad audience: performance testing. What are the biggest performance testing benefits? Why you really shouldn’t neglect this step? These are the questions I’ll answer in this article.
What is performance testing?
Performance testing process allows you to evaluate the stability and responsiveness of websites and web applications. You do this to ensure everything loads fast enough, the system doesn’t crash, and its general performance doesn’t affect the user experience negatively.
You usually conduct software performance testing during critical moments – such as the introduction of a new feature, the launch of a new version or app, and also before important events and promotions.
It’s also worth noting that there are several ways to conduct performance tests. You can run some tests artificially – in an enclosed environment that normal users can’t access. However, very often the only way to really evaluate how a website behaves under heavy load in real-life situations is to test it on production.
Performance testing metrics
There are several key metrics related to performance testing that have to be measured if you want to get useful data and draw actionable conclusions. For example:
- CPU utilization – the load on the computer’s main processing unit
- Bandwidth – how much data can be moved across the network infrastructure in one second
- Memory utilization – how much memory is used by the system during load
- Latency (response time) – how much time does it take before the user request triggers a response from the system
- Throughput – how much information can be processed in a given amount of time
- Average load time – the average time it takes to load a page
- Requests/second – how many requests are handled by the system
- Error rate – how many requests cause errors
Types of performance testing
There are many different types of performance tests. Each of them was designed to achieve a slightly different result and gather different types of data.
- Load testing – this is one of the most common and simplest test types. You run a load test to determine what the system is capable of under a normal load. There’s also a subtype of load tests called “soak tests” or “endurance tests”, which are used to check long-time system performance and effects of load
- Scalability testing – this type of test is used to determine how well the system will scale, and find possible performance bottlenecks that might affect that growth negatively
- Stress testing – stress tests are load tests conducted to evaluate the maximum capabilities of a system, by stressing it out until it can’t handle it
- Spike testing – you conduct these to see how your system handles sudden spikes in traffic
- Configuration testing – you run this kind of test to see how a specific change in configuration affects the system’s performance
Benefits of performance testing
There are several important benefits to conducting performance tests. Let’s look at them in more detail now.
Evaluating the speed and stability
First and foremost, you can validate how well your system runs, and whether it’s stable enough to handle the number of users that you assume will access it.
This is incredibly important, as page load times directly affect the bounce rate (the number of users that will close the page when they encounter problems) and conversion rate (the number of people who’ll decide to make an action on the site). For example, if a website loads for more than 5 seconds, the bounce rate goes up by 90%, and 53% of users are willing to leave a mobile site if it loads longer than three seconds. Of course, users also tend to spend more time on a website if specific pages load swiftly.
Ensuring user satisfaction
Since load times and stability are so important, conducting performance testing helps you ensure your service offers a good user experience.
And UX is of paramount importance – 88% of users are less likely to return to a website after they’ve had a bad experience with it. What’s more, 13% of customers will tell about such a bad experience to 15 other people, and 72% will share it with at least 6… I’m sure you can already see where this is going, can’t you?
Identifying and fixing underlying issues
The performance testing process can also help reveal serious issues with the design or key features of a website or application. It’s worth noting that finding such problems isn’t the main objective – this is what UX testing is for. However, some problems are directly related to performance, and testing is, by its very nature, based on using the solution.
Getting ready for a bigger scale
Even if it turns out that the system runs within established parameters – for now, at least – performance testing can offer you data that’ll be helpful in the future.
Every business needs to grow if it’s to be successful, and ensuring proper scalability can be quite problematic. If you conduct performance tests regularly, you’ll understand what your system is capable of. This means you’ll also be able to tell how much – and in what ways – it needs to evolve to be future-proof.
Performance testing tools
There are many different performance testing tools on the market. Some are used on the client side, and others on the server side. You can also divide them depending on the types of tests they were created for. There’s no point in listing them all, but I’ll mention some popular solutions below.
- JMeter – a trademark open-source load testing software created by the Apache company. It’s Java-based and it can be used to evaluate the performance metrics of many different websites and applications
- LoadNinja – a cloud-based performance testing platform that can be used to conduct sophisticated tests using a range of different metrics
- WebLoad – a load testing tool used for evaluating the performance of mobile applications and websites. It was created with enterprise-grade solutions in mind, and it can be used to simulate thousands of concurrent users. It’s a good option when you want to conduct some heavy load testing
- LoadRunner – another very well-recognized testing tool, currently developed by the MicroFocus company. In this case, the focus is on evaluating the end-to-end performance of applications
Performance testing tips
How it works at Pretius
A couple of words about how we conduct performance testing at Pretius, so you have proper context for the tips that I provide in this section of the article.
We mostly use JMeter for our tests. Our focus is on load tests, though the specifics can differ from one project to another. We test the end-user performance, usually, by following a specific scenario For example, I download the log-in page, send the log-in form, and when I’m logged in, I download the home page. I do all of this to see at which point – if any – the system starts to break. In many cases, tests are conducted on machines from outside of the application’s environment. This is done to simulate user interaction on multiple levels because sometimes it turns out that network bandwidth is the system’s bottleneck. Sometimes we also run tests on production servers at night – of course, these have to be approved by the client we conduct them for first.
Good practices and things to take note of
There are a couple of tips related to performance testing that I can give you based on my own experience. They might save you a headache or two.
- If you test on production, expect downtime – there are ways of mitigating this – for example, you can use stubs – special purpose software modules implemented for testing purposes that replace an existing called component. However, none of this is foolproof. If you test on production servers, you need to be ready for downtime because it probably will happen at one point or another. Plan this ahead, and schedule your tests at the right time (usually night)
- If your website/app has paid services, disable them or remember to use blacklists – I once had a situation where I received hundreds of paid SMS messages daily (over 2 000 in total) because the client forgot to add me to the blacklist. With prolonged tests and a couple of people engaged in them, such costs can add up considerably
- Run performance tests before deployment on production – there are many situations when you might want to repeat a performance test once your app or website is on production servers (for example, when you’re implementing a new feature, etc.). However, there are almost no scenarios where you wouldn’t want to conduct at least one performance test before initial deployment. Remembering this can save you a lot of money and frustration
- A small change can have huge consequences – you can never be sure what’ll turn out to be the bottleneck. Even a slight, seemingly insignificant configuration change can turn out to be a serious factor once the service is accessed by thousands of people. Be thorough in your work – it’s the only way
Performance testing is a must, especially in the case of systems and services that are going to be accessed by customers. Trying to save money by forgoing testing is one of the worst ideas you can come up with – sure, things may work fine without it for a while, but when there’s a crisis (and there will be, at one point or another), a sudden spike of users, or something else you aren’t ready for, it’ll turn out to be very costly for your business. Better safe than sorry, as the saying goes – and in this case, safe means “thoroughly tested”.
As you can see, Pretius developers have a great experience in conducting proper performance testing. If this is something you are struggling with right now, write us at email@example.com or use the contact form below. We’ll see what we can do and get back to you in 48 hours.