Zero is a core test automation project that can be used as a basis for any kind of test automation project (API, Browser, Mobile)

Overview

Zero

Zero is our feature rich, core test automation framework, that can be used as an underlying automation framework for any/and all kind of test automation frameworks (such as API, Browser, Mobile App).

Working principles

  • Problem solving based learning (Learn something when a problem comes. This way, you will remember it better).
  • First make it work, then make it better (Specially when working with new tools or tech, don't worry about getting it right the first time. First focus on making it work, then refactor to make it better)

Test goals and objectives

A good guideline to test any project is:

Test the right things, in the right order, at the right time.

  • Risk based testing (Test the right things and avoid testing 3rd party/low risk software).
  • Follow test pyramid (in the right order)
  • Fail fast, fail early (at the right time)
  • Prevent breaking changes from merging (Run fast and stable API tests as a part of application pull requests).
  • If cannot prevent, test immediately on merge Run slower and flaky Mobile/Browser tests immediately on merge of pull requests on new deployed env.
  • Test asap, if cannot test on merge Use your creative imagination to do exploratory tests, UX testing post merge.

Test framework goals and objectives

Some of the key goals and objectives of our test framework are:

  • Easy to understand (Separate test intentions from implementation)
  • Easy to maintain (Separation of concerns between data, config, code and tests).
  • Easy to scale (Prefer composition over inheritance. Follow SOLID principles).
  • Fast execution time (Create atomic, independent tests that can run in parallel to cut down on execution times).
  • Test at right moment (Have various CI workflows that allow testing as soon as possible).
  • Reliable, robust tests (Create generic classes that have methods that wait for the right state before acting on elements)
  • Flexible tests that can run on any test env (Move all env related information to its own config files, so that tests can flexibly run on any test environment)

Important files

There are some standard files, there deserves a section of their own. These are:

  • README.md file (This is where you tell what your project is all about and how others can use it.).
  • junit-platform.properties file (This is where you specify your projects execution mode i.e. serial, or any of the available parallel execution modes)
  • .log4j properties file. (This specifies the log level for your project)
  • application.conf and other conf file. (This is where we specify common application config and config for each test environment)
  • .gitignore file. (This contains everything that you are not interested in version controlling.)
  • .gitattributes file. (This is where you specify attributes of any files that are being version controlled.)
  • .editorconfig file. (This provides a way to have a common formatting rules within your team. In absence of this, your PRs would be a mess to review.)
  • pom.xml file. (This is where you define all your maven project dependencies.)
  • LICENSE file. (This is where you give permission to others to make use of your open source project.)
  • Dockerfile. (This is where you automate your test environment. i.e. all the parts that your project depends on; such as having a machine, JDK, Maven, setting up system environments, any other tools, etc all.)
  • .dockerignore file. (Like gitignore file, here we specify everything that we want to be ignored from passing to docker build context.)
  • docker-compose.yml file. (A convenient way to set up a local instance of your dockerized application on your localhost machine. )

Tool Set

Key tools to be used in this core framework are:

  • Java (As the core programming language)
  • Maven (for automatic dependency management)
  • Junit 5 (for assertions)
  • Slf4J/Log4J (for logging interface and as a logging library)
  • Typesafe (for application configuration for multiple test environments)
  • Surefire (for xml reports in CI)
  • Surefire Site plugin (for html reports in CI)
  • Github (for version control)
  • Github actions (for continuous integration)
  • Faker library (for generating random test data for different locales - germany, france, netherlands, english)
  • Slack integration (for giving notifications on pull requests)
  • Elastic and Kibana (for test monitoring)
  • Docker (for automating test framework's environment)
  • Powershell or bash Script (for automating building test environment)
  • SonarQube/SonarLint (for keeping your code clean and safe)
  • Badges (for a quick view on your project meta and build status) Key tools that we will use in other frameworks, that will all extend this core framework are:
  • RestAssured (library for Rest API automation)
  • Selenium (library for Browser automation)
  • Appium (library for Mobile ios/android automation)

end to end test automation process

end-to-end-test-process

References

You might also like...

🎉Ultimate test automation for testing any application on any platform

 🎉Ultimate test automation for testing any application on any platform

boyka-java Ultimate test automation for testing any application on any platform boyka-java Setup Write conventional commits 1.

Dec 30, 2022

Twitter Text Libraries. This code is used at Twitter to tokenize and parse text to meet the expectations for what can be used on the platform.

twitter-text This repository is a collection of libraries and conformance tests to standardize parsing of Tweet text. It synchronizes development, tes

Jan 8, 2023

Version-agnostic and package-agnostic interfaces used in Constellar. Zero strict dependencies, works as a submodule.

bridge Version-agnostic and package-agnostic interfaces used in Constellar. Zero strict dependencies, works as a submodule. Used for cross-compatibili

Feb 23, 2022

A powerful open source test automation platform for Web Apps, Mobile Apps, and APIs

A powerful open source test automation platform for Web Apps, Mobile Apps, and APIs

A powerful open source test automation platform for Web Apps, Mobile Apps, and APIs. Build stable and reliable end-to-end tests @ DevOps speed.

Dec 31, 2022

Framework for Mobile test automation using Appium with Java - BDD

Framework for Mobile test automation using Appium with Java - BDD

appium-mobile-automation-framework-bdd Mobile automation framework using appium - BDD 🚀 Quick Start - Appium set up on Windows (Android): Install Jav

Oct 19, 2022

🔌 Simple library to manipulate HTTP requests/responses and capture network logs made by the browser using selenium tests without using any proxies

🔌 Simple library to manipulate HTTP requests/responses and capture network logs made by the browser using selenium tests without using any proxies

Simple library to manipulate HTTP requests and responses, capture the network logs made by the browser using selenium tests without using any proxies

Oct 23, 2022

One file java script for visualizing JDK flight recorder execution logs as flamegraphs without any dependencies except Java and a browser.

Flamegraph from JFR logs Simple one file Java script to generate flamegraphs from Java flight recordings without installing Perl and the Brendan Gregg

Oct 2, 2022

TMU is very simple app for posting your digital manga as article into Telegraph for further reading using any browser or in Telegram with Instant View.

TMU is very simple app for posting your digital manga as article into Telegraph for further reading using any browser or in Telegram with Instant View.

TMU is very simple app for posting your digital manga as article into Telegraph for further reading using any browser or in Telegram with Instant View. App may be very helpful for content translators that searching easy way to share their work.

Oct 6, 2022

Googleads-mobile-flutter - A Flutter plugin for the Google Mobile Ads SDK

Google Mobile Ads for Flutter This repository contains the source code for the Google Mobile Ads Flutter plugin, which enables publishers to monetize

Jan 2, 2023

A browser automation framework and ecosystem.

A browser automation framework and ecosystem.

Selenium Selenium is an umbrella project encapsulating a variety of tools and libraries enabling web browser automation. Selenium specifically provide

Jan 7, 2023

Core part of pipes framework plus some commonly used extensions

Pipes Pipes is a simple, lightweight data processing framework for Java. This repo comes with the core part plus three extensions (For Google Big Quer

Oct 4, 2022

QuickShop is a shop plugin that allows players to easily sell/buy any items from a chest without any commands.

QuickShop is a shop plugin that allows players to easily sell/buy any items from a chest without any commands. In fact, none of the commands that QuickShop provides are ever needed by a player.

Dec 30, 2022
Owner
Pramod Kumar Yadav
Pramod Kumar Yadav
Zero-dependency Reactive Streams publishers library

⚡️ Mutiny Zero: a zero-dependency Reactive Streams publishers library for Java Mutiny Zero is a minimal API for creating reactive-streams compliant pu

SmallRye 14 Dec 14, 2022
Eclipse Collections is a collections framework for Java with optimized data structures and a rich, functional and fluent API.

English | 中文 | Deutsch | Español | Ελληνικά | Français | 日本語 | Norsk (bokmål) | Português-Brasil | Русский | हिंदी Eclipse Collections is a comprehens

Eclipse Foundation 2.1k Dec 29, 2022
Immutable in-memory R-tree and R*-tree implementations in Java with reactive api

rtree In-memory immutable 2D R-tree implementation in java using RxJava Observables for reactive processing of search results. Status: released to Mav

Dave Moten 999 Dec 20, 2022
Kameleon - project scaffolding for Apache Camel

Kameleon - project scaffolding for Apache Camel This is a project generator for Apache Camel. It generates maven-based Java project with preconfigured

The Apache Software Foundation 31 Dec 14, 2022
BioJava is an open-source project dedicated to providing a Java framework for processing biological data.

Welcome to BioJava is an open-source project dedicated to providing a Java framework for processing biological data. It provides analytical and statis

BioJava 513 Dec 31, 2022