As we enter the last quarter of 2017, TestProject’s team decided to wrap up for you the best open-source test automation frameworks out there, and to help you choose the right one for you!
Here are the pros and cons of 7 different open-source test automation frameworks:
1. Robot Framework
Robot Framework (RF) is a test automation framework for acceptance testing and acceptance test-driven development (ATDD). This framework is written in Python, but can also run on Jython (Java) and IronPython (.NET), and therefore is a cross-platform (Windows, Linux, or MacOS).
Pros:
- It simplifies the test automation process by utilizing the keyword-driven testing (KDT) approach, that helps testers create readable tests that are easily made.
- Has easy to use test data syntax.
- Has a rich ecosystem around it consisting of various generic test libraries and tools that are developed as separate projects.
- Has many APIs that make it highly extensible.
- Although it’s not a built-in ability, RF enables to execute parallel tests via pabot library or via Selenium Grid.
Cons:
It’s not easy to customize html reports.
Bottom line: This cross-platform framework is highly recommended if you are targeting for KDT automation with a wide range of libraries and extensions. If you want to add new keywords (via RF test library APIs), a basic knowledge in Java/Python/C programming language is required.
2. JUnit
JUnit is a framework for unit testing of Java applications, used to write and run repeatable tests.
Pros:
- Tests are written in pure Java which is known as the leading programming language worldwide.
- Supports test-driven development (TDD).
- Enables to create your own unit test case suite.
- Integrates very good with other tools (for example, Maven) and with IDEs (for example, IntelliJ).
- Has history – So it has a large user base that makes it easy to find documentation on it.
Cons:
- If a mocking ability is required, one needs to add Mockito (or some other mocking library).
- Tests are not readable by non-technical people, since for example the methods names in JUnit are constrained by Java conventions.
Bottom line: In case you are looking to write unit testing for your java application, it’s probably the best choice. However, for functional testing or non-java applications, you should consider other solutions.
3. Spock
Spock is a testing and specification framework for Java and Groovy applications. It is based on JUnit.
Pros:
- Creates readable tests and supports plain English sentences, making it easy to read.
- Provides the surrounding context, thus easily enables to understand how to fix a failure.
- Has built-in mocking and stubbing capabilities.
- Supports data-driven-tests (DDT).
Cons:
Requires knowledge in basic Groovy programming language.
Bottom line: If your application is based on JVM and you are targeting for BDD test automation with DSL, this framework is just for you!
4. NUnit
NUnit is a unit testing framework for all .Net languages. Originally being inspired from Junit, it is written entirely in C#, and has been completely redesigned to take advantage of many .NET language features.
Pros:
- Quick initiation and test execution.
- Comes with assertions and annotations.
- Enables parallel testing.
- Supports test-driven development (TDD).
Cons:
- It is not a cross-platform as it is used only for .Net languages.
- It doesn’t integrate into Visual Studio echo system, thus using it means more maintenance.
Bottom line: A nice open-source framework for C# unit testing, with a long history and good reputation. However, in case you’re already using .NET languages, you may consider MSTest.
5. TestNG
TestNG is a test automation framework for Java that is inspired by JUnit and NUnit, but includes improved and new functionalities (NG – Next Generation). It is designed to cover all the test automation categories: unit testing, functional test, end-to-end, integration testing, etc.
Pros:
- It is easily integrated into maven cycle.
- Gives the developer the ability to write flexible and powerful tests.
- Supports Data Driven testing (DDT).
- Annotations are easy to understand.
- Test cases can be grouped easily.
- Allows to create parallel tests.
Cons:
- Only supports Java, so you need to have at least a basic knowledge of Java programming language.
- You have to invest time in framework setup & design.
Bottom line: If you use Java, looking for end-to-end test automation framework and willing to invest some time in framework setup – you should definitely consider using TestNG.
6. Jasmin
Jasmine is a JavaScript unit testing framework. It is also known as a Behavior Driven Development (BDD) testing framework for JavaScript. It’s suited for websites, Node.js projects, or anywhere JavaScript can run on. It is mainly paired with AngularJS.
Pros:
- Additionally to JavaScript, it can run in Python and Ruby, which can greatly assist you if you want to run your client-side tests alongside your server-side ones.
- Is supported by many CIs (Codeship, Travic, etc.).
- Has built-in syntax for assertions.
Cons:
- In most scenarios it requires a test runner (such as Karma).
- Has difficulties with asynchronous testing.
Bottom line: Jasmin might be a perfect fit for your needs if you’re searching for a unified (client-server) unit testing solution.
7. Mocha
Mocha is a JavaScript unit testing framework, that runs tests on NodeJs. It is mainly paired with ReactJS.
Pros:
- Has its own test runner built-in.
- Supports asynchronous testing.
- Allows flexibility since you can use any assertion library (Chai, expect.js, Must.js, etc.) that fit your needs (as a replacement to Node’s standard ‘assert’ function).
Cons:
- Relatively new to the field (developed in 2012), which means it’s still changing and its user base and support might be lacking in some aspects.
- Provides just the base test structure, thus requires additional setup and configuration (may be an advantage for some).
Bottom line: If you are looking for JavaScript stand alone unit testing framework, Mocha is your go-to framework!
Which open-source test automation framework do you use? What are their pros and cons? Please join the discussion in the comment section below 😎
Axway Automated Testing System:
https://github.com/Axway/ats-framework
Hi Ivelin,
Thanks for sharing 🙂
Regarding Robot Framework you can do parallel tests -> “With Pabot you can split one execution into multiple and save test execution time.” Please check https://github.com/mkorpela/pabot
Hi Japi,
Thank you for your great feedback ?
We updated the article with a clarification + link. Originally, the intention was that the Robot Framework does not provide the ability for parallel execution “as is”.
The Pabot library will do the job! You can achieve parallel execution tailoring Selenium Grid as well.
Interesting one. got a clear idea about some frameworks
Hi,
Can you please suggest which tool would be Idle for testing GUI applications based on .NET Win Forms
Thank U