It’s not new, web traffic is increasing by the minute. Streaming, e-commerce, banking… nowadays every simple activity requires a web access. The phenomenon reached a peak with the COVID which saw the rise of homeworking and lockdowns, thus accentuating further the already important increase.
As it is, every popular website is faced with the risk of overcapacity. And Load Testing is just what you need to avoid that! What is it? How can it help? Gatling tells you everything.
What is Load Testing
As a core definition, load testing is the practice of sending simulated traffic (typically HTTP) to a web server and measuring its capability to process the traffic and how. You literally load traffic on your server until something happens or not.
You can measure this capability, or performance, in a variety of ways:
- Check if the server respond in a timely manner, thus providing a satisfactory end-user experience.
- Assess the server’s resource utilization through metrics such as CPU, memory etc.
- Look for potential performance bottlenecks, such as a page that is particularly slow to load or an API that is slow to respond.
- Count the number and different types of errors that occur in the system when under varying levels of load.
- Test how many users the system can comfortably support simultaneously.
How do you load test
You perform a load test by executing specialist load-testing software on one or more computers. This software generates and transmits a large number of requests to a web server, using injectors, where the target application is running.
The load-testing software then measures the time taken for the server to respond to the requests and counts the number of errors that occur. Separate monitoring software work in conjunction to instrument the webserver and assess resources use.
Some distinct types of load tests that can be run are:
- Capacity test
Increase the load gradually on the system until you find the point that system degradation begins to occur.
- Soak test
Run a constant throughput to the system for an extended period (e.g. 24 hours), looking to identify issues such as memory leaks.
- Stress test
Assess how your application behaves when it receives a big spike in traffic, and determine how the system behaves and recovers after this spike subsides.
Some Load test vocabulary
Whatever type of load test or tests you eventually decide to execute, there are a few common terms and concepts that it is good to be aware of:
- System Throughput
The measure of how many transactions, or requests, the application can process over a specific period of time. Throughput is typically reported as requests per second. It gives a clear indication of the rate of traffic that the system will be able to handle.
- Response Time
How fast will the server respond when it is sent a request from the client? The response time is measured on the client side that sent the request, and is the time between the request being sent and the full response received from the server. This value is typically measured in milliseconds(ms), and is sometimes referred to as latency.
Response times that are collected from performance testing are often grouped into percentiles. You will notice that percentiles are typically recorded at various ranges such as the 50th, 70th and 90th percentile. For example, if your 70th percentile response time is 200ms, then 70% of transactions took 200ms or less to complete. Knowing how to read percentiles charts will give you a more accurate feel for what your end users will experience in performance, as compared to average response time which can vary greatly to the end user.
There much more to know about load testing and its related topics, such as injectors, CI/CD process or chaos experiments.
How can load testing help
You know the basics of load testing and how to interpret load tests now. Outside of just checking if your solution can handle heavy traffic, a load test can gives you answers about many subtopics:
- Will your application run efficiently and as expected once you release it into production? Because yes, a load test can be launched during the development process.
- Is the performance of the application satisfactory to provide a great user experience?
- Do we need to adjust the backend hardware of our system in order to support the application sufficiently? Can the designated hardware handle the expected load? In the end, web traffic has a lot to do with hardware and you have to check how your servers are doing in case of heavy load.
- Are there particular pages or areas of the application that can be tweaked, improved or modified? You can decipher your load test section by section, page by page, and uncover specific errors or optimization possibilities.
Remember, a bad-performing website can impact you business in many ways. Brand image, turnover,… your website is your store front and thus needs to be as perfect as possible.
Choose your load testing solution
Without conducting proper and effective load testing, it is difficult to confidently answer any of the above questions. Taking the risk on deploying an application into production that has not been sufficiently tested for performance introduces an undesirable level of risk. Better to mitigate that risk beforehand with robust and thorough load testing.
As it is, the choice of your solution will be motivated by its functionalities and its compatibility with your solution.
Gatling works with multiple continuous integration solutions such as Jenkins, Bamboo or TeamCity. Flexible and with a precise reporting capacity, it can be used open-source or with our business solution. Time to get started on load testing !