The Grinder is a free and open source load testing framework that makes it easy to run a distributed test using many load injector machines.
Test scripts are written in Jython, and HTTP scripts can be recorded easily from a browser session.
Here are some key features of "The Grinder":
· Load Testing determines if an application can support a specified load (for example, 500 concurrent users) with specified response times. Load Testing is used to create benchmarks.
· Capacity Testing determines the maximum load that an application can sustain before system failure.
· Functional Testing proves the correct behaviour of an application.
· Stress Testing is load testing over an extended period of time. Stress Testing determines if an application can meet specified goals for stability and reliability, under a specified load, for a specified time period.
· The Grinder is distributed under a BSD style license.
· The Grinder can simulate web browsers and other devices that use HTTP, and HTTPS.
· The Grinder can be used to test Web Service interfaces using protocols such as SOAP and XML-RPC.
· The Grinder can be used to test databases using JDBC.
· The Grinder can be used to test RPC and MOM based systems using protocols such as IIOP, RMI/IIOP, RMI/JRMP, and JMS.
· Other Internet protocols The Grinder can be used to test systems that utilise other protocols such as POP3, SMTP, FTP, and LDAP.
· The Grinder Architecture
· Goal Minimize system resource requirements while maximizing the number of test contexts ("virtual users").
· Multi-threaded, multi-process Each test context runs in its own thread. The threads can be split over many processes depending on the requirements of the test and the capabilities of the load injection machine.
· The Grinder makes it easy to coordinate and monitor the activity of processes across a network of many load injection machines from a central console.
· The Grinder typically can support several hundred HTTP test contexts per load injection machine. (The number varies depending on the type of test client). More load injection machines can be added to generate bigger loads.
· Console
· 100% Java Swing user interface.
· Worker processes can be started, stopped and reset from one central console.
· Process monitoring Dynamic display of current worker processes and threads.
· Internationalized and Localized English, French, Spanish, and German translations are supplied. Users can add their own translations.
· Script editing Central editing and management of test scripts.
· Statistics, Reports, Charts
· Pre-defined charts for response time, test throughput. Display the number of invocations, test result (pass/fail), average, minimum and maximum values for response time and tests per second for each test.
· Collates data from worker processes. Data can be saved for import into a spreadsheet or other analysis tool.
· Instrument anything The Grinder records statistics about the number of times each test has been called and the response times achieved. Any part of the test script can be marked as a test.
· Scripts can declare their own statistics and report against them. The values will appear in the console and the data logs. Composite statistics can be specified as expressions involving other statistics.
· Script
· Scripts can be created by recording actions of a real user using the TCP Proxy. The script can then be customized by hand.
Requirements:
· Java
What's New in This Release: [ read full changelog ]
· Fix bug 2913297 - Memory leak in SSLControlImplementation. Thanks to
· Guido Serra for the report.
· Fix bug 1619450 - HTTPClient.TestCookie.testParse unit test fails.
· Thanks to amachang for re-opening this bug and providing a patch.
· Fix bug 2911790 - HTTP filter generates invalid code for Jython 2.5+.
· Thanks to the anonymous reporter.
· Fix bug 2921612 - DCR instrumentation did not work with
· HTTPRequest. Thanks to Anil Jacob for the report.
· Fulfil feature request 2914703 - Multipart form data support. Thanks
· to Hitoshi Amano for the request and the implementation.
· Fix bug 2919190 - setTimeout method does not effect read timeouts.
· Thanks to Hitoshi Amano for the report and the fix.
· Fulfil feature request 2923975 - added valuesFromHiddenInput() and
· valuesFromBodyURI() methods to HTTPUtilities. Thanks to Anil Jacob
· for the request.
· Fulfil feature request 2841789 - added valueFromBodyInput() and
· valuesFromBodyInput() methods to HTTPUtilities. Thanks to Satheesh
· Babu Vattekkat for the r...