2017-10-25 21:15:15 +08:00
|
|
|
<h1 align="center"><img src="https://jmeter.apache.org/images/logo.svg" alt="Apache JMeter logo" /></h1>
|
2020-07-18 00:28:53 +08:00
|
|
|
|
|
|
|
An Open Source Java application designed to measure performance and load test applications.
|
|
|
|
|
|
|
|
By The Apache Software Foundation
|
2017-05-07 05:29:22 +08:00
|
|
|
|
2019-06-17 01:34:31 +08:00
|
|
|
[](https://travis-ci.org/apache/jmeter/)
|
|
|
|
[](https://codecov.io/gh/apache/jmeter)
|
2020-07-18 00:28:53 +08:00
|
|
|
[](https://www.apache.org/licenses/LICENSE-2.0.html)
|
2018-01-22 05:33:48 +08:00
|
|
|
[](https://stackoverflow.com/questions/tagged/jmeter)
|
2018-02-12 06:40:42 +08:00
|
|
|
[](https://maven-badges.herokuapp.com/maven-central/org.apache.jmeter/ApacheJMeter)
|
|
|
|
[](https://www.javadoc.io/doc/org.apache.jmeter/ApacheJMeter_core)
|
2018-01-22 05:33:48 +08:00
|
|
|
[](https://twitter.com/intent/tweet?text=Powerful%20load%20testing%20with%20Apache%20JMeter:&url=https://jmeter.apache.org)
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
## What Is It?
|
|
|
|
|
|
|
|
Apache JMeter can measure performance and load test static and dynamic web applications.
|
|
|
|
|
|
|
|
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.
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|

|
2016-09-28 01:04:21 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
## Features
|
2018-01-21 22:19:38 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
Complete portability and 100% Java.
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
Multi-threading allows concurrent sampling by many threads and
|
|
|
|
simultaneous sampling of different functions by separate thread groups.
|
|
|
|
|
|
|
|
### Protocols
|
|
|
|
|
|
|
|
Ability to load and performance test many applications/server/protocol types:
|
2019-08-03 19:05:38 +08:00
|
|
|
|
|
|
|
- Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET,...)
|
|
|
|
- SOAP / REST Webservices
|
|
|
|
- FTP
|
|
|
|
- Database via JDBC
|
|
|
|
- LDAP
|
|
|
|
- Message-oriented Middleware (MOM) via JMS
|
|
|
|
- Mail - SMTP(S), POP3(S) and IMAP(S)
|
|
|
|
- Native commands or shell scripts
|
|
|
|
- TCP
|
|
|
|
- Java Objects
|
2017-12-09 23:07:01 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
### IDE
|
2017-12-09 23:07:01 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
Fully featured Test IDE that allows fast Test Plan **recording**
|
|
|
|
(from Browsers or native applications), **building** and **debugging**.
|
2017-12-09 23:07:01 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
### Command Line
|
2017-12-09 23:07:01 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
[Command-line mode (Non GUI / headless mode)](https://jmeter.apache.org/usermanual/get-started.html#non_gui)
|
|
|
|
to load test from any Java compatible OS (Linux, Windows, Mac OSX, ...)
|
2018-01-21 22:29:14 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
### Reporting
|
2017-12-09 23:07:01 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
A complete and ready to present [dynamic HTML report](https://jmeter.apache.org/usermanual/generating-dashboard.html)
|
2018-01-21 22:29:14 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|

|
|
|
|
|
|
|
|
[Live reporting](https://jmeter.apache.org/usermanual/realtime-results.html)
|
|
|
|
into 3rd party databases like InfluxDB or Graphite
|
2017-12-09 23:07:01 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|

|
2016-09-28 01:04:21 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
### Correlation
|
2017-12-09 23:07:01 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
Easy correlation through ability to extract data from most popular response formats,
|
|
|
|
[HTML](https://jmeter.apache.org/usermanual/component_reference.html#CSS/JQuery_Extractor),
|
|
|
|
[JSON](https://jmeter.apache.org/usermanual/component_reference.html#JSON_Extractor),
|
|
|
|
[XML](https://jmeter.apache.org/usermanual/component_reference.html#XPath_Extractor) or
|
|
|
|
[any textual format](https://jmeter.apache.org/usermanual/component_reference.html#Regular_Expression_Extractor)
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
### Highly Extensible Core
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2019-08-03 19:05:38 +08:00
|
|
|
- Pluggable Samplers allow unlimited testing capabilities.
|
2020-07-18 00:28:53 +08:00
|
|
|
- **Scriptable Samplers** (JSR223-compatible languages like Groovy).
|
|
|
|
- Several load statistics can be chosen with **pluggable tiers**.
|
|
|
|
- Data analysis and **visualization plugins** allow great extensibility and personalization.
|
|
|
|
- Functions can be used to provide dynamic input to a test or provide data manipulation.
|
|
|
|
- Easy Continuous Integration via 3rd party Open Source libraries for Maven, Gradle and Jenkins.
|
2016-09-28 01:04:21 +08:00
|
|
|
|
|
|
|
## The Latest Version
|
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
Details of the latest version can be found on the
|
|
|
|
[JMeter Apache Project web site](https://jmeter.apache.org/)
|
2016-09-28 01:04:21 +08:00
|
|
|
|
|
|
|
## Requirements
|
|
|
|
|
|
|
|
The following requirements exist for running Apache JMeter:
|
|
|
|
|
2019-08-03 19:05:38 +08:00
|
|
|
- Java Interpreter:
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2019-08-03 19:05:38 +08:00
|
|
|
A fully compliant Java 8 Runtime Environment is required
|
|
|
|
for Apache JMeter to execute. A JDK with `keytool` utility is better suited
|
|
|
|
for Recording HTTPS websites.
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2019-08-03 19:05:38 +08:00
|
|
|
- Optional jars:
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2019-08-03 19:05:38 +08:00
|
|
|
Some jars are not included with JMeter.
|
2019-10-03 05:42:08 +08:00
|
|
|
If required, these should be downloaded and placed in the lib directory
|
2019-08-03 19:05:38 +08:00
|
|
|
- JDBC - available from the database supplier
|
|
|
|
- JMS - available from the JMS provider
|
2020-07-18 00:28:53 +08:00
|
|
|
- [Bouncy Castle](https://www.bouncycastle.org/) -
|
2019-08-03 19:05:38 +08:00
|
|
|
only needed for SMIME Assertion
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2019-08-03 19:05:38 +08:00
|
|
|
- Java Compiler (*OPTIONAL*):
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2020-08-20 23:58:08 +08:00
|
|
|
A Java compiler is not needed since the distribution includes a
|
2019-08-03 19:05:38 +08:00
|
|
|
precompiled Java binary archive.
|
|
|
|
> **Note** that a compiler is required to build plugins for Apache JMeter.
|
2016-09-28 01:04:21 +08:00
|
|
|
|
|
|
|
## Installation Instructions
|
|
|
|
|
2019-08-03 19:05:38 +08:00
|
|
|
> **Note** that spaces in directory names can cause problems.
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2019-08-03 19:05:38 +08:00
|
|
|
- Release builds
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2019-08-03 19:05:38 +08:00
|
|
|
Unpack the binary archive into a suitable directory structure.
|
2016-09-28 01:04:21 +08:00
|
|
|
|
|
|
|
## Running JMeter
|
|
|
|
|
2017-02-06 04:50:04 +08:00
|
|
|
1. Change to the `bin` directory
|
|
|
|
2. Run the `jmeter` (Un\*x) or `jmeter.bat` (Windows) file.
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2017-02-06 04:50:04 +08:00
|
|
|
### Windows
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2020-08-20 23:58:08 +08:00
|
|
|
For Windows, there are also some other scripts which you can drag-and-drop
|
2017-02-06 04:50:04 +08:00
|
|
|
a JMX file onto:
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2019-08-03 19:05:38 +08:00
|
|
|
- `jmeter-n.cmd` - runs the file as a non-GUI test
|
|
|
|
- `jmeter-n-r.cmd` - runs the file as a non-GUI remote (client-server) test
|
|
|
|
- `jmeter-t.cmd` - loads the file ready to run it as a GUI test
|
2016-09-28 01:04:21 +08:00
|
|
|
|
|
|
|
## Documentation
|
|
|
|
|
|
|
|
The documentation available as of the date of this release is
|
2019-08-03 19:05:38 +08:00
|
|
|
also included, in HTML format, in the [printable_docs](printable_docs) directory,
|
|
|
|
and it may be browsed starting from the file called [index.html](printable_docs/index.html).
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2017-08-27 01:55:35 +08:00
|
|
|
## Reporting a bug/enhancement
|
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
See [Issue Tracking](https://jmeter.apache.org/issues.html).
|
2017-08-27 01:55:35 +08:00
|
|
|
|
2016-09-28 01:04:21 +08:00
|
|
|
## Build instructions
|
|
|
|
|
2017-02-06 04:50:04 +08:00
|
|
|
### Release builds
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2017-02-06 04:50:04 +08:00
|
|
|
Unpack the source archive into a suitable directory structure.
|
|
|
|
Most of the 3rd party library files can be extracted from the binary archive
|
|
|
|
by unpacking it into the same directory structure.
|
2016-09-28 01:04:21 +08:00
|
|
|
|
|
|
|
Any optional jars (see above) should be placed in `lib/opt` and/or `lib`.
|
|
|
|
|
2017-02-06 04:50:04 +08:00
|
|
|
Jars in `lib/opt` will be used for building JMeter and running the unit tests,
|
2016-09-28 01:04:21 +08:00
|
|
|
but won't be used at run-time.
|
|
|
|
|
|
|
|
_This is useful for testing what happens if the optional jars are not
|
|
|
|
downloaded by other JMeter users._
|
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
If you are behind a proxy, you can set a few build properties in
|
2020-08-20 23:58:08 +08:00
|
|
|
`~/.gradle/gradle.properties` for Gradle to use the proxy:
|
2017-03-18 05:20:45 +08:00
|
|
|
|
2019-08-03 19:05:38 +08:00
|
|
|
```properties
|
2019-08-04 23:48:41 +08:00
|
|
|
systemProp.http.proxyHost=proxy.example.invalid
|
|
|
|
systemProp.http.proxyPort=8080
|
|
|
|
systemProp.http.proxyUser=your_user_name
|
|
|
|
systemProp.http.proxyPassword=your_password
|
|
|
|
systemProp.https.proxyHost=proxy.example.invalid
|
|
|
|
systemProp.https.proxyPort=8080
|
|
|
|
systemProp.https.proxyUser=your_user_name
|
|
|
|
systemProp.https.proxyPassword=your_password
|
2017-03-18 05:20:45 +08:00
|
|
|
```
|
|
|
|
|
2017-02-06 04:50:04 +08:00
|
|
|
### Test builds
|
|
|
|
|
2019-08-03 19:05:38 +08:00
|
|
|
JMeter is built using Gradle.
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
The following command builds and tests JMeter:
|
2016-09-28 01:04:21 +08:00
|
|
|
|
|
|
|
```sh
|
2020-07-18 00:28:53 +08:00
|
|
|
./gradlew build
|
2016-09-28 01:04:21 +08:00
|
|
|
```
|
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
If the system does not have a GUI display then:
|
2019-10-28 17:35:27 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
```sh
|
|
|
|
./gradlew build -Djava.awt.headless=true
|
|
|
|
```
|
|
|
|
|
|
|
|
The output artifacts (jars, reports) are placed in the `build` folder.
|
2019-10-28 17:35:27 +08:00
|
|
|
For instance, binary artifacts can be found under `src/dist/build/distributions`.
|
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
The following command would compile the application and enable you to run `jmeter`
|
2020-08-20 23:58:08 +08:00
|
|
|
from the `bin` directory.
|
|
|
|
|
|
|
|
> **Note** that it completely refreshes `lib/` contents,
|
|
|
|
so it would remove custom plugins should you have them installed.
|
2016-09-28 01:04:21 +08:00
|
|
|
|
|
|
|
```sh
|
2019-10-28 17:35:27 +08:00
|
|
|
./gradlew createDist
|
2016-09-28 01:04:21 +08:00
|
|
|
```
|
|
|
|
|
2020-08-20 23:58:08 +08:00
|
|
|
Alternatively, you could get Gradle to start the GUI:
|
2019-10-28 17:35:27 +08:00
|
|
|
|
|
|
|
```sh
|
|
|
|
./gradlew runGui
|
|
|
|
```
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
## Developer Information
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
Building and contributing is explained in details at
|
|
|
|
[building JMeter](https://jmeter.apache.org/building.html)
|
2019-10-26 19:44:17 +08:00
|
|
|
and [CONTRIBUTING.md](CONTRIBUTING.md). More information on the tasks available for
|
|
|
|
building JMeter with Gradle is available in [gradle.md](gradle.md).
|
2017-10-26 02:42:45 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
The code can be obtained from:
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2020-11-25 15:07:46 +08:00
|
|
|
- https://github.com/apache/jmeter
|
2020-07-18 00:28:53 +08:00
|
|
|
- https://gitbox.apache.org/repos/asf/jmeter.git
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
## Licensing and Legal Information
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2017-02-06 04:50:04 +08:00
|
|
|
For legal and licensing information, please see the following files:
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2019-08-03 19:05:38 +08:00
|
|
|
- [LICENSE](LICENSE)
|
|
|
|
- [NOTICE](NOTICE)
|
2016-09-28 01:04:21 +08:00
|
|
|
|
|
|
|
## Cryptographic Software Notice
|
|
|
|
|
|
|
|
This distribution may include software that has been designed for use
|
|
|
|
with cryptographic software. The country in which you currently reside
|
|
|
|
may have restrictions on the import, possession, use, and/or re-export
|
|
|
|
to another country, of encryption software. BEFORE using any encryption
|
|
|
|
software, please check your country's laws, regulations and policies
|
|
|
|
concerning the import, possession, or use, and re-export of encryption
|
2020-07-18 00:28:53 +08:00
|
|
|
software, to see if this is permitted. See <https://www.wassenaar.org/>
|
2016-09-28 01:04:21 +08:00
|
|
|
for more information.
|
|
|
|
|
|
|
|
The U.S. Government Department of Commerce, Bureau of Industry and
|
|
|
|
Security (BIS), has classified this software as Export Commodity
|
|
|
|
Control Number (ECCN) 5D002.C.1, which includes information security
|
|
|
|
software using or performing cryptographic functions with asymmetric
|
|
|
|
algorithms. The form and manner of this Apache Software Foundation
|
|
|
|
distribution makes it eligible for export under the License Exception
|
|
|
|
ENC Technology Software Unrestricted (TSU) exception (see the BIS
|
|
|
|
Export Administration Regulations, Section 740.13) for both object
|
|
|
|
code and source code.
|
|
|
|
|
|
|
|
The following provides more details on the included software that
|
|
|
|
may be subject to export controls on cryptographic software:
|
|
|
|
|
2019-08-03 19:05:38 +08:00
|
|
|
Apache JMeter interfaces with the
|
|
|
|
Java Secure Socket Extension (JSSE) API to provide
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2019-08-03 19:05:38 +08:00
|
|
|
- HTTPS support
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2019-08-03 19:05:38 +08:00
|
|
|
Apache JMeter interfaces (via Apache HttpClient4) with the
|
|
|
|
Java Cryptography Extension (JCE) API to provide
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2019-08-03 19:05:38 +08:00
|
|
|
- NTLM authentication
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2019-08-03 19:05:38 +08:00
|
|
|
Apache JMeter does not include any implementation of JSSE or JCE.
|
2016-09-28 01:04:21 +08:00
|
|
|
|
2020-07-18 00:28:53 +08:00
|
|
|
## Thanks
|
2020-07-09 19:12:37 +08:00
|
|
|
|
2019-05-21 16:36:51 +08:00
|
|
|
**Thank you for using Apache JMeter.**
|