Перейти к основному содержимому

Командная строка — allurectl

Что такое allurectl

Allurectl - это обертка командной строки для API ТестОпс, позволяющая загружать результаты тестов в реальном времени из сборочного задания и управлять сущностями на стороне ТестОпс (тест-кейсы, запуски, проекты).

Загрузка allurectl

Поддерживаемые платформы

  • MacOS на Intel x64 **_darwin_amd64
  • MacOS на M1 (arm64)**_darwin_arm64
  • 32-битный Linux **_linux_386
  • 64-битный Linux **_linux_amd64
  • 64-битный arm Linux **_linux_arm64
  • 32-битный Windows **_windows_386.exe
  • 64-битный Windows **_windows_amd64.exe
  • 64-битный arm Windows **_windows_arm64.exe

Вам нужно выбрать бинарный файл, подходящий для вашей ОС и архитектуры процессора, из доступных опций.

В примере ниже мы загружаем приложение для Linux на x64 CPU:

wget https://github.com/allure-framework/allurectl/releases/latest/download/allurectl_linux_amd64 -O ./allurectl
chmod +x ./allurectl

Режимы работы allurectl

Существует два режима:

  1. Non-CI режим
  2. CI режим

Non-CI режим

После запуска allurectl, он проверяет, определены ли специфические переменные CI, и если они отсутствуют, загрузка данных считается локальной загрузкой (с ПК). В этом режиме вы не можете использовать/манипулировать параметрами, связанными с выполнением заданий.

Передача параметров в allurectl

Существует 2 способа передачи параметров в allurectl:

  1. Использование параметров командной строки.
    • Этот вариант хорош, когда вам нужна одноразовая загрузка для некоторых ваших тестов.
  2. Использование переменных окружения.
    • Этот вариант лучше, когда вы регулярно загружаете свои данные, так как он позволяет сохранять и повторно использовать важные параметры, чтобы вам не нужно было использовать их в командной строке каждый раз.
Загрузка с использованием параметров командной строки
allurectl upload --endpoint https://allure.company.com \
--token 55555555-5555-5555-5555-555555555555 \
--project-id 100 \
--launch-name "Local PC manual launch 2200-12-31" \
path/to/allure-results
Загрузка с использованием переменных окружения
# Define environment variables
export ALLURE_ENDPOINT=https://allure.company.com
export ALLURE_TOKEN=55555555-5555-5555-5555-555555555555
export ALLURE_PROJECT_ID=100
export ALLURE_LAUNCH_NAME="Local PC manual launch 2200-12-31"
export ALLURE_LAUNCH_TAGS="release, critical"
# Run upload process somewhere
allurectl upload path/to/allure-results

Что произойдет

Теперь, что произойдет, если вы использовали один из вышеуказанных вариантов:

  1. На стороне ТестОпс будет создан новый запуск с именем Local PC manual launch 2200-12-31
  2. Будет создана новая сессия для загрузки результатов тестов
  3. Результаты тестов из папки path/to/allure-results будут отправлены в запуск ТестОпс Local PC manual launch 2200-12-31 в рамках созданной сессии.
  4. Сессия будет закрыта.
  5. Запуск останется открытым до тех пор, пока не будет закрыт вручную или автоматически на основе правила автоматического закрытия, определенного для проекта 100.

CI режим

Каждая система CI имеет свой набор переменных окружения, идентифицирующих ее. Если allurectl обнаруживает такие переменные, то запуск считается запуском из системы CI.

Для загрузки CI будет включена следующая дополнительная специфическая информация CI и доступна в ТестОпс, связанная с коммуникациями между allurectl и ТестОпс.

allurectl также использует некоторые внутренние переменные для отправки информации в правильный запуск на стороне ТестОпс.

Токен API ТестОпс

Прежде чем вы сможете использовать allurectl, вам нужно сгенерировать секретный токен ТестОпс в вашем профиле, чтобы allurectl мог аутентифицироваться на стороне ТестОпс.

Процесс получения токена API описан в документации ТестОпс.

Рабочий процесс allurectl watch

В общем, allurectl watch делает то же самое, что и allurectl upload, с одним важным отличием - команда watch позволяет отправлять результаты тестов в реальном времени, т.е. вам не нужно ждать, пока все тесты завершатся, что уменьшит нагрузку и ускорит обработку результатов тестов на стороне ТестОпс.

allurectl watch является оберткой для выполнения ваших тестов, т.е. вам нужно предоставить команду, которую вы используете для выполнения ваших тестов, в allurectl watch.

Использование

Как обычно, вам нужно предоставить параметры, необходимые для подключения к серверу ТестОпс (в примере ниже это переменные окружения, и мы настоятельно рекомендуем использовать переменные окружения для передачи этих параметров в allurectl), затем вы указываете allurectl, где вы ожидаете появления результатов тестов, и затем предоставляете команду для запуска выполнения тестов.

export ALLURE_ENDPOINT=https://allure.company.com
export ALLURE_TOKEN=55555555-5555-5555-5555-555555555555
export ALLURE_PROJECT_ID=100
export ALLURE_LAUNCH_NAME="Hello, world" # you can use here the environment variables of your job/pipeline
export ALLURE_LAUNCH_TAGS="release, critical"

allurectl watch --results path/to/allure-results -- ./gradlew clean test

в качестве альтернативы, вы можете предоставить все стартовые параметры в переменных окружения, чтобы watch выглядел красивее и лаконичнее:

export ALLURE_ENDPOINT=https://allure.company.com
export ALLURE_TOKEN=542dcd56-b0e2-4fdd-8ecf-bacf0f33d505
export ALLURE_PROJECT_ID=12
export ALLURE_LAUNCH_NAME="Hello, world"
export ALLURE_RESULTS=path/to/allure-results
export ALLURE_LAUNCH_TAGS="release, critical"

allurectl watch -- ./gradlew clean test

Рабочий процесс allurectl upload

Применимость

Используйте allurectl с командой upload после выполнения всех ваших тестов. Мы не рекомендуем использовать allurectl upload как фоновый процесс.

Важно

Мы рекомендуем использовать allurectl watch для отправки данных из CI. Используйте upload только в случае, если watch вам не подходит.

Настройки

Следующие переменные окружения могут быть установлены для упрощения использования allurectl, это альтернатива установке тех же параметров в командной строке. Использование переменных делает выполнение allurectl более понятным и уменьшает вероятность ошибки человека.

Переменная окруженияКомментарий
ALLURE_ENDPOINTURL сервера ТестОпс
ALLURE_PROJECT_IDID проекта в ТестОпс, это первый столбец главного экрана ТестОпс
ALLURE_TOKENперсональный токен доступа пользователя, сгенерированный в профиле пользователя в разделе API Tokens!
ALLURE_LAUNCH_NAMEИмя запуска, которое будет отображаться в интерфейсе ТестОпс
ALLURE_LAUNCH_TAGSСписок тегов, разделенных запятыми, которые будут отображаться в интерфейсе ТестОпс

Пожалуйста, обратитесь к деталям настроек CI для настройки переменных окружения allurectl.

Повторный запуск тестов и выборочный запуск с allurectl

Самое важное в повторном запуске тестов и выборочном запуске - это план тестов. В данном случае, когда мы говорим о выборочном запуске и повторном запуске (повторный запуск на самом деле является особым случаем выборочного запуска), план тестов - это файл (конкретно, это testplan.json) со списком тест-кейсов, которые ваша тестовая система должна выполнить.

Теперь давайте обсудим, как работает эта интеграция.

Интеграция выборочного запуска тестов

Примечание

Начиная с выпуска allurectl 2.10.x, инструмент и ТестОпс полностью контролируют процесс выборочного запуска тестов (пожалуйста, обратите внимание на часть Allure Framework), и не требуется определять ALLURE_TESTPLAN_PATH и выполнять команду job-run plan в вашем конвейере. Вы все еще можете использовать инструкции, описанные ниже. Однако мы рекомендуем оставить весь этот процесс на усмотрение ТестОпс и allurectl.

  1. На стороне ТестОпс мы создаем список тест-кейсов, которые нам нужно (повторно) запустить на стороне CI. Каждый тест-кейс идентифицируется AllureID и селектором. Селектор - это способ, которым тестовая система идентифицирует определенный тест, обычно это зависит от тестовой системы.
  2. Список тест-кейсов затем сохраняется в CI в файл testplan.json.
  3. На стороне CI мы создаем переменную окружения ALLURE_TESTPLAN_PATH и устанавливаем значение в путь к файлу testplan.json.
  4. Когда адаптер Allure Framework обнаруживает, что ALLURE_TESTPLAN_PATH доступен, он пытается прочитать testplan.json.
  5. Если файл testplan.json успешно прочитан, интеграция инструктирует тестовую систему выполнять только тесты, указанные в testplan.json.
Важно

Если CI запускает все тесты из вашего проекта, значит, что-то не настроено на вашей стороне или ваша тестовая система не имеет интеграции с ТестОпс. Если вы столкнулись с этим, пожалуйста, подайте запрос на поддержку (не баг) в нашу техническую поддержку.

Структура testplan.json

Файл testplan.json выглядит следующим образом.

Зная эту структуру, вы можете создать testplan.json на своем локальном ПК, инициализировать переменную окружения ALLURE_TESTPLAN_PATH с путем к testplan.json и запустить свои тесты локально без каких-либо дополнительных фильтров в той же сессии, если только тесты из testplan.json будут выполнены, тогда у вас есть рабочая интеграция для выборочного запуска, в противном случае вам нужно настроить интеграцию или разработать ее для вашей тестовой системы.

{
"version": "1.0",
"tests": [
{
"id": "10",
"selector": "io.qameta.allure.examples.junit4.AllureSimpleTest.allureSimpleTest"
},
{
"id": "11",
"selector": "io.qameta.allure.examples.junit4.AllureParameterizedTest.allureParameterizedTest[First Name]"
}
]
}

где

  • id - это ID теста (Allure ID) из ТестОпс

  • selector - это альтернативный ID, который по умолчанию равен полному пути теста.

    • мы планируем расширить информацию, предоставляемую в селекторе

    Полный путь тест-кейса

Сохранение плана тестов в CI, запуск тестов и загрузка результатов тестов

Во всех CI у нас одна и та же последовательность:

  1. ТестОпс запускает задание и добавляет ALLURE_JOB_RUN_ID = <id> в задание.
    • если allurectl обнаруживает ALLURE_JOB_RUN_ID, то он игнорирует все другие переменные, и сессия создается в наборе выполнения задания, установленном ТестОпс.
  2. ТестОпс предоставляет переменную окружения ALLURE_TESTPLAN_PATH: с путем к testplan.json в выполнение задания.
  3. allurectl создает testplan.json и заполняет его информацией о списке тестов.
  4. allurectl выполняет ваши тесты и создает индексный список файлов с результатами тестов и отправляет файлы с результатами тестов в ТестОпс с помощью команды watch
    • allurectl watch -- ./gradlew clean test
Примечание

Вся работа с ALLURE_TESTPLAN_PATH и testplan.json полностью управляется allurectl. Пользовательское вмешательство и настройки не требуются с выпуска allurectl 2.10.0

Запуск вложенных заданий

Бывает, что вам нужно запустить несколько заданий на CI и отправить все результаты тестов из нескольких заданий в один агрегированный запуск на стороне ТестОпс.

Переменная окружения ALLURE_JOB_RUN_ID придет на помощь!

Если allurectl обнаруживает, что ALLURE_JOB_RUN_ID доступен, то он не создает новые сущности, а использует ту, что из ALLURE_JOB_RUN_ID. Таким же образом работает выполнение тестов на стороне ТестОпс.

Рабочий процесс

  1. Создайте агрегирующее задание на стороне CI
  2. Создайте новое выполнение задания в агрегирующем задании и сохраните содержимое созданного ALLURE_JOB_RUN_ID
  3. Создайте вложенное/дочернее задание, передайте переменную окружения ALLURE_JOB_RUN_ID и ее содержимое во вложенное/дочернее задание.
    • все результаты тестов из заданий с одинаковым ALLURE_JOB_RUN_ID будут переданы в один и тот же запуск в ТестОпс.
  4. allurectl останавливает выполнение задания (дополнительная команда не требуется).

Кулинарная книга allurectl

Примечание

Для каждой команды полный список поддерживаемых опций доступен с помощью переключателя командной строки --help. Например: allurectl watch --help.

Если у вас есть сомнения, пожалуйста, свяжитесь с поддержкой.

Передача параметров в allurectl

Переменные окружения

Следующие переменные окружения необходимо установить для упрощения использования allurectl

Переменная окруженияКомментарий
ALLURE_ENDPOINTURL сервера ТестОпс
ALLURE_PROJECT_IDID проекта в ТестОпс, это первый столбец главного экрана ТестОпс
ALLURE_TOKENперсональный токен доступа пользователя, сгенерированный в профиле пользователя в разделе API Tokens!
ALLURE_LAUNCH_NAMEИмя запуска, которое будет отображаться в интерфейсе ТестОпс

Тестирование подключения

Это нужно использовать только для проверки подключения. Не используйте эту команду в своих конвейерах для аутентификации процесса загрузки результатов тестов. Аутентификация для загрузки результатов тестов выполняется иначе (см. ниже).

Это можно сделать с вашего локального компьютера или в конвейере CI (см. замечание выше).

Чтобы проверить подключение к экземпляру ТестОпс, вы можете использовать следующую команду:

export ALLURE_TOKEN=<API-TOKEN>
export ALLURE_ENDPOINT=https://demo.testops.cloud
allurectl auth login

В качестве альтернативы, вы можете использовать переключатели командной строки, но мы рекомендуем использовать переменные окружения.

Для получения дополнительной информации используйте команду allurectl auth login --help.

Загрузка результатов тестов в ТестОпс

Существует 2 варианта.

  • использование рутины watch
  • использование рутины upload

watch

watch - это основной рекомендуемый рабочий процесс для загрузки результатов тестов.

В общем, allurectl watch делает то же самое, что и allurectl upload, с одним важным отличием - команда watch позволяет отправлять результаты тестов в реальном времени, т.е. вам не нужно ждать, пока все тесты завершатся, что уменьшит нагрузку и ускорит обработку результатов тестов на стороне ТестОпс.

allurectl watch является оберткой для выполнения ваших тестов, т.е. вам нужно предоставить команду, которую вы используете для выполнения ваших тестов, в allurectl watch.

Использование

Как обычно, вам нужно предоставить параметры, необходимые для подключения к серверу ТестОпс (в примере ниже это переменные окружения, и мы настоятельно рекомендуем использовать переменные окружения для передачи этих параметров в allurectl), затем вы указываете allurectl, где вы ожидаете появления результатов тестов, и затем предоставляете команду для запуска выполнения тестов.

export ALLURE_ENDPOINT=https://allure.company.com
export ALLURE_TOKEN=55555555-5555-5555-5555-555555555555
export ALLURE_PROJECT_ID=100
export ALLURE_LAUNCH_NAME="Hello, world" # you can use here the environment variables of your job/pipeline
...
allurectl watch --results path/to/allure-results -- ./gradlew clean test

в качестве альтернативы, вы можете предоставить все стартовые параметры в переменных окружения, чтобы watch выглядел красивее и лаконичнее:

export ALLURE_ENDPOINT=https://allure.company.com
export ALLURE_TOKEN=542dcd56-b0e2-4fdd-8ecf-bacf0f33d505
export ALLURE_PROJECT_ID=12
export ALLURE_LAUNCH_NAME="Hello, world"
export ALLURE_RESULTS=path/to/allure-results
...
allurectl watch -- ./gradlew clean test

upload

Мы рекомендуем использовать allurectl watch для отправки данных из CI. Используйте upload только в случае, если watch вам не подходит.

Рабочий процесс upload применим только тогда, когда результаты тестов доступны после выполнения всех тестов (существуют такие тестовые системы, их немного, но они существуют) или вам нужно загрузить каталог с результатами тестов, которые у вас есть.

Используйте allurectl с командой upload после выполнения всех ваших тестов. Мы не рекомендуем использовать allurectl upload как фоновый процесс.

Загрузка с использованием параметров командной строки
allurectl upload --endpoint https://allure.company.com \
--token 55555555-5555-5555-5555-555555555555 \
--project-id 100 \
--launch-name "Local PC manual launch 2200-12-31" \
path/to/allure-results
Загрузка с использованием переменных окружения
# Define environment variables
export ALLURE_ENDPOINT=https://demo.testops.cloud
export ALLURE_TOKEN=55555555-5555-5555-5555-555555555555
export ALLURE_PROJECT_ID=100

# Run upload process somewhere
allurectl upload --launch-name "Local PC manual launch 2200-12-31" path/to/allure-results

Получение информации о запуске ТестОпс

Задача

Мы хотим получить информацию о запуске, созданном после выполнения рабочих процессов watch или upload, чтобы передать информацию в чат, электронное письмо и т.д.

Как

Это работает только в режиме CI

Информация о сущностях, созданных на стороне ТестОпс, может быть помещена в переменные окружения и затем использована путем выполнения следующей последовательности команд:

#define env vars
export ALLURE_ENDPOINT=https://demo.testops.cloud
export ALLURE_TOKEN=<toke>
export ALLURE_PROJECT_ID=<ID>
export ALLURE_LAUNCH_NAME="Hello, world"
export ALLURE_RESULTS=path/to/allure-results
# exec the tests
allurectl watch -- ./gradlew clean test

export $(allurectl job-run env)
# this will just show the list of all ENV vars related to allurectl execution
printenv | grep ALLURE_

printenv | grep ALLURE_ приведет к следующему выводу

ALLURE_ENDPOINT=https://demo.testops.cloud
ALLURE_LAUNCH_ID=11111
ALLURE_RESULTS=./allure-results
ALLURE_JOB_RUN_ID=12345
ALLURE_LAUNCH_TAGS=master, gitlab, demo, pytest, skip-live-doc, ignore
ALLURE_TOKEN=[MASKED]
ALLURE_LAUNCH_NAME=allure-pytest - 1ea04f48
ALLURE_JOB_RUN_URL=https://demo.testops.cloud/jobrun/14433
ALLURE_LAUNCH_URL=https://demo.testops.cloud/launch/31897
ALLURE_PROJECT_ID=433

Чтобы предоставить ссылку на созданный запуск, вы можете использовать либо ALLURE_JOB_RUN_URL, либо ALLURE_LAUNCH_URL.

ALLURE_JOB_RUN_URL - это сущность (может быть N выполнений заданий) внутри запуска, поэтому если вы объединяете два или более запуска в один, то ALLURE_JOB_RUN_URL всегда будет указывать на правильный запуск.

Создание запуска на основе тест-плана, созданного в проекте ТестОпс

Задача

Конечный пользователь хочет создать тест-план на стороне ТестОпс, а затем выполнить только тесты, ссылаясь на тест-план в конвейере.

Как это сделать

Задача может быть выполнена путем создания файла testplan.json перед выполнением команды allurectl watch

export ALLURE_TOKEN=<token>
export ALLURE_ENDPOINT=https://demo.testops.cloud
export ALLURE_PROJECT_ID=111
export ALLURE_LAUNCH_NAME="$(date "+%Y-%m-%d %H%M%S") executing test plan"
export ALLURE_LAUNCH_TAGS="watch, testplan"
export ALLURE_RESULTS="allure-results"
export ALLURE_TESTPLAN_PATH="testplan.json"
# create tetsplan.json based on AQL for test cases "testPlan=222" where 222 is the ID of a test plan
./allurectl test-case plan -q "testPlan=222" --output-file ${ALLURE_TESTPLAN_PATH}
# execute test cases based on testplan.json
./allurectl watch -- [tests_execution_command]

Отладка загрузки результатов тестирования

Задача

Я хочу видеть отладочную информацию о процессе загрузки, чтобы устранить проблемы с загрузкой результатов тестирования.

Как это сделать

Совет

Подробная отладка доступна начиная с версии allurectl 2.11.0

allurectl имеет специальный переключатель командной строки --log, который позволяет собирать логи загрузки результатов тестирования.

./allurectl --log debug upload ${ALLURE_RESULTS}
./allurectl --log debug watch

переключатель --log должен быть добавлен перед командой watch/upload, если добавлен после, то переключатель будет проигнорирован.

Для каждой загруженной партии файлов allurectl будет генерировать строку с деталями о процессе загрузки.

Уровни логирования

Существуют следующие уровни логирования от менее информативного до чрезмерно информативного.

  1. fatal
  2. error
  3. warn
  4. info
  5. debug
  6. trace

Как автоматически добавить ссылку на проблему к запуску

Задача

Я хочу автоматически добавлять ссылки на проблемы к запускам каждый раз, когда запуск создается из CI задания.

Как это сделать

Совет

Добавление ссылок на проблемы доступно начиная с версии allurectl 2.2.0

Non CI mode:

Для режима без CI, вам нужно знать точный ID запуска, чтобы прикрепить информацию о проблеме.

allurectl launch add-issue --launch-id launch_id --integration-id integration_id --issue-keys issue_key_1,issue_key_2,...,issue_key_N

Для режима CI (в конвейере после использования команды watch):

allurectl launch add-issue --current-launch --integration-id integration_id --issue-keys issue_key_1,issue_key_2,...,issue_key_N

где:

  • launch_id - должен быть вашим ID запуска
  • integration_id - должен быть вашим ID интеграции (вы можете найти этот ID в интерфейсе ТестОпс)
  • issue_key - должен быть вашим ключом проблемы (например, AE-1, AE-2)

Выполнение тестов в контейнере Docker или на удаленной VM/сервере

Задача

Мои тесты должны выполняться вне конвейера на удаленной VM или в контейнере Docker. Мне нужно, чтобы результаты тестов загружались в ТестОпс в запуск, связанный с конвейером, который инициировал выполнение тестов.

Как это сделать

Совет

Функция доступна начиная с версии allurectl 2.10.0

allurectl позволяет упаковать контекст конвейера и передать эту информацию другой системе, а затем распаковать контекст в системе, где должны выполняться ваши тесты, так что allurectl на VM или в контейнере Docker будет думать, что он работает внутри конвейера.

Упаковка контекста

Действие должно быть выполнено в конвейере, который отвечает за запуск выполнения тестов.

Вам нужно выполнить allurectl с параметрами ci env --encode в рамках родительского конвейера и сохранить результаты выполнения команды в переменную окружения ALLURE_CI_ENV.

ALLURE_CI_ENV=$(allurectl ci env --encode)

Передача контекста

Вам нужно передать содержимое ALLURE_CI_ENV в место, где будут выполняться ваши тесты. Эта переменная должна быть создана и значение установлено перед выполнением allurectl.

После создания переменной и установки ее значения, вы можете выполнить ваши тесты с помощью allurectl как обычно.

allurectl watch -- exec-your-tests-here

Загрузка результатов тестов с VM/контейнера будет связана с конвейером, который инициировал выполнение тестов.

Выполнение тестов, даже если сервер ТестОпс недоступен

Совет

Обычно, если allurectl не может подключиться к серверу ТестОпс, он не начинает выполнение тестов и завершает конвейер с ошибкой.

Задача

Я хочу, чтобы мои тесты выполнялись, даже если сервер ТестОпс недоступен по любой причине (сервер на обслуживании, сервер не работает, нет маршрута к хосту, проблемы с сетью и т.д.).

Как это сделать

Совет

Функция доступна начиная с версии allurectl 2.15.0

Чтобы предотвратить завершение конвейера allurectl, мы ввели переключатель командной строки --silent. При использовании этого переключателя allurectl проверит доступность сервера, если он недоступен, то allurectl выдаст предупреждение в консольный лог и начнет выполнение тестов в соответствии с предоставленной командой CLI без попытки загрузить результаты тестов.

Пример

allurectl watch --silent -- [tests_execution_command]

Избегание загрузки больших **-result.json файлов, которые не будут обработаны ТестОпс

Совет

Функция доступна начиная с версии allurectl 2.15.0

ТестОпс имеет ограничение на размер файлов **-result.json. Ограничение по размеру установлено на 2,000,000 байт (два миллиона) байт. Если файл результата превышает этот лимит, то он считается вложением и не обрабатывается парсером, следовательно, результат не будет сохранен в базе данных и не появится в интерфейсе. Если ссылка на этот файл не найдена в других файлах **-result.json, то он будет удален, как только запуск будет закрыт.

Задача

Я хочу избежать загрузки файлов, которые не будут обработаны, чтобы сэкономить время и ресурсы на загрузку и обработку.

Как это сделать

Мы ввели переключатель командной строки --skip-too-big, который предотвратит загрузку файлов, превышающих размер 2,000,000 байт. Инструмент не будет загружать такие файлы и выдаст предупреждение в stdout, содержащее информацию о том, что определенные файлы слишком большие, чтобы быть обработанными сервером.

Пример

allurectl watch --skip-too-big  -- [tests_execution_command]

Разгрузка хранилища, пропуская вложения для успешно пройденных тестов

Задача

Я хочу разгрузить хранилище и ускорить обработку результатов, избегая загрузки вложений для успешно пройденных тестов, так как они не представляют для нас интереса, нам нужны только неудачные или сломанные тесты с вложениями.

Как это сделать #1

Мы ввели переключатель командной строки --ignore-passed-test-attachments в allurectl 2.9.0, который позволяет это сделать.

Совет

Это будет работать для вложений в теле теста. Вложения в фикстурах (блоки setup/tear-down) будут загружены, даже если указан --ignore-passed-test-attachments.

Пример #1

./allurectl watch --ignore-passed-test-attachments

или для процедуры загрузки

./allurectl upload --ignore-passed-test-attachments ${ALLURE_RESULTS}

Как это сделать #2

Существует переключатель командной строки --exclude-files, который позволяет игнорировать файлы, предоставляя регулярное выражение для имен файлов.

Важно

Регулярное выражение имеет синтаксис Golang, поэтому лучше проверить его на чем-то вроде regex101.com перед применением фильтров игнорирования файлов.

Пример #2

Это будет игнорировать все файлы -container.json (блоки setup/tear-down ваших тестов) в директории allure-results.

./allurectl watch --exclude-files /*-container.json

или для процедуры загрузки

./allurectl upload --exclude-files /*-container.json ${ALLURE_RESULTS}

Как читать вывод allurectl

После загрузки результатов тестирования allurectl отобразит подробную информацию о файлах, которые были проиндексированы, обработаны и загружены в консольные логи.

Этот раздел пытается объяснить, как читать информацию, предоставленную allurectl.

Пример вывода

Allure TestOps Client v2.15.1
Project [5] with name [eat these files]
Creating new launch with name [allurectl local upload launch 2024-01-15 113340]
Launch [34] with name [allurectl local upload launch 2024-01-15 113340]
Session [35] started
Report link: https://demo.testops.cloud/launch/34
Watcher is waiting for indexing complete...
Watcher is waiting until files processed
Total files indexed: 9229 || Finished files: 1744 || Orphan Files: 2102
...
Total files indexed: 29796 || Finished files: 28968 || Orphan Files: 828
Total files indexed: 29796 || Finished files: 28968 || Orphan Files: 828
Waiting Finished. Waited for 331ns

+---------------------------------------------------------------------------------------------------------------------------+
| Indexer Stats |
+-----------+-------------------------------------------------------------+-----------------+--------------+----------------+
| INDEXING: | Total=29796 | Completed=28968 | | |
+-----------+-------------------------------------------------------------+-----------------+--------------+----------------+
| STATS: | type | count | | |
+-----------+-------------------------------------------------------------+-----------------+--------------+----------------+
| | allure.attach | 19123 | | |
+-----------+-------------------------------------------------------------+-----------------+--------------+----------------+
| | allure.result | 6074 | | |
+-----------+-------------------------------------------------------------+-----------------+--------------+----------------+
| | allure.container | 3610 | | |
+-----------+-------------------------------------------------------------+-----------------+--------------+----------------+
| | unknown | 989 | | |
+-----------+-------------------------------------------------------------+-----------------+--------------+----------------+
| TIMINGS: | Duration=6m26.954214603s |Min=325.104641ms |Avg=2m50.787s | Max=6m26.8907s |
+-----------+-------------------------------------------------------------+-----------------+--------------+----------------+
| SKIPS: | Reason | Count | | |
+-----------+-------------------------------------------------------------+-----------------+--------------+----------------+
| | can't find *-result.json or *-container.json for attachment | 828 | | |
+-----------+-------------------------------------------------------------+-----------------+--------------+----------------+
+------------------------------------------------------------------------------------------------------------------------+
| !!! WARNING !!! |
+------------------------------------------------------------------------------------------------------------+-----------+
| The following test results files have the size over 2,000,000 bytes and will be skipped by Allure TestOps: | |
+------------------------------------------------------------------------------------------------------------+-----------+
| /opt/allurectl/allure-results/a86295d3-483c-44e5-b1a7-ce6cdea3b1b1-result.json | 6.751 MB |
+------------------------------------------------------------------------------------------------------------+-----------+
| /opt/allurectl/allure-results/24cd7f86-26e2-483c-9184-f51044debbe2-result.json | 75.140 MB |
+------------------------------------------------------------------------------------------------------------+-----------+
+-------------------------------------------------------------------------------------------------------------------+
| Uploading Stats |
+----------+--------------------------+------------------+---------------------+--------------------+---------------+
| FILES: | TotalBatches=3645 | TotalFiles=28968 | UploadedFiles=28968 | TotalSize=7.170 GB | ErrorsCount=0 |
+----------+--------------------------+------------------+---------------------+--------------------+---------------+
| TIMINGS: | Duration=6m25.911071126s | Min=47.595229ms | Avg=210.704214ms | Max=3.663549864s | |
+----------+--------------------------+------------------+---------------------+--------------------+---------------+
Watcher finished in [6m28.100628726s]
You can find report here: https://demo.testops.cloud/launch/34
Stop 2024-01-15 114008
Версия клиента
ТестОпс Client v2.15.1

ТестОпс Client сообщение показывает версию allurectl. Убедитесь, что вы используете самую последнюю версию allurectl. Эта информация важна для устранения неполадок и отчетов о багах. Обычно баги должны быть сообщены только для самой последней версии allurectl.

Раздел проекта и запуска
Project [5] with name [eat these files]
Creating new launch with name [allurectl local upload launch 2024-01-15 113340]
Launch [34] with name [allurectl local upload launch 2024-01-15 113340]
Session [35] started

Раздел сообщает Id проекта, в который должны быть загружены результаты, и имя запуска, который будет создан, а также результат попытки создать указанный запуск. Сообщает имя созданного запуска и сессии.

Эта информация может быть использована для устранения неполадок.

Ссылка на созданный запуск
Ссылка на отчет: https://demo.testops.cloud/launch/34

Предоставляет точную ссылку на созданный запуск.

Процесс индексации и загрузки
Watcher is waiting for indexing complete...
Watcher is waiting until files processed
Total files indexed: 9229 || Finished files: 1744 || Orphan Files: 2102

Когда ваш тестовый фреймворк выполняет тесты, интеграция allure framework генерирует результаты тестов, эти результаты тестов индексируются (allurectl определяет, есть ли новые файлы) и затем загружаются (allurectl отмечает файлы, уже загруженные в своем runtime), т.е. Finished.

Метрика Orphan Files обновляется по мере прогресса загрузки и в идеале должна быть нулевой в конце выполнения тестов. Если Orphan Files показывает ненулевое значение, это означает, что вы загрузили файлы, которые не упомянуты ни в -result.json, ни в -container.json файлах. Все файлы, которые не упомянуты в указанных файлах.

Orphan files будут удалены на стороне ТестОпс после события закрытия запуска.

Статистика по типам файлов

Типы файлов подробно описаны в документации Allure Report.

|   STATS:  |          type           |      count      |
+-----------+-------------------------+-----------------+-
| | allure.attach | 19123 |
+-----------+-------------------------+-----------------+-
| | allure.result | 6074 |
+-----------+-------------------------+-----------------+-
| | allure.container | 3610 |
+-----------+-------------------------+-----------------+-
| | unknown | 989 |

Вывод предоставляет статистику по проиндексированным результатам тестов.

  1. allure.attach
  • Информация о количестве проиндексированных файлов вложений.
  • **-attachment.[ext], которые явно названы по соглашению об именовании интеграции allure framework как вложение к результату теста или к фикстуре.
  1. allure.result
  • Информация о количестве проиндексированных файлов **-result.json.
  • Это файлы, содержащие информацию о шагах и статусах тестов.
  1. allure.container
  • Информация о количестве проиндексированных файлов **-container.json
  • Это файлы, содержащие информацию о шагах и статусах фикстур тестов.
  1. unknown
  • Информация о количестве файлов, проиндексированных allurectl, которые, скорее всего, являются вложениями, но это файлы, имена которых не соответствуют соглашению об именовании интеграции allure framework.
  • Это также могут быть мусорные файлы с точки зрения их использования для отображения информации о результатах тестов в ТестОпс.
Временные характеристики
+-----------+----------------------+---------------+--------------+----------------+
| TIMINGS: | Duration=6m26.95s | Min=325.101ms | Avg=2m50.77s | Max=6m26.8992s |
+-----------+----------------------+---------------+--------------+----------------+

Здесь представлены временные характеристики процесса индексации, включая общую продолжительность, минимальное, среднее и максимальное время индексации файлов.

Пропуски
+-----------+-------------------------------------------------------------+------------------+
| SKIPS: | Reason | Count |
+-----------+-------------------------------------------------------------+------------------+
| | can't find *-result.json or *-container.json for attachment | 828 |
+-----------+-------------------------------------------------------------+------------------+

Раздел показывает статистику о количестве файлов, которые не упомянуты в файлах **-result.json или **-container.json как вложения; эти файлы будут удалены на стороне ТестОпс.

Большие файлы результатов тестов
!!! WARNING !!!
+------------------------------------------------------------------------------------------------------------+-----------+
| The following test results files have the size over 2,000,000 bytes and will be skipped by Allure TestOps: | |
+------------------------------------------------------------------------------------------------------------+-----------+
| /opt/allurectl/allure-results/a86295d3-483c-44e5-b1a7-ce6cdea3b1b1-result.json | 6.751 MB |
| /opt/allurectl/allure-results/24cd7f86-26e2-483c-9184-f51044debbe2-result.json | 75.140 MB |
+------------------------------------------------------------------------------------------------------------+-----------+

Этот раздел сообщает обо всех файлах результатов тестов, превышающих 2,000,000 байт. Эти результаты тестов будут удалены ТестОпс.

Статистика загрузки
+-------------------------------------------------------------------------------------------------------------------+
| Uploading Stats |
+----------+--------------------------+------------------+---------------------+--------------------+---------------+
| FILES: | TotalBatches=3645 | TotalFiles=28968 | UploadedFiles=28968 | TotalSize=7.170 GB | ErrorsCount=0 |
+----------+--------------------------+------------------+---------------------+--------------------+---------------+
| TIMINGS: | Duration=6m25.911071126s | Min=47.595229ms | Avg=210.704214ms | Max=3.663549864s | |
+----------+--------------------------+------------------+---------------------+--------------------+---------------+

Статистика загрузки показывает общее количество файлов - включая количество пакетов, количество загруженных файлов, общий размер и количество ошибок.

Пакеты

Пакет - это группа из N файлов, которые загружаются вместе из CI конвейера в ТестОпс.

Файлы всегда загружаются пакетами, чтобы предотвратить перегрузку сервера ТестОпс.

По умолчанию количество (N) файлов в пакете равно 10.

Информация о файлах
  1. TotalBatches
  • Показывает количество пакетов, загруженных в ТестОпс.
  1. TotalFiles
  • Показывает общее количество файлов, сгенерированных вашими тестами в текущем конвейере.
  1. UploadedFiles
  • Показывает общее количество файлов, загруженных в ТестОпс из текущего конвейера.
  1. TotalSize
  • Показывает общий размер всех файлов, сгенерированных в рамках текущего конвейера.
  1. ErrorsCount
  • Показывает количество ошибок во время процесса загрузки.
Информация о продолжительности
  1. Duration
  • Показывает общую продолжительность процесса загрузки
  1. Min
  • Минимальное время, затраченное на загрузку одного пакета
  1. Avg
  • Среднее время, затраченное на загрузку одного пакета
  1. Max
  • Максимальное время, затраченное на загрузку одного пакета
Индикация прогресса
Total files indexed: 29796 || Finished files: 28968 || Orphan Files: 828

Когда allurectl обрабатывает файлы, строка выше повторяется в консоли с обновленной информацией

  1. files indexed
  2. показывает, сколько файлов проиндексировано на данный момент
  3. Finished files
  4. показывает, сколько файлов загружено на данный момент
  5. Orphan Files
  • показывает, для скольких файлов allurectl не нашел ссылок в файлах result.json или container.json.
  • этот элемент показывает, сколько потенциально бесполезных файлов в текущем выполнении конвейера
  • если это число не равно нулю в конце выполнения allurectl, вам, вероятно, нужно проверить, указали ли вы правильный путь к результатам тестов
  • если это число не равно нулю в конце выполнения allurectl, вам, вероятно, нужно проверить, используют ли ваши тесты файлы, которые они сгенерировали
Завершение загрузки результатов

Когда загрузка завершена, предоставляется ссылка на отчет для созданного запуска и временные метки окончания операции.

Watcher finished in [6m28.100628726s]
You can find report here: https://demo.testops.cloud/launch/34
Stop 2024-01-15 114008

Релизы

Информация о релизах allurectl доступна на GitHub