JMeter is a popular open source tool for load
testing, it is a 100% pure Java desktop
application. It requires JDK 5 or
higher. JMeter has many useful modeling features such as thread group, timer,
and HTTP sampler elements. This article complements the JMeter User's Manual
and provides guidelines for using some of the JMeter modeling elements to
develop a quality test script. Apache JMeter is designed to simulate
execution of requests over variety of protocols (the most widely used is
HTTP/HTTPS) including web, TCP, JDBC, LDAP, JMS, SMTP, POP, etc.
Apache
JMeter may be used to test performance both on static and dynamic resources
(Webservices (SOAP/REST), Web dynamic languages - PHP, Java, ASP.NET, Files,
etc. -, Java Objects, Data Bases and Queries, FTP Servers and more). It can be
used to simulate a heavy load on a server, group of servers, network or object
to test its strength or to analyze overall performance under different load
types. You can use it to make a graphical analysis of performance or to test
your server/script/object behavior under heavy concurrent load.
Apache JMeter features include:
Ability
to load and performance test many different server/protocol types:
Web
- HTTP, HTTPS
SOAP
/ REST
FTP
Database
via JDBC
LDAP
Message-oriented
middleware (MOM) via JMS
Mail
- SMTP(S), POP3(S) and IMAP(S)
MongoDB
(NoSQL)
Native
commands or shell scripts
TCP
Complete
portability and 100% Java purity.
Full
multithreading framework allows concurrent sampling by many threads and
simultaneous sampling of different functions by separate thread groups.
Careful
GUI design allows faster Test Plan building and debugging.
Caching
and offline analysis/replaying of test results.
Highly
Extensible core:
Pluggable
Samplers allow unlimited testing capabilities.
Several
load statistics may be chosen with pluggable timers.
Data
analysis and visualization plugins allow great extensibility as well as
personalization.
Functions
can be used to provide dynamic input to a test or provide data manipulation.
Scriptable
Samplers (BeanShell, BSF-compatible languages and JSR223-compatible languages)
JMeter
is not a browser. As far as web-services and remote services are concerned,
JMeter looks like a browser (or rather, multiple browsers); however JMeter does
not perform all the actions supported by browsers. In particular, JMeter does
not execute the Javascript found in HTML pages. Nor does it render the HTML
pages as a browser does (it's possible to view the response as HTML etc., but
the timings are not included in any samples, and only one sample in one thread
is ever viewed at a time).