Skip to content

Latest commit

 

History

History
187 lines (134 loc) · 16.5 KB

java-test-automation.md

File metadata and controls

187 lines (134 loc) · 16.5 KB

Java test automation

A comprehensive curated list of Java test automation frameworks, tools, libraries and software to help software engineers easily bootstrap test automation on Java. Sponsored by http://sdclabs.com

Have questions\issues\problems, join the chat at https://gitter.im/atinfo/awesome-test-automation

Table of content:

Also:


xUnit frameworks

  • JUnit - Common testing framework.
  • TestNG - TestNG - Testing framework.

TDD \ ATDD \ BDD

  • tools
    • JBehave - A framework for Behaviour-Driven Development (BDD). BDD is an evolution of test-driven development (TDD) and acceptance-test driven design, and is intended to make these practices more accessible and intuitive to newcomers and experts alike.
    • Cucumber-JVM - A pure Java implementation of Cucumber that supports the most popular programming languages for the JVM.
    • easyb - A behavior driven development framework for the Java platform. By using a specification based Domain Specific Language, easyb aims to enable executable, yet readable documentation.
    • Robot Framework - A generic test automation framework for acceptance testing and acceptance test-driven development (ATDD).
  • extensions
    • cucumber-report-db - Stores results of BDD tests with Cucumber-JVM in a database and provides reporting capabilities.

Model-Based Testing

  • GraphWalker - A framework for Model-Based Testing. The tool reads models in various formats like graphml, dot or json, and then generates tests from the models.

Code analysis

  • SonarQube - Open source project to manage code quality.

Web UI test automation

  • libraries
    • Selenium - Portable software testing framework for web applications.
    • SikuliX - SikuliX automates anything you see on the screen of your desktop computer running Windows, Mac or some Linux/Unix. It uses image recognition powered by OpenCV to identify and control GUI components. This is handy in cases when there is no easy access to a GUI's internals or the source code of the application or web page you want to act on.
  • frameworks and wrappers
    • Selenide - Concise API around Selenium to write stable and readable UI tests.
    • Serenity BDD (Thucydides) - An innovative open source library that helps you write more effective automated acceptance tests, and uses these acceptance tests to generates rich documentation and reports about your product and project.
    • htmlelements - A Java framework providing easy-to-use way of interaction with web-page elements in web-page tests.
    • atlassian-selenium - An open-source (BSD) project that aims at facilitating development of functional tests in Selenium/WebDriver libraries.
    • stevia - Open Source QA Automation Testing Framework by Persado
    • darcy - An open source Java 8 framework for modeling user interfaces as page objects with a declarative, automation-library-agnostic DSL
    • Satisfy - An open source Java framework based on Thucydides + Jbehave. Supports to work with WebUI, SOAP, REST, emails, files and generate random data out of the box.
    • JDI UI Test Automation Framework - is the test Framework for UI test automation. It extends the Page Objects design pattern and introduces many additional elements along with implementation of its common usages.
    • Geb Framework - A groovy test automation framework designed for the use with the Webdriver Page Object model and the Spock Framework for (BDD).
  • extensions
    • BrowserMob Proxy - Is a simple utility that makes it easy to capture performance data from browsers, typically written using automation toolkits such as Selenium and Watir.
    • Selenium-Grid-Extras - Simplify the management of the Selenium Grid Nodes and stabilize said nodes by cleaning up the test environment after the build has been completed
    • Selenium Grid Extensions - Extend Selenium grid with extra functionality. Execute Sikuli tests in combination with Selenium.
    • Selenium Grid Router is a lightweight server that routes and proxies Selenium Wedriver requests to multiple Selenium hubs.

Mobile test automation

  • Appium - An open source test automation framework for use with native, hybrid and mobile web apps. It drives iOS and Android apps using the WebDriver protocol.
  • Calabash - A cross-platform test automation framework for Android and iOS native and hybrid applications. Calabash’s easy-to-understand syntax enables even non-technical people to create and execute automated acceptance tests for apps on both of these mobile platforms.
  • Robotium - An Android test automation framework that fully supports native and hybrid applications. Robotium makes it easy to write powerful and robust automatic black-box UI tests for Android applications. With the support of Robotium, test case developers can write function, system and user acceptance test scenarios, spanning multiple Android activities.
  • UIautomator - Provides an efficient way to test UIs. It creates automated functional test cases that can be executed against apps on real Android devices and emulators. It includes a viewer, which is a GUI tool to scan and analyze the UI components of an Android app.
  • Espresso - A pretty new test automation framework that got open-sourced just last year, making it available for developers and testers to hammer out their UIs. Espresso has an API that is small, predictable, easy to learn and built on top of the Android instrumentation framework. You can quickly write concise and reliable Android UI tests with it.

Windows UI test automation

  • SikuliX - SikuliX automates anything you see on the screen of your desktop computer running Windows, Mac or some Linux/Unix. It uses image recognition powered by OpenCV to identify and control GUI components. This is handy in cases when there is no easy access to a GUI's internals or the source code of the application or web page you want to act on.
  • Winium for Desktop - Winium.Desktop is an open source test automation tool for automated testing of Windows application based on WinFroms and WPF platforms.

Unix \ Linux UI test automation

  • SikuliX - SikuliX automates anything you see on the screen of your desktop computer running Windows, Mac or some Linux/Unix. It uses image recognition powered by OpenCV to identify and control GUI components. This is handy in cases when there is no easy access to a GUI's internals or the source code of the application or web page you want to act on.

MacOS UI test automation

  • SikuliX - SikuliX automates anything you see on the screen of your desktop computer running Windows, Mac or some Linux/Unix. It uses image recognition powered by OpenCV to identify and control GUI components. This is handy in cases when there is no easy access to a GUI's internals or the source code of the application or web page you want to act on.

Server side test automation

  • Citrus - Test framework written in Java that is able to create fully automated end-to-end use case tests for enterprise SOA applications. Citrus simulates surrounding interface partners supporting a huge set of different transports and protocols like HTTP, JMS, TCP/IP, FTP, SOAP, XML and JSON.

Virtual environments

Contribute to this section

Performance & stress & load

  • Apache JMeter - Functional testing and performance measurements.
  • The Grinder - Load testing framework that makes it easy to run a distributed test using many load injector machines.
  • Lightning - Integrate JMeter non-functional tests with CI/CD server.
  • Tsung - Erlang based multi-protocol distributed load testing tool.

Security checking

Contribute to this section

Build Tools

  • Apache Ant - Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other. The main known usage of Ant is the build of Java applications.
  • Apache Maven - Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.
  • Gradle - Gradle is an open source build automation system. Gradle can automate the building, testing, publishing, deployment and more of software packages or other types of projects such as generated static websites, generated documentation or indeed anything else.

Continuous Integration

  • Jenkins - Jenkins is an award-winning application that monitors executions of repeated jobs, such as building a software project or jobs run by cron.
  • TeamCity - Powerful and user-friendly Continuous Integration and Deployment server that works out of the box.

Reporting

  • ExtentReports - HTML reporting library for .NET and Java which is extremely easy to use and creates beautiful execution reports. It shows test and step summary, test steps and status in a toggle view for quick analysis.
  • ReportNG - ReportNG is a simple HTML reporting plug-in for the TestNG unit-testing framework.
  • Allure - Open-source framework designed to create test execution reports clear to everyone in the team.

Documentation generation

Contribute to this section

Editors, IDE, consoles

  • IntelliJ IDEA - A free and open-source IDE for Java, Groovy, Scala and Android development.
  • Eclipse - Eclipse is famous for our Java Integrated Development Environment (IDE), C/C++ IDE and PHP IDE.
    • Genie plugin - Functional Test Automation tool for pure AS 3.0 SWF and Flash Games.
  • NetBeans - NetBeans IDE is the official IDE for Java 8. With its editors, code analyzers, and converters, you can quickly and smoothly upgrade your applications to use new Java 8 language constructs, such as lambdas, functional operations, and method references.

ORM frameworks and libraries

  • Hibernate - Hibernate ORM enables developers to more easily write applications whose data outlives the application process. As an Object/Relational Mapping (ORM) framework, Hibernate is concerned with data persistence as it applies to relational databases (via JDBC).
  • Morphia - Morphia is a lightweight type-safe library for mapping Java objects to/from MongoDB. Morphia provides a typesafe, and fluent Query API support with (runtime) validation. Morphia uses annotations so there are no XML files to manage or update. Morphia should feel very comfortable for any developer with JPA experience.

Useful libs

  • AspectJ - Seamless aspect-oriented extension to the Java. AspectJ enables clean modularization of crosscutting concerns, such as error checking and handling, synchronization, context-sensitive behavior, performance optimizations, monitoring and logging, debugging support, and multi-object protocols.
  • aShot - WebDriver Screenshot utility. Take screenshots, crop, prettify, compare.
  • rest-assured - Testing and validating REST services in Java is harder than in dynamic languages such as Ruby and Groovy. REST Assured brings the simplicity of using these languages into the Java domain.
  • WireMock is a flexible library for stubbing and mocking web services. Unlike general purpose mocking tools it works by creating an actual HTTP server that your code under test can connect to as it would a real web service.
  • MockServer can be used for mocking any system you integrate with via HTTP or HTTPS (i.e. services, web sites, etc).

Resources

Websites

Other Awesome Test Automation Lists

Your contributions are always welcome!