BreakTest
BreakTest is a modern, JMeter-compatible performance testing tool.
It started as an independent fork of Apache JMeter and continues the familiar
JMX workflow with a leaner runtime, current protocols, better debugging, and a
faster development loop. Existing JMeter test plans remain important, but
BreakTest is not intended to be a frozen copy of JMeter.
Why BreakTest Exists
Apache JMeter gave the performance testing community a durable model: test
plans, samplers, controllers, assertions, extractors, listeners, and a file
format people can keep in version control.
BreakTest keeps that useful model and moves the runtime forward:
- lower memory and CPU pressure for large HTTP tests
- HTTP/2 and a modern HTTP client stack
- Java 21+ and virtual-thread support
- a more modern GUI with simple light/dark themes
- better GUI feedback while building, debugging, and repairing scripts
- safer loading of old plans and plugin-heavy JMX files
- AI-assisted scripting with Codex, Claude Code, Cursor Agent, Gemini CLI, Pi Code, OpenCode, Copilot CLI, and MCP workflows
- an open-source Community edition that can be scaled by BreakTest Enterprise when one
machine is no longer enough
Compared with the upstream baseline this work has already shown about 50%
lower memory usage, with CPU reductions around 20-50% depending on workload,
test shape, and runtime conditions.
BreakTest And BreakTest Enterprise
BreakTest Community is the open-source desktop and runtime distribution,
licensed under Apache-2.0. Commercial use, modification, redistribution, and
hosting are permitted subject to that license's terms.
BreakTest Enterprise is the paid shell around scaled execution and analysis. It
runs BreakTest, JMeter, and k6 tests across your own infrastructure with
distributed load generators, realtime results, raw data retention, reports, SLO
validation, team workflows, and AI-assisted analysis.
BreakTest Enterprise is a separate product under a commercial license. Its
proprietary components are not covered by the Community Apache-2.0 license.
Community use, including commercial use, does not require an Enterprise license.
What Is New Compared With JMeter 5.6.3
BreakTest is based on the JMeter workflow, but it makes deliberate changes where
that helps day-to-day performance engineering. The initial Community
release is not just a rename: it includes protocol, runtime, GUI, AI scripting,
debugging, and migration work that has landed across the BreakTest PR series.
Modern HTTP Runtime
- Apache HttpClient 5 is the active HTTP sampler path.
- HTTP/2 is first-class, including negotiated fallback, HTTP/2 preferred
selection, async execution, connect-time reporting, and file upload fixes.
- HTTP/3 over QUIC is available as a beta on Java 27+, with explicit HTTP/3
selection and optional browser-like Alt-Svc upgrades for default samplers.
- HTTP/2 resource usage is lower: reactor threads are limited by default, client
rebuilds are avoided when the same user continues, and parallel samplers reuse
HTTP state deterministically.
- HTTP/2 closed-session retry handling covers common HC5 connection-closure
failures without reusing dead multiplexed sessions.
- NTLM authentication works on the HttpClient 5 path, including variable
resolution before async challenge callbacks.
- Modern response decoding includes gzip, deflate, Brotli, and Zstandard.
- Timeout errors are reported more clearly, with expected connect/response
timeouts shown as concise messages instead of noisy stack traces.
- HttpClient 4 runtime jars are still bundled for legacy plugin compatibility,
while the built-in HTTP Request sampler stays on the modern client path.
Lower Resource Usage
- Lazy response decompression avoids paying decompression cost unless response
data is actually inspected.
- Response retention modes can store compressed data, discard successful bodies,
keep only failing bodies, or retain checksums instead of full payloads.
- Lightweight test-plan cloning reduces per-thread object churn for large plans.
- Per-sample metadata is lazy, so rich diagnostics are only stored when
listeners such as View Results Tree need them.
- Header merging, temporary property handling, and per-thread scratch buffers
reduce hot-path allocations.
- Java 21+ and virtual threads are used where they reduce runtime overhead.
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗