Open Source Automated Test Tools Written in Java

Share the article!

Here’s another category that I’m having a tough time keeping track off. That is automated test tools written in open source java. Special emphasis on the word “automated“, hopefully most of these tools are point and shoot, afterall why create more work for oneself!

I’ve deliberately tried to avoid including a tool that’s used for unit testing. You can find those tools in the website. Also, my apologies for mixing up load and functional testing tools, however you might discern that both areas do overlap. Afterall, stress testing without exercising functionality and vice versa doesn’t quite cut the mustard.

  1. MaxQ – MaxQ is a free web functional testing tool. It includes an HTTP proxy that records your test script, and a command line utility that can be used to playback tests. The proxy recorder automatically stores variables posted to forms, so you don’t have to write that stuff by hand.
  2. Abbot – The Abbot framework is a Java library for GUI unit testing and functional testing. It provides methods to reproduce user actions and examine the state of GUI components. The framework may be invoked directly from Java code or accessed without programming through the use of scripts.
    There are two ways of using this framework. One is to write the tests directly in Java code. The other is to use a script to control the event playback and testing, which is more suitable to integration/functional testing. A script editor is provided to facilitate the latter form of test.
  3. Pounder – Pounder is a utility for automating Java GUI tests. It allows developers to dynamically load GUI’s, record scripts, and then use those scripts in a test harness. Pounder differentiates itself from other utilities by allowing you to examine the results of a test run in source, while maintaining a separate GUI script that can be re-recorded if necessary.
  4. Grinder – The Grinder is a Javaxe2x84xa2 load-testing framework. The Grinder makes it easy to orchestrate the activities of a test script in many processes across many machines, using a graphical console application.
  5. Jameleon – Jameleon is an acceptance-level automated testing tool that separates applications into features and allows those features to be tied together independently, creating test-cases. These test-cases can then be data-driven and executed against different environments.
  6. GUITAR – GUI Testing Framework that presents a unified solution to the GUI testing problem. Emphasis has been on developing new event-based tools and techniques for various phases of GUI testing.
  7. Solex – Solex is a Web application testing tool built as a plug-in for the Eclipse IDE. It provides functions to record a client session, adjust it according to various parameters and replay it later typically in order to ensure non regression of the application’s behaviour.
  8. WebScarab – WebScarab is a loose suite of web application security assessment tools. It is designed to be a tool for technical auditors who want to expose some of the workings of an application and automate some of the tests, whilst still having the flexibility to force the tests to execute the way the auditor wishes.
  9. JOSIT – JOSIT (Java Observation Simulation Inspection Toolkit) is an open Application Programmer’s Interface for instrumenting applications written in the Java programming language.
  10. Canoo WebTest – Canoo WebTest is a free open source tool for automated testing of web applications. It calls web pages and verifies the results, giving comprehensive reports on success and failure.
  11. TestMaker – TestMaker is the complete test and monitoring solution that software developers, QA technicians and IT managers use everyday to solve scalability, functionality and performance problems in Web-enabled applications, especially Web Services. TestMaker makes you immediately productive with an integrated test environment and test agent Recorder.
  12. Enterprise Web Test – Enterprise Web Test allows Java programmers to write re-usable tests for web applications that, unlike HttpUnit, “drive” the actual web browser on the actual platform they intend to support.
  13. Marathon – The long-term vision for Marathon is to keep the focus of a tool that specializes in automated java Swing testing. Implemented by folks at Thoughtworks.
  14. DBMonster – DBMonster is a tool which helps database application developers with tuning the structure of the database, tuning the usage of indexes, and testing the application performance under heavy database load. DBMonster generates as much random test data as you wish and puts it into SQL database. It provides a very pluggable interface and is trivial to use.
  15. JSpider – A highly configurable and customizable Web Spider engine. Check your site for errors. Outgoing and/or internal link checking. Analyze your site structure.
  16. Anteater – Anteater is a testing framework designed around Ant. It provides an easy way to write tests for checking the functionality of a Web application or of an XML Web service. Built-in webserver allows testing of HTTP requests as well as responses. Suitable for non-interactive, cron-driven use in Continuous integration environments.
  17. LogiTest – The core application in the LogiTest suite. The LogiTest application is used to record and playback single tests. LogiTest can be used to create functional and regression test for web applications using a simple graphical user interface. LogiMonitor is used to monitor web applications and send notifications or take actions when a web application fails.
  18. Jacareto – Jacareto is a capture&replay framework for Java applications and applets. It allows you to easily create your own capture&replay tools. Jacareto is very flexible; you can write your own capture modules, replay modules, classes which handle special components, editors, record types, record elements and tests. You can also group record elements together to build high-level structures (qualitative analysis). By extracting data sets from records, quantitative analyses can be performed.
  19. LoadSim – LoadSim is a web application load simulator. It allows you to create simulations and have those simulations run against your webserver. Records your browser session to create the simulation scenarios. Remote management of simulations. Random delays can be added between links to simulate real users.
  20. Rubis – RUBiS is an auction site prototype modeled after that is used to evaluate application design patterns and application servers performance scalability. RUBiS can be used from a web browser for testing purposes or with the provided benchmarking tool. We designed a client that emulates users behavior for variours workload patterns and provides statistics.
  21. JMeter – Apache JMeter is a 100% pure Java desktop application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions.
  22. Joshua – Joshua uses Jini and JavaSpaces to build upon the JUnit Test Automation Framework and create a simple and efficient test distribution mechanism.
  23. Latka – Latka is a functional (end-to-end) testing tool. It is implemented in Java, and uses an XML syntax to define a series of HTTP (or HTTPS) requests and a set of validations used to verify that the request was processed correctly.
  24. Haste – Haste (High-level Automated System Test Environment) represents an approach to system testing that is philosophically consistent with standard XP unit testing practices. Test code runs in the same address space as the application under test, allowing for ready examination of application state. The fundamental Haste abstractions of Story, Step, and StoryBook provide a framework to implement system tests.
  25. SLAMD – SLAMD was originally developed for the purpose of benchmarking and analyzing the performance of LDAP directory servers, and it is the most powerful and flexible tool available for this task. It includes tools for recording and playing back TCP traffic, and a utility for intercepting LDAP communication and writing it as a script that may be executed in the SLAMD scripting engine. It has an embedded scripting engine that can be used to stress applications using protocols like LDAP, HTTP, SMTP, IMAP, and POP and any database that supports JDBC.
  26. JSystem – JSystem is a framework for writing and running automated tests, based on JUnit. Its main goal is to support automation of functional and system testing.
  27. JCrawler – JCrawler is a Stress-Testing Tool for web-applications. It comes with the crawling/exploratory feature. You can give JCrawler a set of starting URLs and it will begin crawling from that point onwards, going through any URLs it can find on its way and generating load on the web application. The load parameters (hits/sec) are configurable.
  28. Java PathFinder – Out of the box, JPF can search for deadlocks and unhandled exceptions (e.g. NullPointerExceptions and AssertionErrors), but the user can provide own property classes, or write listener-extensions to implement other property checks (like race conditions). It is the first NASA program to be actively developed and hosted on SourceForge.
  29. UISpec4J – UISpec4J is an Open Source functional and/or unit testing library for Swing-based Java applications, built on top of the JUnit test harness.
    If you are writing a Swing application, you will appreciate UISpec4J above all for its simplicity: UISpec4J’s APIs are designed to hide as much as possible the complexity of Swing, resulting in easy to write and easy to read test scripts. This is especially true when comparing UISpec4J tests with those produced using Swing or low-level, event-based testing libraries.
  30. Cobertura – Cobertura is a free Java tool that calculates the percentage of code accessed by tests. It can be used to identify which parts of your Java program are lacking test coverage. It is based on jcoverage. Instruments Java bytecode after it has been compiled. Generates reports in HTML or XML. Shows percent of lines coveraged and branches coveraged. Shows the McCabe cyclomatic code complexity. Can sort HTML results by class name, percent of lines covered, percent of branches covered, etc. And can sort in ascending or decending order.
  31. Slimdog – SlimDog offers a simple script based webapplication testing tool. It is based on httpunit. The tool offers a wide range of commands to work with forms, check the content of tables and navigation between HTML pages. Rather than writing long JUnit testcases or crucial XML files the users can write simple text scripts. he results are written either to the console, a file or as a HTML page.
  32. JBlanket – Blanket is a method coverage tool for stand-alone and client-server Java programs. It modifies the byte code in specified class and JAR files so that method type signatures are recorded when the methods are invoked during the execution of JUnit test cases. JBlanket automates support for test quality assurance in a manner consistent with Agile programming practices.
  33. TestGen4J – TestGen4J is a collection of tools that automatically generates unit test cases. TestGen4J automatically generates test cases from your own Java class files, or source files. Its primary focus is to exercise boundary value testing of the arguments passed to the method. It uses a rules engine, with a user-configurable XML file, that defines boundary conditions for the data types.
  34. Jemmy – Jemmy is a library that is used to create automated tests for Swing/AWT GUI applications. It contains methods to reproduce all user actions which can be performed on Swing/AWT components (i.e. button pushing, text typing, tree node expanding, …). It can be effective for automating demos to show how an application works. Jemmy is a NetBeans independent module, that can be used separately as well as together with the NetBeans IDE.
  35. Sahi – Sahi is an automation and testing tool for web applications, with the facility to record and playback scripts.
    Developed in java and javascript, this tool uses simple javascript to execute events on the browser.
    Features include, in-browser controls, text based scripts, ant support for playback of suites of tests,
    and multi threaded playback. Sahi runs as a proxy server and the browser needs to use the sahi server as its proxy.
    Sahi then injects javascript so that it can access elements in the webpage.
  36. Floyd – A Java library intended to make the automated testing of web applications easier. Provides full control of standard web browsers such as Mozilla and Internet Explorer to normal Java unit tests. The interaction with the browser and any loaded web pages is achieved via calls to Floyd’s Java API. This allows to simulate user interaction with a real live web browser.
  37. Watij – Watij (pronounced wattage) stands for Web Application Testing in Java. Based on the simplicity of Watir and enhanced by the power of Java, Watij automates functional testing of web applications through the real browser. Currently Watij supports automating Internet Explorer on Windows only however with a future plan to support Mozilla. Watij supports XPath expressions for finding HTML elements on a page. Watij also manages popup browser windows.
  38. iValidator – iValidator is a framework for XML-based test automation of complex test scenarios. The central feature of iValidator is the flexible descriptive control of complex test scenarios. Using XML you can also describe test cases, combine them into test suites and control the flow of the test suites.
  39. Testare – A java testing framework that simplifies the test development process for distributed java applications. It provides easy to use in container testing capabilities. It provides a test environment management and provides fixtures, global fixtures, test environment probes and guards.
  40. Java Test Runner – A Java distributed testing framework with particular emphasis on JEE specification. The framework supports standard JSE components, EJBs, JMS and Web Services (document-based and rpc-like).

Anyway like always, there’s something I missed in this review, so please let me know!

Also, I found this overview of load testing tools that covers some of the tools above. Also see Open Source Testing for tools written in other “lesser” languages.

Finally, thanks for the implicit reference:

Share the article!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>