touchbit / Buggy

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Buggy

Readthedocs документация (RU | EN) (в разработке).

Описание проекта

Buggy - это надстройка над TestNG для быстрого создания/подключения тестового проекта, разработки и вариативнго запуска автотестов.

Позволяет

  1. Легко и просто подключить TestNG к проекту с тестами. Как пример, смотреть модуль buggy-min-example.
  2. Собирать готовый к исполнению jar.
  3. Обрабатывать параметры запуска и расширять уже существующую конфигурацию (JCommander).
  4. Автоматически собирать исполняемые тестовые классы в сьюты для последующего запуска в TestNG.
  5. Автоматически собирать и добавлять в TestNG необходимые листенеры.
  6. "На горячую" перезагружать настройки логирования.
  7. Регулировать запуск тестов по типу.
  8. Регулировать запуск тесов по компонентам, сервисам или интерфейсам тестируемой системы.
  9. Транслировать результаты запуска в различные сервисы.

Реализовано

  1. Управление конфигурацией запускаемых тестов.
  2. Расширение существующей конфигурации через собственные интерфейсы.
  3. Листенер для IntelliJ IDEA TestNG плагина для запуска тестов из IntelliJ IDEA
  4. Атомарное логирование для каждого тестового или конфигурационного метода в отдельный файл.
  5. Цветовая дифференциация консольных логов.
  6. Механизм мониторинга исполняемых тестов.
  7. Базовый Telegram-нотификатор.
  8. Модуль к feign клиенту (утилиты).
  9. Модуль к okhttp клиенту (утилиты).
  10. Модуль интеграция c TestRail (трансляция результатов).

Предстоит

  1. Модуль интеграция с ReportPortal (трансляция результатов).
  2. Модуль к Retrofit клиенту (утилиты).
  3. Модуль работы с protobuf.

Конфигурация

Описание

  • PrimaryConfig
    • Базовая конфигурация представлена индексируемым интерфейсом PrimaryConfig.
    • Любой класс реализации интерфейса PrimaryConfig будет автоматически подгружен и использован для конфигурации по умолчанию (Buggy.getPrimaryConfig()).
    • Класс реализации интерфейса PrimaryConfig может быть имплементирован от множества конфигурационных интерфейсов, в том числе и из разных проектов.
    • Пример: org.touchbit.buggy.example.min.config.Config
  • SecondaryConfig
    • Дополнительная конфигурация (команды) представлена индексируемым интерфейсом SecondaryConfig.
    • Любой класс реализации интерфейса SecondaryConfig будет автоматически подгружен и создан экземпляр (Buggy.getSecondaryConfigs()).
    • Класс реализации интерфейса SecondaryConfig может быть имплементирован от множества конфигурационных интерфейсов, в том числе и из разных проектов.
    • Для класса реализации интерфейса SecondaryConfig обязательно наличие аннотации com.beust.jcommander.Parameters с объявленным commandNames.
    • Пример: org.touchbit.buggy.example.min.config.MinExampleSecondaryConfig

Параметры

Параметры запуска
Keys Default Description
--help -? false Вывести информацию с параметрами запуска.
--all   false При запуске тестов вывести в лог все параметры конфигурации и их значения.
--check   false Проверить конфигурацию на корректность без запуска тестов.
--version -v false Вывести версию исполяемого jar.
--force -f false Запуск всех тестов без исключения.
--print-suite   false Вывести информацию о тестовом сьюте.
--print-cause   false Вывести причину падения/исключения теста.
--print-log   false Вывести в лог путь к файлу выполненного теста.
--log   logs Относительный или абсолютный путь к директории ведения логов.
--status   null Статус с которым следует принудительно завешить прогон тестов.
--threads   50 Количество потоков для исполняемых тестовых методов.
--services -s Runtime Список доступных для тестирования сервисов.
--interface -i Runtime Список доступных для тестирования интерфейсов.
--type -t INTEGRATION Тип проводимого тестирования.
--artifacts-url   null Url к логам тестов (CI)

Примеры

Вывод параметров запуска

$ java -jar buggy-min-example/target/Buggy.jar -?

===============================================
Usage: Buggy [options] [command] [command options]
  Options:
    --artifacts-url
      The storage address for the builds (artifacts).
    --check
      Check buggy configuration without test run.
    -f, --force
      Running all tests, including those that fall.
    -?, --help
      Print usage.
    -i, --interface
      List of tested interfaces in the format: NAME,NAME,NAME.
      Default: [API]
    --print-cause
      Print the cause of a fail or skip test in the console log.
    --print-log
      Print the test log file path in the console log
    --print-suite
      Display information on the Suite in the console log.
    -s, --services
      List of tested services in the format: NAME,NAME,NAME.
      Default: [GITLAB]
    --threads
      The number of threads to run the test methods.
      Default: 50
    -t, --type
      Type of tests to run.
      Default: INTEGRATION
      Possible Values: [SMOKE, MODULE, INTEGRATION, SYSTEM]
    -v, --version
      Print program version
  Commands:
    network
      Usage: network [options]
        Options:
          --connection-timeout
            Connection timeout for request
            Default: 10
          --host
            Tested host
            Default: http://example.com
          --read-timeout
            Read timeout for response
            Default: 10
          --write-timeout
            Write timeout for request
            Default: 10

Запуск тестов c флагами

.indirect/img/buggy_run.jpeg

Разработка и контрибьютинг

Документация

Документация разработана при помощи синтаксиса reStructuredText.

Стандартный синтаксис разметки reStructuredText описан тут

Онлайн редакторы:

  1. RSTed
  2. Notex

Исходники документации находятся в директории docs и предназначены для деплоя на сайт buggy.readthedocs.io.

Точка входа для разработки документации: docs/index.rst

Точка входа для управление конфигурацией сборки документации: docs/conf.py

Локальная сборка html

Для локальной сборки проекта с документацией необходимо:

  1. Установить python 3
  2. Установить sphinx-doc
  3. Выполнить сборку sphinx-build -W -b html ./docs ./site

В результате в директории ./site будет находится reStructuredText документация в стиле сайта readthedocs.org.

Локальная сборка/запуск docker образа

Сборка образа

  • выполнив make build-doc-image (при условии установленного make)

или

  • выполнив docker build --no-cache -t buggy/doc -f ./docs/Dockerfile . (точка в конце обязательна)

В результате выполнения будет создан образ buggy/doc:latest

Запуск контейнера

  • docker run -p 80:80 buggy/doc

или

  • make run-doc-image

Юнит тесты

Запуск unit тестов с тестовым покрытием (Intellij IDEA)

  1. Toolbar ⮞ Run ⮞ Edit Configurations ⮞ Templates ⮞ JUnit

  2. Добавить конфигурацию покрытия кода (jacoco) с шаблоном: org.touchbit.buggy.*

    .indirect/img/junit_coverage.jpeg
  3. Удалить все существующие конфигурации.

    .indirect/img/junit_clean.jpeg
  4. Применить измнеения.

  5. Выбрать тестовый пакет(ы) и выполнить тесты.

    .indirect/img/junit_run.jpeg

About

License:Apache License 2.0


Languages

Language:Java 99.8%Language:Makefile 0.2%