Load Testing your Applications with Apache JMeter

Preface

JMeter from the Apache Jakarta project is a tool for load testing client/server applications. There are many other such tools for load testing on the market, but you will probably find that the professional ones like WinRunner are expensive to purchase. Thus, the benefits from using a simple tool like JMeter are:

It’s free!

It’s easy to use. It has a simple and intuitive GUI. This encourages you to use it from the start while you’re developing your application

It’s open source. You may modify it or add new features--if you have the time and skills

The drawbacks are

It’s open source! There’s no guarantee of support or further development. However, I don’t consider this a real problem with a tool like JMeter, which easily can be replaced by another tool.

Getting "correct" response times from JMeter forces you to understand how to make a realistic client/server setup. If you’re not careful you might end up measuring some incidental bottleneck, like your own workstation’s capacity. On the other hand, I guess that you’d have to consider things like this with any tool!

If you’re interested in load testing or software testing tools in general then a good place to start is ApTest (try the "links" link for example).

Introduction

In this article we will take a quick look into JMeter’s capabilities in the web application and web service area, but, let me mention that JMeter can also handle FTP and JDBC requests. If you need more than this, and you’re a skilled Java programmer, it’s possible to build and add your own "samplers" to JMeter.

Our first step will be to give you a quick introduction on how to use JMeter. Then we’ll put JMeter to work on a couple of applications, where it will be quite interesting to compare the results. The setup I’ll show includes letting JMeter create a test script by picking up the communication between a browser and the web server. Finally I’ll show how to run JMeter remotely, which means that you split JMeter into a client part and a server part and run them on separate computers.

I can’t possibly cover all features in JMeter. There is a very nice User’s Manual in the JMeter download, covering all the tools and features (including a couple more features that aren’t fully implemented!). This is where I’d recommend digging for more information if you’re interested.