Neptune#

Neptune - инструмент, который был разработан для интеграционного тестирования. Так же он может подойти для написания e2e тестов.

В данный момент Neptune проходит ALPHA-тестирование сотрудниками Tinkoff.ru. Сборки пока не доступны в публичных maven-репозиториях. Для обзора в данный момент доступны исходный код, данная документация и Javadoc

Для кого был создан Neptune#

  • для Java/Kotlin разработчиков

  • для проектов, разрабатывающие софт на базе Spring Boot

  • для проектов, разрабатывающие софт на базе Micronaut (пока в планах)

  • для QA-инженеров

Почему Neptune?#

  • Neptune - это библиотека готовых шагов для описания тестов со своим DSL

  • Neptune имеет средства для написания своих расширений и библиотек шагов

  • Neptune не вносит в проект новые зависимости, а адаптируется к стеку, используемому командами разработки ⚠️ Neptune может требовать версии используемых библиотек не ниже указанных

  • Neptune поддерживает как junit5 так и TestNG

Принцип или манифест#

Идея, реализованная в Neptune, состоит в том, что любой фреймворк для unit/интеграционного/приемочного тестирования можно построить на следующих принципах:

  • каждый шаг теста может быть выполнен в рамках некоторого контекста (работа с базой данных, Rest API, экраном web или мобильного приложения)

  • все многообразие шагов сводится к комбинации элементарных действий, выполняемых в рамках определенного контекста, описанных один раз

  • каждый шаг в Neptune - функция. Эта функция принимает аргумент. Она выполняет простую операцию и либо возвращает результат (назовем это get-step), либо не возвращает ничего (назовем это action-step)

  • аргументом для функции-шага в рамках того или иного контекста может быть как ранее полученное значение, так и другая функция-шаг. За счет этого формируется последовательность/иерархия шагов

  • контекст как объект языка программирования, является аргументом функции-шага, он предназначен для инкапсуляции объектов-ресурсов для выполнения шагов и разделяет логику шагов и инициализации ресурсов для их выполнения.

  • набор параметров get-step сводится к двум элементам:

    • время на получение необходимого результата

    • набор критериев, которым должен соответствовать возвращаемый результат