Apache JMeter Performance Testing Tool

JMeter is an open source Apache product that you can use to load test any of the following:

  • HTTP, HTTPS
  • web services
  • FTP
  • Database via JDBC
  • LDAP
  • Message-oriented middleware (MOM) via JMS
  • Mail (e.g. SMTP)
  • MongoDB
  • Native commands or shell scripts
  • TCP connections
  • (…plus there are lots of plugins to other products…)

Here I show some of the screens to illustrate the basic product, since seeing that is easier than reading about it. Below that I list some of the plug-ins that are available.  Those plugins make the product more comprehensive and extend it to more platforms.

JMeter Screens

Like most other Java-based Apache tools, you simply click on a file on the file system (as opposed to selecting it from the Windows Start menu) to start the program.  It this case the file name is jmeter.bat.

Here is the screen that pops up when you do that.  The first screen is where you create test plans.

JMeter1

Below you enter the number of threads (users) to execute simultaneously within each thread group.  Plus you can have multiple thread groups. Each thread group can exercise a different function, like an LDAP search or send a SOAP message.  Loop count means just that: how many times to run this thread group.

JMeter2

Here are the different samples that you can pick from.  Samplers is the same as protocol, e.g. ftp, http, ldap, and so forth. JMeter uses that name “sample;”  “connectors” probably would have been clearer.

JMeter3

In the case of volume testing a web site, you enter the HTTP GET or POST information here.

JMeter4

And here are the results with the latency and ping time shown in milliseconds plus the test results.

JMeter5

JMeter Plugins

Since JMeter is an open source Apache project, developers are free to write and contribute plugins.  You download them from here http://jmeter-plugins.org/

Some of these include:

Standard

  • Graphs: perfmon metrics collection, active threads over time, response time, transactions per second, server hits
  • Thread groups and listeners
  • Command line graph plotting tool
  • Inter-thread communications

Hadoop

  • HBase
  • Apache HDFS (Hadoop Distributed File System) operations
  • Hadoop Job Tracker
  • Hadoop Crud (create, update, and delete)
  • HBase (HBase gives random read-write ability to Hadoop, making it like a database.)

Extras that required the installation of additional libs (jars)

  • JSON to XML convertor.  This would be useful with SOAP.
  • JMS
  • REST, since we no longer need SOAP
  • (…)

Extras that do not require additional libs (jars)

  • Dbmon
  • UDP
  • TCP
  • XML post processor
  • Transaction throughput versus threads
  • (…)

 Webdriver

These emulate different web browsers.  Not all HTML and JavaScript works on all browsers, so it is necessary to test web apps using the different browsers. These plugins let you do that without having those.  Notice that IE is not listed below, as it has steadily lost market share to Firefox and Chrome.

  • Webdriver sampler
  • AndroidDriverConfig
  • ChromeDriverConfig
  • FirefoxDriverConfig
  • HTMLUnitDriverConfig

As you can see there are so many connectors (called samplers) that you can make simple test or quite complex ones.  JMeter would be a good tool to give to your developers and testers to try out, if they are not already using it.