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

Загрузка результатов тестов из Bitbucket

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

Важно

Для правильной работы с повторными запусками пайплайна Bitbucket в ТестОпс необходимо использовать версию allurectl 2.15.3.

Этот раздел охватывает следующее:

  1. Аутентификация Bitbucket pipeline в ТестОпс для загрузки результатов тестирования.
  2. Простая (очень очень простая) конфигурация pipeline для понимания рабочих процессов с использованием allurectl.

Токен аутентификации

Для пользователя на стороне ТестОпс вам нужно создать API токен.

Этот API токен будет использоваться allurectl для аутентификации на сервере ТестОпс.

Шаги

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

  2. Нажмите на свой аватар и перейдите в Ваш профиль.

  3. В разделе API токены нажмите зеленую кнопку Создать.

  4. Назовите свой API токен и нажмите Отправить. Всегда давайте осмысленные имена всем параметрам конфигурации.

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

  5. Скопируйте токен и сохраните его в безопасном месте, так как его нельзя будет восстановить средствами ТестОпс.

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

Предварительные условия

Вам нужно прочитать руководство по allurectl. В большинстве случаев вам нужно использовать сценарий watch.

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

Переменные, необходимые для allurectl

Согласно описанию allurectl, это параметры, которые нужно указать:

  • ALLURE_ENDPOINT - обязательно
    • определяет URL сервера ТестОпс, например, https://demo.testops.cloud
  • ALLURE_TOKEN - обязательно
    • API токен, используемый для аутентификации
  • ALLURE_PROJECT_ID - обязательно
    • системный ID проекта, в который вы собираетесь загружать результаты тестирования
  • ALLURE_LAUNCH_NAME - обязательно
    • шаблон для имени запуска
  • ALLURE_RESULTS - обязательно
    • папка, в которой allurectl должен искать результаты тестирования
  • ALLURE_LAUNCH_TAGS - опционально
    • полезные теги, которые будут присвоены созданному запуску

В следующих разделах мы объясним, где эти параметры могут быть использованы.

ALLURE_ENDPOINT в переменных рабочего пространства

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

Обычно у вас есть только один экземпляр ТестОпс. Это означает, что переменную ALLURE_ENDPOINT можно определить на более высоком уровне сущностей Bitbucket, например, в настройках рабочего пространства. Чтобы открыть их, используйте аналогичный путь и замените {ORGNAME} на имя вашей организации: https://bitbucket.org/{ORGNAME}/workspace/settings/addon/admin/pipelines/account-variables.

Добавьте переменную ALLURE_ENDPOINT и ее значение в настройки Bitbucket.

Переменная ALLURE_ENDPOINT может быть установлена на уровне рабочего пространства Bitbucket.

Вы также можете использовать эту переменную вместе с другими в pipeline (объяснено ниже).

Простой pipeline

Логика pipeline описана в файле bitbucket-pipelines.yml по умолчанию. У нас нет цели обучать, как должны быть организованы pipelines в Bitbucket. Мы используем самый простой сценарий с пользовательским pipeline.

Пример pipeline

image: gradle:8.10-jdk21

pipelines:
custom:
test:
- variables:
- name: ALLURE_LAUNCH_NAME
default: ""
- name: ALLURE_LAUNCH_TAGS
default: "bitbucket, junit5"

- step:
name: Run tests
script:
- printenv
- wget https://github.com/allure-framework/allurectl/releases/latest/download/allurectl_linux_amd64 -O ./allurectl
- chmod +x ./allurectl
- ALLURE_LAUNCH_NAME="${BITBUCKET_REPO_FULL_NAME} - $BITBUCKET_BUILD_NUMBER"
- ./allurectl watch -- gradle --no-daemon clean test
Комментарии

Эта часть обязательна для интеграции с ТестОпс, так как эти переменные должны присутствовать в контексте всего pipeline, и мы должны иметь возможность переопределять значения этих переменных во время выполнения pipeline.

custom:
test:
- variables:

Все переменные из примера должны быть добавлены в эту часть.

  • ALLURE_LAUNCH_NAME
  • ALLURE_LAUNCH_TAGS

Настройка pipeline - Добавление переменных

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

  • ALLURE_ENDPOINT
  • ALLURE_TOKEN
  • ALLURE_PROJECT_ID

Переменная ALLURE_ENDPOINT может быть добавлена либо в переменные рабочего пространства (см. выше), либо она может быть добавлена так же, как и другие две – на уровне конфигурации pipeline. Это то, что мы сделаем сейчас.

  1. Выберите раздел Source
  2. Нажмите на bitbucket-pipelines.yml
  3. Нажмите Редактировать
  4. Затем снова нажмите Редактировать
  5. Вы увидите вкладку Configure и настройки Add variables, которые нужно развернуть.

Переменные могут быть установлены на уровне проекта Bitbucket.

Добавьте следующие переменные в раздел, который вы только что открыли

  • ALLURE_ENDPOINT
    • не защищено
  • ALLURE_TOKEN
    • защищено
  • ALLURE_PROJECT_ID
    • не защищено
  • ALLURE_RESULTS
    • не защищено

Мы не упоминали ALLURE_RESULTS ранее, но это обязательная переменная, которая должна быть видна глобально и не будет изменяться во время выполнения, поэтому лучше добавить ее здесь.

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

Сбор информации о тестовой среде

Зачем?

Довольно редко тесты запускаются без каких-либо параметров, которые определяют различные условия для их выполнения. Эти условия могут быть, например:

  • разные хосты для выполнения тестов, например, сервер QA, сервер staging и т.д.
  • разные браузеры для выполнения тестов для веб-интерфейса.
  • ветка VCS для тестирования изменений перед их появлением в основной ветке.

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

Как?

Добавление переменных среды в pipeline на стороне Bitbucket

Переменные среды могут быть добавлены в этот раздел, где мы добавили переменные, необходимые для allurectl:

custom:
test:
- variables:

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

  • PRODUCT_VERSION
  • TESTS_BROWSER

Обновите pipeline следующим образом

test:
- variables:
- name: ALLURE_LAUNCH_NAME
default: ""
- name: ALLURE_LAUNCH_TAGS
default: "bitbucket, junit5"
- name: PRODUCT_VERSION
default: "1.23"
- name: TESTS_BROWSER
default: "chrome"

Теперь команда запуска pipeline будет иметь следующий модальный диалог

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

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

- ALLURE_LAUNCH_NAME="${BITBUCKET_REPO_FULL_NAME} - $BITBUCKET_BUILD_NUMBER"

Настройка ТестОпс для обработки переменных среды из Bitbucket

allurectl отправляет весь набор переменных среды из pipeline в ТестОпс. Эти данные также включают добавленные параметры среды.

Настроим проект ТестОпс для обработки этой информации о среде.

Настройка маппинга переменных окружения осуществляется в настройках проекта.

  1. Перейдите в настройки проекта.
  2. Перейдите в раздел Окружение.
  3. Для каждой переменной:
    1. Нажмите Создать.
    2. Добавьте имя переменной окружения в поле Ключ маппинга.
    3. Выберите глобальную переменную окружения из списка (эти переменные управляются администраторами ТестОпс).
    4. Нажмите Отправить.
  4. Снова запустите задачу сборки через интерфейс Bitbucket. Когда запуск появится в списке запусков в ТестОпс, переменные должны быть отображены.

Запуск pipeline из ТестОпс

Чтобы запустить pipeline на системе CI (это относится к любой системе CI в целом), вам нужно добавить конкретную интеграцию на a) глобальном уровне b) на уровне текущего проекта. Затем эта интеграция будет использоваться в настройках Job.

Этот раздел охватывает

  1. Обзор интеграции.
  2. Настройки Job.

Процесс настройки интеграций с внешними системами описан здесь.

Обзор интеграции

  1. Создайте (получите/сгенерируйте/как угодно) секреты (учетные данные) на внешней системе для использования их API.
  2. Добавьте необходимую интеграцию на глобальном уровне ТестОпс (вам нужно быть администратором или иметь администратора рядом).
  3. Добавьте необходимую интеграцию на уровне проекта и предоставьте учетные данные (секреты), которые вы получили на шаге 1.

Глобальный уровень

Важно

Вам нужно иметь полномочия ROLE_ADMIN для настройки экземпляра ТестОпс на глобальном уровне.

  1. Перейдите в меню пользователя > Администрирование > Интеграции
  2. В правом верхнем углу нажмите Добавить интеграцию
  3. Найдите Bitbucket
  4. Нажмите на баннер Bitbucket
  5. Укажите имя интеграции
    • URL Bitbucket без http(s):// может быть хорошей идеей для имени
  6. Укажите URL Bitbucket в поле Endpoint
    • это будет https://bitbucket.org
  7. Завершите, нажав Добавить интеграцию.

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

Уровень проекта

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

Учетные данные Bitbucket

Для интеграции с Bitbucket нам нужны a) имя пользователя b) Пароль приложения.

Вы можете использовать свою учетную запись или создать новую служебную учетную запись (на ваше усмотрение).

  1. Перейдите в настройки учетной записи https://bitbucket.org/account/settings/
  2. Скопируйте свое имя пользователя (в разделе Настройки профиля Bitbucket)
  3. Перейдите в настройки паролей приложений https://bitbucket.org/account/settings/app-passwords/
  4. Нажмите Создать пароль приложения
  5. Назовите пароль приложения
  6. Укажите необходимые разрешения
    1. Чтение учетной записи (необходимо для тестирования соединения)
    2. Проблемы > Запись (если вы собираетесь связывать проблемы Bitbucket с сущностями ТестОпс)
    3. Pipeline > Редактировать переменные (для установки значений переменных)
    4. Репозитории > Чтение (для чтения файла pipeline).
  7. Создайте пароль приложения
  8. Скопируйте созданный пароль
Настройка интеграции в вашем проекте ТестОпс
Важно

Вам нужно быть владельцем проекта для настройки этих параметров.

  1. Перейдите в настройки проекта.
  2. Перейдите в раздел Интеграция
  3. Найдите интеграцию Bitbucket, которую хотите добавить.
  4. Нажмите Добавить интеграцию.
  5. В модальном окне введите учетные данные – имя пользователя и Пароль приложения, который мы сгенерировали на предыдущем шаге.
  6. Протестируйте соединение
  7. Завершите настройки интеграции, нажав на Добавить интеграцию.

Теперь мы готовы настроить Job.

Настройки Job в ТестОпс

Job в ТестОпс – это сущность, связанная с CI pipeline. Процесс загрузки результатов тестирования – это job-run. Все параметры job-run управляются ТестОпс и CI плагином (allurectl).

Pipeline имеет параметры (передаваемые как переменные среды), которые могут быть использованы для запуска pipeline со стороны ТестОпс. Для этого вам нужно завершить настройки Job и создать интеграцию, позволяющую запускать jobs в системе CI.

Чтобы иметь возможность запускать связанные pipelines, вам нужно настроить сервер сборки (только что сделано на предыдущем шаге).

Также,

Чтобы начать использовать Job для создания Launches и запуска CI pipelines из интерфейса ТестОпс, вам нужно настроить такой Job:

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

  1. Выберите правильный сервер CI, настроенный на уровне проекта с правильными правами доступа в CI.
  2. Отметьте Job как доступный для запуска тестов на нем.
  3. Свяжите переменные среды, полученные от job, с глобальными переменными среды.
  4. Отправьте изменения.
Важно

Как вы видите, есть 2 специальные переменные:

  • Branch
  • CustomName

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

CustomName не требует соответствующей переменной справа, но требует установки значения по умолчанию. Это значение – ваше пользовательское имя pipeline из bitbucket-pipelines.yml

Запуск pipeline

Запуск pipeline (который создаст запуск в ТестОпс) можно выполнить в следующих разделах ТестОпс:

  • Список тест-кейсов – выберите и используйте массовую операцию Запустить.
  • Список результатов тестирования – выберите и используйте массовую операцию Перезапустить.
  • Тест-планы – нажмите кнопку Запустить тест-плана.
  • Jobs – нажмите кнопку Запустить тест Job.

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

Запуск pipeline на альтернативном окружении

Альтернативное окружение означает, что вы хотите использовать параметры, отличные от тех, которые используются в pipeline по умолчанию.

В диалоговом окне редактирования задания в ТестОпс нажмите Добавить переменную окружения.

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

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

Пример завершенного пайплайна

Вот пример очень простого файла Bitbucket пайплайна, который дает общее представление о требованиях для работы с ТестОпс:

# bitbucket-pipelines.yml
image: python:3.8

pipelines:
custom:
pytest python tests:
- variables:
- name: ALLURE_LAUNCH_NAME
default: ""
- name: ALLURE_LAUNCH_TAGS
default: "bitbucket, pytest"
- name: ALLURE_RESULTS
default: "allure-results"
- name: TESTS_ENDPOINT
default: "https://demo.testops.cloud"
- name: TESTS_BROWSER
default: "firefox"
- name: ALLURE_PROJECT_ID
default: "830"
- name: ALLURE_ENDPOINT
default: "https://testing.testops.cloud"

- step:
name: pytest tests
script:
- /usr/local/bin/python -m pip install --upgrade pip
- pip install pytest allure-pytest
- ALLURE_LAUNCH_NAME="${BITBUCKET_REPO_FULL_NAME} - $BITBUCKET_BUILD_NUMBER"
- wget https://github.com/allure-framework/allurectl/releases/download/2.15.6/allurectl_linux_amd64 -O ./allurectl
- chmod +x ./allurectl
- ./allurectl watch -- pytest test --alluredir=${ALLURE_RESULTS}

где pytest python tests: — обязательное имя настраиваемого пайплайна, необходимое для вызова пайплайна через API.

ALLURE_LAUNCH_NAME, ALLURE_LAUNCH_TAGS, ALLURE_RESULTS, ALLURE_PROJECT_ID и ALLURE_ENDPOINT — это переменные, необходимые для allurectl, чтобы загрузить результаты тестов в ТестОпс.