How FunTester Redefines Java API Testing and High‑Performance Load Benchmarking
This article walks through the design, evolution, and technical details of FunTester—a Java/Groovy‑based open‑source testing framework that unifies functional, automated, and performance testing, explains why existing tools like Postman and JMeter fall short, and outlines its distributed testing service and future roadmap.
FunTester is an open‑source testing framework built on Java and Groovy, aiming to provide a unified solution for functional, automated, and performance testing of HTTP‑based services. Its core workflow follows three steps: create an HTTP request, send the request, and parse the response.
Why FunTester Was Created
The author found major limitations in popular tools: Postman lacks automation and performance capabilities, while JMeter’s scripting and parameterization are cumbersome, requiring regular expressions and deep knowledge of its controllers. To avoid the high learning curve and inflexibility, a custom framework was built that leverages the familiarity of Java and the high compatibility of Groovy (over 95% Java syntax compatibility).
Key Features and Architecture
FunTester offers:
Simple script‑like execution of Java classes by merely changing the file extension.
Fully open‑source code hosted on Gitee (the repository was migrated there after initial releases).
Support for three testing dimensions: functional testing, automation of test cases, and performance testing with ready‑made templates.
Performance templates covering fixed‑thread, fixed‑RPS, timed, and mixed‑load scenarios, allowing users to plug in their own test logic.
Extensible project‑level capabilities where users can design custom signatures, parameterization, and validation logic.
Evolution Timeline
From 2018 to 2020 the framework progressed through three phases:
Exploration and early functional testing (2018‑19), focusing on wrapping HttpClient and building basic utilities.
Stabilization of automation features and introduction of performance testing templates (late 2019‑early 2020), after the author switched companies and could dedicate full time to testing.
Service‑oriented performance testing and distributed execution (2020 onward), including a micro‑service that receives test tasks via HTTP and a distributed runner capable of handling tens of thousands of QPS.
Distributed Performance Testing Service
The service consists of a control node that receives test jobs and dispatches them to multiple worker nodes (typically three in the current demo). It supports high concurrency (10 k–20 k QPS per node) and aggregates results for reporting. The underlying dependencies are minimal, requiring only the JDK and the FunTester libraries.
Practical Insights and Limitations
Key practical tips include mastering Java multithreading, understanding lock mechanisms, and recognizing that CPU becomes the bottleneck before memory in high‑load scenarios. The author also notes that fixed‑RPS models can produce significant measurement errors at very high loads, and that distributed execution helps mitigate this.
Resources
The source code and related projects are available on Gitee; readers are encouraged to explore the repository for the core framework, the distributed performance testing module, and example implementations.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
