Load testing and its tools in a nutshell

Load testing and its tools in a nutshell

load

Foreword

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

There are many different tools to perform load testing. For quick, simple tests one can use online services such as  Load Impact, LoadStorm. Just paste a website URL and you are good to start tests.

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, ApacheBench is a perfect match. As a rule, it is included in many Apache builds and enables execution of command line requests. For example,   ab -n 100 -c 10   http://www.example.com/ request will execute 100 HTTP GET queries, 10 at a time.

There’s also a lot of various free and paid utilities, out of which I’d like to distinguish Apache JMeter.

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.

Jmeter is a great alternative for such proprietary solutions like LoadRunner and Silk Performer.

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:

  • Convenient GUI

  • 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

Since JMeter is a Java application, installation of the latest version of Java SE Development Kit as well as JMeter itself are needed to get started.

Once it is launched, a blank test plan will appear (fig.1).

914b9abc0a.jpg

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).

4d3d8e4d86.jpg

fig.2

HTTP request can be added using sampler (fig.3).

15972278eb.jpg

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).

0c6f5c6413.jpg

fig.4

3) To view test results add Listener > View Results Tree (fig. 5)

daa9841641.jpg

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.
 

In conclusion

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

0 comments

Restricted HTML

  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.