100+ Open Source/Free Functional Testing Tools

It is very important to make sure that your application functions as expected. There may be times that you add one little piece of code and all of a sudden other parts of the application no longer works. You may not have time/capacity to manually go back and regression test all the pieces of your application to make sure they are up to par. Companies use a variety of different testing tools for regression testing. There are lots of tools out there from very expensive to open source.

Below is a list of some open source/free tools that may come in handy.

Please keep in mind that every application is different so the tool you pick from one application may not be the same tool that you pick for another. My advice would be to pick a tool that can meet most of your current and near future needs.

  • Abbot Java GUI Test Framework: The Abbot framework provides automated event generation and validation of Java GUI components, improving upon the very rudimentary functions provided by the java.awt.Robot class (A Better ‘Bot). The framework may be invoked directly from Java code or accessed without programming through the use of scripts. It is suitable for use both by developers for unit tests and QA for functional testing
  • Anteater: A testing framework designed around Ant, from the Apache Jakarta Project. It provides an easy way to write tests for checking the functionality of a Web application or of an XML Web service.
  • Autonet:Autonet is a GUI network
    test platform, internally it’s based on CLI to communicate with devices. It can help you to arrange test cases, setup commands to devices,run commands to check results and record test results. Requirement: windows, linux and any other platform which support tcl
  • Avignon: An acceptance test system that allows you to write executable tests in a language that you define. It uses XML to define the syntax of the language but, if you choose to extend the language, leaves the semantics of the tests up to you. Avignon includes modules for testing HTML applications (through either IE or FireFox), Swing and .NET WinForm applications. Requirement: Java (MS Windows only for .NET testing)
  • Canoo WebTest: Used for functional testing of web pages, WebTest is an open source testing framework built on top of HttpUnit. It allows tests to be defined in XML as Ant targets. Requirement: JDK 1.2 and ANT v1.3
  • Celerity: a JRuby wrapper around HtmlUnit – a headless Java browser with JavaScript support. It provides a simple API for programmatic navigation through web applications. Celerity aims at being API compatible with Watir.
  • Concordion: Framework for Java that lets you turn a plain English description of a requirement into an automated test. Concordion specifications are active. Behind the scenes, they are linked to the system under test and therefore do not go out-of-date. If a change is made to the system’s behaviour then the tests associated with the relevant specification will fail and let you know.Requirement: Java 1.5 or above
  • DbFit: Extension to FIT/FitNesse for test-driven database development. Enables developers to manipulate database objects in a relational/ tabular form, making database testing and management much easier then with xUnit-style tools. Requirement: Java/.NET
  • Doit: Simple Web Application Testing: Scripting tool and language for testing web applications that use forms. Doit can generate random or sequenced form fill-in information, report results (into a database, file, or
  • stdout), filter HTML results, and compare results to previous results, without having to manually use a web browser. It uses a console-based web client tool (like Curl or Wget) to send and receive HTTP requests and responses respectively. Requirement: You must have Perl 5 or greater and the appropriate Perl modules (detailed in Doit manual) installed on your system before you can use SPL.
  • EMOS Framework: A simple yet powerful environment for development of automated WinRunner? tests. Like most frameworks of this sort EMOS Framework separates test data from the test code in order to simplify and speed up test development, increase robustness of the produced solution, and empower non-programmers towards test automation. It is almost completely written in WinRunner’s own scripting language, TSL.Requirement: Mercury WinRunner, All 32-bit MS Windows (95/98/NT/2000/XP)
  • 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. Tests can be leveraged for functional, stress, reliability. Requirement: Microsoft, OS Independent, Linux
  • Funkload: Web functional testing and load testing tool written in Python and distributed as free software under the GNU GPL. Emulates a web browser (single-threaded) using webunit; https support; produces detailed reports in ReST, HTML, or PDF. Functional tests are pure Python scripts using the pyUnit framework.
  • FWPTT: is a web application tester program for load testing web applications which can record normal and Ajax requests
  • Harness: An open source Java API for creating Java test software
  • HtmlUnit: Java unit testing framework for testing web based applications. (Similar in concept to httpunit but is very different in implementation) HtmlUnit models the returned document so that you can deal with pages, forms and tables.
  • httest: Scriptable HTTP Test Tool for testing and benchmarking web application and HTTP server development. Can act as client (requesting) and server (back-end for reverse proxys). Pattern matching answers (both server(s)and client(s)) to test validity. Has a very simple but powerful syntax. Can execute and stream shell commands into the HTTP stream and vice versa. Requirement: linux, solaris
  • HTTPUnit: Java API for testing web sites without a browser.
  • IdMUnit: Leading xUnit automated testing framework for Identity Management that simplifies and accelerates the functional testing of the solution. Test cases are defined and implemented in spreadsheet format. This product plugs into Eclipse. Requirement: Cross-platform
  • IeUnit: A simple framework to test logical behaviors of web pages, released under IBM’s Common Public License. It helps users to create, organize and execute functional unit tests. Includes a test runner with GUI interface. Implemented in JavaScript for the Windows XP platform with Internet Explorer.
  • iMacros for Firefox: Free Firefox add-on to record and automate web interactions. Can use variables inside the macros, and import data from CSV files. Includes user agent switcher, PDF download and Flash, ad and image blocking functions. The recorded macros can be combined and controlled with Javascript, so complex tasks can be scripted. The EXTRACT command enables reading of data from a website and exporting it to CSV files. Full Unicode support and works with all languages including multi-byte languages such as Chinese. STOPWATCH command enables capturing of web page response times
  • ITP: Lightweight, yet powerful web application test harness. Test scripts written in XML. No programming required and no changes required to your web application. Supports sessions/cookies, POST form data. Command line based for integration into other tools. Also useful for regression and smoke testing.
  • ItsNat, Natural AJAX: A Java AJAX web framework with functional web test built-in. Simulates a Universal Java W3C Browser in the server, the client DOM tree is basically a clone of the server and is updated automatically when the server changes usually as the response of an AJAX event. The server can fire W3C DOM events and send them to the browser simulating user actions. These are received again by the server as in a normal AJAX app. As the test code is in the server too, can check the expected GUI changes (checking the server DOM tree) or the expected business behavior (added/removed/updated data). Requirement: Any supported platform by Java VM 1.4 or upper
  • ivalidator: Regression testing framework written in java but by no means restricted to java testing. Test suites are declared in XML. Especially designed for complex testing scenarios and integration testing. Requirement: JDK 1.3
  • Jacobie: A Java API for use with Internet Explorer. Based on the JACOB project (Java to Com Bridge) and the IE COM Object, it directly controls IE from java. This API can be used as a true end-user web browser test with IE and not a Http-Based test such as HttpUnit. Requirement: All 32-bit MS Windows (95/98/NT/2000/XP)
  • Jameleon: A plug-in driven automated testing tool that separates applications into features and allows those features to be tied together independently, creating test cases. Test cases can be data-driven and executed against different environments and test case docs are generated from the test cases. The goal is to create an automated testing tool that can be used for the enterprise. A UI that ties a series of features to a test case, generating both the test script and the test case documentation is in the works. Requirement: OS Independent, JDK 1.4 or higher
  • jDiffChaser: A GUI comparison tool that automates diffs detection between versions. You can record and play scenarios on two different releases of the same Swing application (in sequential or parallel mode); jDiffChaser compares both screens, shows you the differences and list them in a report with images highlighting the diffs. Requirement: Linux, OS X, WinXP
  • JFunc: JUnit Functional Testing Extension: An extension to the JUnit testing framework to make it easier for use with functional tests. Functional testing (also called integration testing) significantly differs from unit testing in a number of respects. Part of this project is dedicated towards putting together code to address these differences; the other part of this project is putting together methodologies for functional testing. Requirement: JUnit
  • jWebUnit: A Java framework that facilitates creation of acceptance tests for web applications. jWebUnit provides a high-level API for navigating a web application combined with a set of assertions to verify the application’s correctness. This includes navigation via links, form entry and submission, validation of table contents, and other typical business web application features. This code utilizes HttpUnit behind the scenes. The simple navigation methods and ready-to-use assertions allow for more rapid test creation than using only JUnit and HttpUnit. Requirement: OS Independent
  • Linux Test Project: A collection of tools for testing the Linux kernel and related features. Our goal is to improve the Linux kernel by bringing test automation to the kernel testing effort. Requirement: Linux
  • LogiTest: The core application in the LogiTest suite. The LogiTest application provides a simple graphical user interface for creating and playing back tests for testing Internet-based applications. Requirement:JDK 1.2 or higher
  • LReport: Command line tools for comparing csv files and databases (on the level of particular selects). The tools also support test documentation by nice formatting of selects’ results. Requirement: Tested on Win32 but should work on other platforms
  • Mactor: An extensible tool for system integration testing. It can facilitate tests of any XML-based integration regardless of the type of message transfer protocol used (HTTP, SOAP, file-system and IBM MQ series are currently supplied with the tool)
  • MaxQ: 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 paradigm of MaxQ is similar to commercial web testing tools like Astra QuickTest or Empirix e-Test. These products are quite expensive. MaxQ hopes to provide the essential features: HTTP test recording, scripting, and playback without the huge cost.Requirement: Java 1.2 or later
  • Mockito: Java mocking is dominated by expect-run-verify libraries like EasyMock or jMock. Mockito offers simpler and more intuitive approach: you ask questions about interactions after execution. Using mockito, you can verify what you want. Using expect-run-verify libraries you are often forced to look after irrelevant interactions. Mockito has very slim API, almost no time is needed to start mocking. There is only one kind of mock, there is only one way of creating mocks. Just remember that stubbing goes before execution, verifications of interactions go afterwards. Requirement: Java
  • MozUnit: Develop test-first style or just test against regressions: MozUnit provides framework, test runner, source browser, and API hooks for personalized reports. MozUnit is part of MozLab, a suite of tools and libraries for developers of AJAX and Mozilla applications, packaged as a Firefox extension.Requirement: Firefox
  • OLVER – Open Linux VERification: A test suite for automated conformance and functional testing of various Linux distributions against LSB standard requirements on base system interfaces behavior. The tests are being developed at the Linux Verification Center of Russia. Requirement:Linux
  • org.tigris.mbt: An implementation of Model-based testing built in Java. It allows you to generate test sequences from a finite-state machine (graph). The test sequences can be created statically, or run dynamically.Requirement: Any platform that runs Java 1.4.2
  • Ottomate: Suite of six Mac OS X Automator Actions that contains everything needed to graphically configure automated, repeatable user-acceptance tests for web-based applications. Requirement: Safari
  • PAMIE: ‘Python Automated Module For Internet Explorer’ Allows control of an instance of MSIE and access to it’s methods though OLE automation . Utilizes Collections, Methods, Events and Properties exposed by the DHTML Object Mode Requirement:Windows NT/2000
  • Pounder: A utility for testing Java GUIs. It allows developers to dynamically load components, record scripts, and then use those scripts in JUnit. It supports custom components, drag and drop, and the examination of test runs in source. This project is no longer being actively developed. For similar tools under active development, the Pounder team recommend considering Abbot, Marathon, jfcunit and others. Requirement: OS Independent
  • pywinauto: A python package that allows you to automate the windows GUI. Very easy to get started, and quite powerful. Requirement:Windows 2000, XP, +
  • QAT (Quality Assurance Tests): Developed to ease the issues encountered by having to perform Quality Assurance tests across a variety of hardware and software combinations. The QAT tool can be divided into two main sections, the Agent, responsible for actually running each test or group of tests, and the Harness, which is responsible for test selection, management, result and agent co-ordination. Requirement:Java 2
  • QMTest: CodeSourcery’s QMTest provides a cost-effective general purpose testing solution that allows an organization to implement a robust, easy-to-use testing program tailored to its needs. QMTest’s extensible architecture allows it to handle a wide range of application domains: everything from compilers to graphical user interfaces to web-based applications. Requirement: QMTest works with most varieties of UNIX, including GNU/Linux, and with Microsoft Windows.
  • Rasta: A keyword-driven test framework using spreadsheets to drive testing. It’s loosely based on FIT, where data tables define parameters and expected results. The spreadsheet can then be parsed using your test fixtures.Requirement:Windows, Ruby
  • Robot Framework: Robot Framework is a Python-based keyword-driven test automation framework for acceptance level testing and acceptance test-driven development (ATDD). It has an easy-to-use tabular syntax for creating test cases and its testing capabilities can be extended by test libraries implemented either with Python or Java. Users can also create new keywords from existing ones using the same simple syntax that is used for creating test cases.
  • Sahi: An automation and testing tool for web applications, with the facility to record and playback scripts. Developed in Java and JavaScript, it 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. It supports HTTP and HTTPS. 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. This makes the tool independant of the website/ web application. Requirement:Needs Java 1.4+
  • Samie: S.A.M. for I.E. is a Perl module (SAM.pm) that allows a user to run automated tests for their browser applications. Requirement: Windows NT/2000
  • Siege: http regression testing and benchmarking utility. It was designed to let web developers measure the performance of their code under duress, to see how it will stand up to load on the internet. Siege supports basic authentication, cookies, HTTP and HTTPS protocols. It allows the user hit a web server with a configurable number of concurrent simulated users. Those users place the webserver “under siege.”
  • Selenium: Testing tool for browser-based testing of web applications. It can be used both for functional, compatability (it has extensive cross-browser support) and regression testing Requirement: Windows, Linux or Mac
  • Selenium Grid: An open source web functional testing tool that can transparently distribute your tests on multiple machines to enable running tests in parallel, cutting down the time required for running in-browser test suites. This enables speed-up of in-browser web testing. Selenium tests interact with a ‘Selenium Hub’ instead of Selenium Remote Control. The Hub allocates Selenium Remote Controls to each test. The Hub is also in charge of routing the Selenium requests from the tests to the appropriate Remote Control as well as keeping track of testing sessions. Requires Java 5+ JDK, Ant 1.7.x
  • SharpRobo: A Functional Testing and Recording tool for WinForm applications written in C#. It supports all the standard WinForm controls. SharpRobo records the tests in FIT format which can be played back using Fit (File or Directory Runner). Requirement:Windows NT/2000/XP
  • SimpleTest: Unit testing framework which aims to be a complete PHP developer test solution. Includes all of the typical functions that would be expected from JUnit and the PHPUnit ports, but also adds mock objects; has some JWebUnit functionality as well. This includes web page navigation, cookie testing and form submission.
  • soapui: A java-swing based desktop application for inspecting, invoking and functional testing of webservices over HTTP. It is mainly aimed at developers/testers providing and/or consuming webservices (java, .net, etc). Functional testing can be done interactively in soapui or within a CI-process using the soapui maven plugin.Requirement: Java 1.5
  • Software Automation Framework Support (SAFS): Provides for the implementation of compatible keyword-driven test automation frameworks. Currently, developing independent, multi-platform, Java-based Driver. Will be followed by independent, multi-platform Engines. Requirement: All 32-bit MS Windows (95/98/NT/2000/XP)
  • Software Testing Automation Framework (STAF): An open source, multi-platform, multi-language framework designed around the idea of reusable components, called services (such as process invocation, resource management, logging, and monitoring). STAF removes the tedium of building an automation infrastructure, thus enabling you to focus on building your automation solution. STAX is an execution engine which can help you thoroughly automate the distribution, execution, and results analysis of your testcases. STAX builds on top of three existing technologies, STAF, XML, and Python, to place great automation power in the hands of testers. STAX also provides a powerful GUI monitoring application which allows you to interact with and monitor the progress of your jobs. Requirement:Windows, Linux, Solaris, AS/400, AIX, HP-UX, Irix
  • Solex: This project is a set of Eclipse plugins providing non regression and stress tests of Web application servers. Test scripts are recorded from internet browser thanks to a built in web proxy. Requirement: Eclipse 2.1 or above
  • SWAT (Simple Web Automation Toolkit): A library written in C# designed to provide an interface to interact with several different web browsers. SWAT also includes components to integrate with Fitnesse allowing Q/A engineers to automate web application testing. Requirement: Windows (IE and FireFox)
  • SWTBot: A functional testing tool for SWT and Eclipse applications. The focus of SWTBot is to provide a simple, readable and fast way to write tests. The API is simple which means that everyone on a team can use SWTBot to write functional tests. It is also very flexible when it comes to extensibility. Requirement: SWT/Eclipse
  • Systin: Systin stands for System Testing in .Net and allows you to write system-level tests in a “domain language”. This is a port of the popular Systir program. Systin will allow for an abstraction of Test Case specification and Test Case automation execution. Requirement: .Net Windows
  • tclwebtest: A tool for writing automated tests on web applications in tcl. It implements some basic html parsing functionality to provide comfortable commands for operations on the html elements (most importantly forms) of the result pages.
  • TextTest: An application-independent tool for text-based functional testing. This means running a batch-mode binary in lots of different ways, and using the text output produced as a means of controlling the behaviour of that application.Requirement: Most UNIX flavours + Windows XP (not Windows 9x)
  • Tomato: (the Automation Tool Abstraction Project) An abstraction layer for automation engines. Its design allows automation scripts or tests to be written in one language, against one library, and remain portable across different architectures, OS platforms, and even widely different automation engines (e.g. HP Mercury Interactive WinRunner or the Linux Desktop Test Project). Requirement: Windows/Linux
  • Toster – The Object-oriented Sofware Testing Environment: A system for sharing a set of tools that allow you to implement methods for object-oriented testing. Any method based on UML diagrams and on the software source code can easily be implemented as a TOSTER module. The environment itself makes a number of mechanisms available, such as information transfer from UML diagrams, mapping this information to source code, introducing modifications to the source code, launching the tested application, or presenting the results.
  • 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 funtional testing of web applications through the real browser. There is a Google group at http://groups.google.com/group/watij Requirement:Windows
  • WatiN: WatiN stands for Web Application Testing in dotNet. Inspired by Watir, WatiN enables web application testing, through Internet Explorer on a Windows platform, expressed in any .Net language.Requirement: Windows
  • Watir: Watir (Web Application Testing in Ruby) is a functional testing tool for web applications. It supports tests executed at the web browser layer by driving a web browser and interacting with objects on a web page. It uses the Ruby scripting language. Requirement: Windows (currently only supports Internet Explorer)
  • WebCorder: Free GUI web testing tool from Crimson Solutions, developed in VB. Designed for end users who are doing web based software testing, as a simple tool to record test scenarios, and play them back and generate log files. The user may also check for text or images on the screen or save screenshots.
  • Web Form Flooder: A Java console utility that will analyze a Web page, complete any forms present on the page with reasonable data, and submit the data. The utility will also crawl links within the site in order to identify and flood additional forms that may be present.
  • WebDriver: A developer focused tool for automated testing of webapps: WebDriver has a simple API designed to be easy to work with and can drive both real browsers, for testing javascript heavy applications, and a pure “in memory” solution for faster testing of simpler applications. Requirement: Any java-compatible platform
  • WebInject: A free tool for automated testing of web applications and services. It can be used to test any individual system component with an HTTP interface, and as a test harness to create a suite of automated functional and regression tests. Requirement: Windows, OS Independent, Linux
  • Webrat: Ruby-based utility to enable quick development of web app acceptance tests. Open source by Bryan Helmkamp. Leverages the DOM to run tests similarly to in-browser test tools like Watir or Selenium without the associated performance hit and browser dependency. Best for web apps that do NOT utilize Javascript; apps using Javascript in-browser tools may be more appropriate.
  • WebTst: AWeb development test infrastructure. It aims to simplify testing by implementing a capture engine: a Web proxy which records a tester’s actions using a real browser, and then replays them during testing. It comes with support for digital certificates, and a number of simple tests, such as cookie setting, pattern matching, response status, and many others. It features an extensible plug-in system. Requirement: POSIX, Linux
  • WET: An opensource web automation testing tool which uses Watir as the library to drive web pages. You don’t have to download / install Watir separately or know anything about Watir. WET drives an IE Browser directly and so the automated testing done using WET is equivalent to how a user would drive the web pages. WET allows you to perform various checks as a part of the testing process by using Checkpoints. Requirement: Windows 98/ME/2000 SP3/XP SP2/Server 2003
  • Win32::IEAutomation: A Perl module which automates functional testing of web applications. It can be used to automate any complex web application including dynamic frames and popup windows. It is an object oriented module and all methods are like user actions on web browser. Requirement: Windows (only Internet Explorer is supported)
  • XML Test Suite: Provides a powerful way to test web applications. Writing tests requires only a knowledge of HTML and XML. We want XmlTestSuite to be adopted by testers, business analysts, and web developers who don’t have a java background. Requirement: Windows 95/98/2000, Windows NT/2000, Linux, SunOS/Solaris

Leave a Reply