Load testing and its tools in a nutshell
Theoretically, any promising web site is a mass market product. That’s when the need for load testing arises: correct and stable operation testing while experiencing various loads. In this article we will briefly discuss load testing, its tools and list a simple example of a load test using JMeter.
Types of load tests
Load testing is a type of automated testing during which activity of a set number of users on a tested system is imitated. There are several types of load testing:
Performance test. It is used to test general productivity of a website on load.
Soak test. It is used to test websites productivity under sustained load.
Stress test. It is used to determine liveness of an application during peak load.
Load testing tools
LoadImpact - cloud load testing service. Gives you access to a distributed network of load buses, allows to imitate a load from 10 locations at the same time. Recording of use cases is possible by using Chrome extension or a proxy-recorder. For mobile application tests, load tests, simulating different conditions/speeds of a mobile network can be created. Use cases can be easily recorded as well using proxy recorder. Back-end information is available too, for example: processor usage, consumption of memory, disk and network I/O, plus some useful user metrics are available through Nagios plugins, using LoadImpact’s Server Metric Agents installed on your servers. Load Impact service is available in 2 versions: Free and Paid (subscription model). Paid version unlocks low level load tests, up to 100 users.
LoadStorm - is a web utility for load testing by CustomerCentrix. It’s a distributed application, using Amazon Web Services to scale compute capacity and bandwidth capacity when needed. Tests for mobile and web platforms can be created using this tool in a manner, that simulates a great number of different users with unique logins and different tasks.
In case you need a quick test for a local site,
There’s also a lot of various free and paid utilities, out of which I’d like to distinguish
Apache JMeter is a java application by Apache Software Foundation, made for load testing of a functional environment and productivity measuring. Initially developed for web application testing, but has since featured additional testing functions. May be used for productivity tests both for static and dynamic resources. May be also used for simulation of a heavy server and network load to test durability or general productivity under various load levels.
LoadRunner - is a HP utility (previously Mercury) used for load and stress testing of web and other applications. Supports a wide range of platforms and databases. Has a long list of network monitors, application monitors, server monitors to evaluate work of every component and tracking of narrow spots.
Silk Performer - is an enterprise class load testing tool by Microfocus (previously Borland, Segue). Can simulate work of a thousand users, supports a number of protocols and environments. Allows for predictions of a business environment behaviour before deployment, regardless of its size and complexity.
JMeter has modular structure and can be expanded with plugins. Main benefits are:
Cross-platform, can operate on any system running Java
Supports many out of the box protocols: HTTP, SMTP, POP3, LDAP, JDBC, FTP, JMS, SOAP, TCP
Many test report visualization methods
A capacity to feature continuous integration into one’s system
A simple example of a load test in JMeter
Once it is launched, a blank test plan will appear (fig.1).
In order to create a working test plan at least one Thread Group and 1 Samper (RMB click on plan) are to be added. Thread Group - is a group where user figures for the selected load script are listed (fig.2).
HTTP request can be added using sampler (fig.3).
1) Add Thread Group, using default options, 1 user/1 execution of a test script.
2) Choose HTTP request when adding sampler. Add site address in the Server Name or IP field and the path to the page. (fig. 4).
3) To view test results add Listener > View Results Tree (fig. 5)
Launch a test (application will offer you to save the script you’ve created, so we should) and browse the results in the View Results Tree.
In case all went smoothly, Status column will boast a green mark.
Production release will experience a spike in load sooner or later, even early on, if poorly configured. To minimize poor performance risks, it is essential to include load testing in the test stack. This will allow you to define early on such figures as:
planned and peak performance
durability during continuous loads
- optimal system configuration