Test ITTest IT
  • Руководство системного администратора
  • Руководство пользователя
  • Загрузить Test IT Enterprise
  • GitHub
  • Руководство по работе с Личным кабинетом
  • Руководство пользователя
  • Личный кабинет Test IT Cloud
  • GitHub
  • Release notes: Test IT Enterprise
  • Release notes: Test IT Cloud
  • Новое в документации
  • Центр помощи
  • Видеокурс по Test IT
  • Часто задаваемые вопросы
  • Спросите нас в Telegram
      
    
  • Руководство системного администратора
  • Руководство пользователя
  • Загрузить Test IT Enterprise
  • GitHub
  • Руководство по работе с Личным кабинетом
  • Руководство пользователя
  • Личный кабинет Test IT Cloud
  • GitHub
  • Release notes: Test IT Enterprise
  • Release notes: Test IT Cloud
  • Новое в документации
  • Центр помощи
  • Видеокурс по Test IT
  • Часто задаваемые вопросы
  • Спросите нас в Telegram
  • Что такое Test IT?
  • Быстрый старт
  • Администрирование

    • Администрирование Test IT
    • Вход в систему после установки
    • Настройка подключений

      • Внешние подключения в Test IT
      • AD/LDAP
        • Поля настроек подключения
      • AD/Kerberos
      • OpenID Connect
    • Добавление лицензий
    • Приглашение пользователей
    • Добавление пользователей и групп
    • Присвоение системных ролей
    • Настройка проектных ролей
    • Настройка очистки хранилища
    • Настройки геймификации
    • Настройка атрибутов
    • Настройка интеграций с таск-трекерами

      • Интеграция с таск-трекерами
      • Интеграция с Azure DevOps
      • Интеграция с ClickUp
      • Интеграция с Easy Redmine
      • Интеграция с EvaProject
      • Интеграция с Jira
        • Интеграция с Jira Server
          • Плагин Test IT для Jira Server
        • Интеграция с Jira Cloud
        • Настройка подключения Jira через OAuth 1.0
      • Интеграция с Kaiten
      • Интеграция с Monday
      • Интеграция с Redmine
      • Интеграция с TeamStorm
      • Интеграция с Yandex Tracker
      • Интеграция с YouTrack
    • Настройка интеграций с ИИ-моделями

      • Интеграция Test IT с ИИ-моделями
      • Интеграция с GigaChat
      • Интеграция с YandexGPT
      • Интеграция с сервисами, совместимыми с OpenAI
  • Авторизация
  • Профиль пользователя

    • Данные профиля пользователя
    • Настройки профиля и создание API-токена
    • Фоновые задачи
  • Проекты

    • Работа с проектами
    • Структура и компоненты проекта
    • Создание и редактирование проекта
    • Добавление пользователей и групп в проект
    • Настройка атрибутов в проекте
    • Работа с вебхуками

      • Настройка вебхуков
      • Вебхук для изменения проекта
      • Вебхуки для действий с рабочими элементами
      • Вебхуки для работы с тест-планами
      • Вебхук для изменения конфигурации
      • Вебхуки для работы с тест-поинтами
      • Вебхуки для работы с автотестами
      • Вебхуки для уведомлений пользователя
      • Настройка уведомлений в Slack с помощью вебхуков
      • Настройка уведомлений в Telegram с помощью вебхуков
      • Настройка интеграции с GitFlic с помощью вебхуков
      • Настройка интеграции с GitLab CI с помощью вебхуков
      • Настройка запуска автотестов в Jenkins CI с помощью вебхука
      • Настройка вебхука в TeamCity и Python (на примере Pytest)
    • Импорт и экспорт проектов
    • Подключение таск-трекера к проекту
    • Добавление ИИ-модели в проект
    • Архивация, восстановление и удаление проектов
  • Библиотека тестов

    • Библиотека тестов в Test IT
    • Создание тестов
      • Сравнение типов рабочих элементов
    • Импорт тестовой документации из XLS и XLSX
    • Версионирование тестов
    • Добавление общего шага в тест
    • Выделение шагов теста в общий шаг
    • Работа с параметрами тестов
    • Добавление ссылок в тесты
    • Работа с вложениями тестов
    • Использование тегов
    • Автоматизация тест-кейсов
    • Экспорт тестов
    • Массовое изменение тестов
    • Перемещение и копирование тестов в библиотеке
    • Архивация, восстановление и удаление тестов
    • Работа с секциями
  • Параметры и конфигурации

    • Работа с параметрами и конфигурациями
  • Тест-планы

    • Работа с тест-планами
    • Создание тест-плана
    • Изменение тест-плана
    • Блокировка тест-плана и запрос на его разблокировку
    • Дублирование тест-плана
    • Добавление атрибутов тест-плана
    • Архивация, восстановление и удаление тест-плана
    • Формирование тестового набора
    • Назначение исполнителей тест-плана
    • Выполнение тест-плана
    • Создание дефектов в таск-трекерах
    • Отчет по тест-плану
  • Автотестирование

    • Работа с автоматизированными тестами
    • Добавление автотестов в Test IT из внешнего репозитория
    • Работа с нестабильными автотестами
    • Связывание автотестов с ручными тестами
    • Запуск автотестов из UI
    • Запуск автотестов с помощью клиентских библиотек
    • Импорт результатов из Allure Adapters
    • Отслеживание запусков автотестов
    • Создание дефектов в таск-трекерах из прогонов автотестов
    • Анализ результатов автотестов
    • Таймлайн
  • Интеграции с системами автоматизированного тестирования

    • Работа с системами автоматизированного тестирования
    • Test IT CLI
    • Интеграция с системами CI/CD

      • Работа с системами CI/CD
      • Azure DevOps
      • Bamboo
      • Bitbucket
      • CircleCI
      • GitFlic
      • GitHub Actions
      • GitLab CI/CD
      • Jenkins
      • TeamCity
    • Интеграция с тестовыми фреймворками

      • Работа с тестовыми фреймворками
      • Адаптер Test IT
      • Appium
      • Behave
      • BrowserStack
      • Catch2
      • CodeceptJS
      • Cucumber
      • Cypress
      • Emcee
      • Flutter
      • Golang
      • GoogleTest
      • Jasmine
      • JBehave
      • Jest
      • JUnit
      • Kotest
      • Marathon Cloud
      • Minitest
      • Mocha
      • MSTest
      • Nose2
      • NUnit
      • PHPUnit
      • Playwright
      • Postman
      • Pytest
      • Pytest-BDD
      • Robot Framework
      • RSpec
      • Sauce Labs
      • Selenide
      • Selenium
      • SoapUI
      • SpecFlow
      • Telerik Test Studio
      • TestCafe
      • TestComplete
      • Testim
      • TestNG
      • Unittest
      • WebdriverIO
      • XCTest
      • xUnit.net
    • Плагин Test IT Management для систем IDE
    • Использование API-клиентов
  • Миграция в Test IT

    • Миграция в Test IT: возможности и процесс
    • Миграция из Allure TestOps
    • Миграция из Azure DevOps
    • Миграция из HP ALM
    • Миграция из PractiTest
    • Миграция из Qase
    • Миграция из SpiraTest
    • Миграция из TestCollab
    • Миграция из TestLink
    • Миграция из TestRail
    • Миграция из Xray
    • Миграция из Zephyr Scale
    • Миграция из Zephyr Squad
    • Загрузка тест-кейсов в Test IT с помощью импортера
  • Дашборды

    • Работа с дашбордами
    • Работа с виджетами

      • Действия с виджетами
      • Анализ результатов тестов
      • Анализ тестов, хранящихся в библиотеке
      • Анализ автотестов
      • Анализ прогонов
      • Анализ тест-планов
      • Анализ активности команды
  • Поиск и фильтры

    • Использование фильтров
    • Работа с запросами
    • Глобальный поиск
  • Уведомления
  • API

    • Работа с API
  • Горячие клавиши
  • Глоссарий

Шаблон интеграции JMeter, Test IT и GitLab CI/CD

Содержание

  • Назначение и функциональность
  • Инструменты, применяемые в шаблоне
  • Структура проекта
  • Вынесенная конфигурация JMeter
  • Конфигурация
  • Процесс работы шаблона
  • Подготовка инфраструктуры GitLab и JMeter
  • Настройка Test IT
  • Условия успешного использования шаблона
  • Документация

Назначение и функциональность

Шаблон интеграции JMeter, Test IT и GitLab CI/CD (далее — "Шаблон") представляет готовое решение для интегрирации тестов производительности Apache JMeter с Test IT и GitLab CI/CD. Он предназначен для автоматизации тестирования производительности. При работе с шаблоном выполняются операции:

  1. Запуск тестов с помощью GitLab CI/CD
  2. Запуск тест-планов JMeter в режиме без графического интерфейса
  3. Обработка результатов тестов и создание отчетов
  4. Загрузка результатов тестов, логов и HTML-отчетов в Test IT

Шаблон поддерживает два основных метода запуска тестов:

  • Ручной/запланированный запуск из GitLab CI/CD — осуществляется непосредственно из интерфейса GitLab или по расписанию
  • Запуск через вебхуки из Test IT — производится из интерфейса Test IT, что позволяет динамически передавать параметры

Инструменты, применяемые в шаблоне

  • GitLab CI/CD — система CI/CD, оркестрирующая весь процесс, от настройки окружения до выполнения тестов и составления отчетов
  • Apache JMeter — инструмент для тестирования производительности, используемый для выполнения тест-планов .jmx
  • Test IT — cистема управления тестированием, в которой хранятся и анализируются результаты тестов
  • Test IT CLI — утилита командной строки для загрузки результатов в Test IT
  • JMeter JUnit Reporter Plugin — плагин для JMeter, который генерирует результаты тестов в формате JUnit XML, совместимом с Test IT

Структура проекта

  • Для использования шаблона создайте проект со следующей структурой:

    /ваш-проект
    |-- .gitlab-ci.yml
    |-- common.properties
    |-- /jmeter_tests
    |   |-- Login_Test.jmx
    |   `-- Checkout_Process.jmx
    |-- /jmeter_plugins
    |   `-- jmeter-junit-reporter-3.1.jar
    |-- /test_data
    |   `-- users.csv
    `-- /jmeter_reports (создается автоматически)
    

    В проект входят файлы и каталоги:

    • .gitlab-ci.yml — основной файл конфигурации CI/CD
    • common.properties — основной файл свойств JMeter для параметризации тестов
    • jmeter_tests/ — каталог, содержащий все тест-планы JMeter (файлы .jmx)
    • jmeter_plugins/ — каталог, содержащий необходимые плагины JMeter, такие как JUnit Reporter
    • test_data/ — каталог, содержащий любые внешние файлы данных, необходимых для ваших тестов (например, наборы данных CSV)
    • jmeter_reports/ — каталог, сожержащий артефакты тестов (логи, файлы JTL, отчеты JUnit и HTML). Создается автоматически конвейером CI/CD.

Вынесенная конфигурация JMeter

Преимущества вынесенной конфигурации

В шаблоне используется подход, при котором конфигурационные файлы и плагины JMeter выносятся в отдельную папку JmeterRep. Это обеспечивает следующие преимущества:

  • Контроль версий. Все конфигурационные файлы и плагины находятся под контролем версий Git, что позволяет отслеживать изменения и возвращаться к предыдущим версиям.
  • Централизованное управление. Все настройки JMeter собраны в одном месте, что упрощает администрирование и поддержку.
  • Переносимость. Конфигурация легко переносится между различными окружениями и серверами.
  • Изоляция. Изменения в конфигурации не затрагивают стандартную установку JMeter.

Структура вынесенной конфигурации

Вынесенная конфигурация имеет следующую структуру:

/JmeterRep
|-- /config                    # Конфигурационные файлы JMeter
|   |-- jmeter.properties       # Основной файл конфигурации JMeter
|   |-- common.properties       # Пользовательские свойства для тестов
|   |-- log4j2.xml             # Конфигурация логирования
|   |-- user.properties         # Дополнительные пользовательские настройки
|   `-- system.properties       # Системные свойства JMeter
|-- /extPlugins                 # Внешние плагины JMeter
|   |-- jmeter-plugins-*.jar    # JAR-файлы плагинов
|   `-- ApacheJMeter_*.jar      # Компоненты JMeter
`-- /JMeter-TestIT-GitLab-Template  # Шаблон интеграции

Стандартное расположение файлов JMeter

Конфигурационные файлы JMeter как правило располагаются в директориях:

  • $JMETER_HOME/bin/jmeter.properties
  • $JMETER_HOME/bin/user.properties
  • $JMETER_HOME/bin/system.properties
  • $JMETER_HOME/bin/log4j2.xml

Плагины JMeter как правило располагаются в директориях:

  • $JMETER_HOME/lib/ext/ — для JAR-файлов плагинов
  • $JMETER_HOME/lib/ — для основных библиотек

Настройка вынесенной конфигурации

Для использования вынесенной конфигурации:

  1. При запуске JMeter укажите путь к конфигурационным файлам:
    jmeter -p /path/to/JmeterRep/config/jmeter.properties
    
  2. Укажите путь к дополнительным плагинам через системное свойство:
    -Djmeter.ext.dirs=/path/to/JmeterRep/extPlugins
    
  3. Опционально: Вместо указания пути к дополнительным плагинам настройте переменные окружения:
    export JMETER_PROPERTIES=/path/to/JmeterRep/config/jmeter.properties
    export JMETER_EXT_DIRS=/path/to/JmeterRep/extPlugins
    

Использование виртуальных ссылок на Windows

В операционной системе Windows для связи вынесенных конфигурационных файлов и плагинов с основной установкой JMeter используются виртуальные ссылки (symbolic links).

  • Для папки с плагинами используется ссылка:

    mklink /D "%JMETER_HOME%\lib\ext" "<YOUR_PROJECT_PATH>\extPlugins"
    
  • Для конфигурационных файлов используются ссылки:

    mklink "%JMETER_HOME%\bin\jmeter.properties" "<YOUR_PROJECT_PATH>\config\jmeter.properties"
    mklink "%JMETER_HOME%\bin\common.properties" "<YOUR_PROJECT_PATH>\config\common.properties"
    mklink "%JMETER_HOME%\bin\log4j2.xml" "<YOUR_PROJECT_PATH>\config\log4j2.xml"
    

    Где:

    • %JMETER_HOME% — путь к установке JMeter (например, C:\apache-jmeter-5.6.3)
    • <YOUR_PROJECT_PATH> — путь к вашему проекту с репозиторием

Преимущества использования виртуальных ссылок:

  • JMeter находит файлы и папки в стандартных местах
  • Фактически файлы остаются в репозитории под контролем версий
  • Не требуется изменение параметров запуска JMeter
  • Упрощается развертывание и обновление конфигурации

Важно: Для создания виртуальных ссылок на Windows требуются права администратора.

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

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

Файл .gitlab-ci.yml

В файле .gitlab-ci.yml содержатся ключевые области для настройки автоматизации:

  • Глобальные переменные:

    variables:
      HOST_VM_PERF: "your.performance.server.com"  # Пример: IP-адрес или домен сервера для performance тестирования
      JMETER_application: "cloud"   # По умолчанию используется cloud версия
    
  • Переменные для интеграции с Test IT (в шаблоне .common_job):

    variables:
      TESTIT_UPLOAD_URL: https://your-testit-instance.com/  # Пример: замените на ваш адрес Test IT
      TESTIT_PROJECT_ID: 00000000-0000-0000-0000-000000000000  # Пример ID проекта
      TESTIT_CONFIGURATION_ID: 11111111-1111-1111-1111-111111111111  # Пример ID конфигурации
    
  • Стадии пайплайна (конвейера):

    stages:
      - prepare      # Подготовительная стадия - загрузка данных, настройка окружения
      - perf_tests   # Основные performance тесты (полные сценарии нагрузочного тестирования)
      - service      # Сервисные тесты (тестирование отдельных API endpoints)
      - custom       # Кастомные тесты (специальные сценарии для конкретных компонентов)
    
  • Примеры определения задач (jobs):

    1. Основной performance тест:

      perf-tms-cloud-job:
        extends:
          - .before
          - .common_job
        stage: perf_tests
        variables:
          TEST_PLAN_FILE: "jmx/perfTests/tms.jmx"
        rules:
          - if: '$CI_PIPELINE_SOURCE == "trigger" && $JMETER_testName == "tms" && $JMETER_application == "cloud"'
            when: on_success
          - when: manual
            allow_failure: true
            variables:
              RUN_TYPE: "tst"
      
    2. Сервисный тест:

      perf-auth-cloud-job:
        extends:
          - .before
          - .common_job
        stage: service
        variables:
          TEST_PLAN_FILE: "jmx/service/auth.jmx"
        rules:
          - if: '$CI_PIPELINE_SOURCE == "trigger" && $JMETER_testName == "auth" && $JMETER_application == "cloud"'
            when: on_success
          - when: manual
            allow_failure: true
      
    3. Enterprise-версия теста:

      perf-tms-ent-job:
        extends:
          - .before
          - .common_job
        stage: perf_tests
        variables:
          TEST_PLAN_FILE: "jmx/perfTests/tms.jmx"
          RUN_TYPE: "tst"
          JMETER_application: "ent"  # Переопределяем для enterprise
      
  • Принципы именования:

    • Переменная TEST_PLAN_FILE указывает путь к .jmx-файлу относительно корня проекта.
    • Имя задачи (job) может быть любым, но должно быть уникальным.
    • Для автоматического запуска из Test IT используется переменная JMETER_testName, которая должна соответствовать значению в конфигурации Test IT.

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

  • Обязательные переменные CI/CD (настраиваются в GitLab Settings > CI/CD > Variables):

    ПеременнаяОписаниеПример значенияТип
    TESTIT_PRIVATE_TOKENПриватный токен для доступа к Test IT APIyour-secret-tokenMasked
    SSH_PRIVATE_KEYSSH ключ для доступа к performance серверу-----BEGIN OPENSSH PRIVATE KEY-----...Masked
  • Переменные для настройки окружения:

    ПеременнаяОписаниеЗначение по умолчаниюГде используется
    HOST_VM_PERFIP-адрес performance сервераyour.performance.server.comГлобально
    JMETER_applicationТип приложения (cloud/ent)cloudГлобально
    TESTIT_UPLOAD_URLURL Test IT инстансаhttps://your-testit-instance.com/.common_job
    TESTIT_PROJECT_IDID проекта в Test IT00000000-0000-0000-0000-000000000000.common_job
    TESTIT_CONFIGURATION_IDID конфигурации в Test IT11111111-1111-1111-1111-111111111111.common_job
    PUBLIC_REPORTS_URLБазовый URL для HTML отчетовhttp://your-reports-server.com/reports/.common_job
    JMETER_HOMEПуть к JMeter на runner/opt/jmeter.before
  • Переменные для запуска из Test IT с помощью вебхуков:

    ПеременнаяОписаниеПример значения
    JMETER_testNameИмя теста для запускаtms, auth, registration
    JMETER_applicationТип приложенияcloud, ent
    TESTIT_TESTRUN_IDID тест-рана в Test IT12345678-1234-1234-1234-123456789012
    RUN_TYPEТип запускаTESTIT_RUN, tst

Файлы JMeter common.properties и jmeter.properties

Для конфигурации Jmeter шаблон использует два ключевых файла: jmeter.properties и common.properties. Такая связка позволяет гибко управлять настройками.

  • jmeter.properties — стандартный файл конфигурации JMeter. Его основная задача — указать JMeter на использование дополнительного файла свойств. Добавляется следующая настройка:

    user.properties = ./config/common.properties
    

    JMeter загрузит все свойства, определенные в common.properties при запуске. Таким образом, не нужно каждый раз указывать путь к common.properties через флаг -q в командной строке, что упрощает команду запуска в CI/CD.

  • common.properties — основной файл для параметризации тестов, определяющий все параметры, специфичные для проекта: количество пользователей, целевые хосты, настройки окружения и другие конфигурационные данные. Использование отдельного файла для этих целей делает конфигурацию чистой, переносимой и легко управляемой.

  • Работа Jmeter с файлами:

    1. При запуске JMeter читает jmeter.properties.
    2. Обнаружив директиву user.properties=./config/common.properties, он загружает все свойства из common.properties.
    3. Важно: Свойства из common.properties при загрузке JMeter становятся параметрами JMeter, а не переменными. В JMX-сценариях доступ к этим параметрам осуществляется через функцию ${__P(имя_параметра, значение_по_умолчанию)}. Например, ${__P(threads, 1)}. Не путайте параметры с обычными переменными JMeter.
  • Пример структурированного файла common.properties:

    # ====================================================================
    #                          ОСНОВНЫЕ ПАРАМЕТРЫ ТЕСТА
    # ====================================================================
    # Количество виртуальных пользователей (потоков)
    threads=10
    # Время разгона (в секундах)
    rampup=5
    # Продолжительность теста (в секундах)
    duration=300
    
    # ====================================================================
    #                          ПАРАМЕТРЫ ОКРУЖЕНИЯ
    # ====================================================================
    # Имя хоста или IP-адрес целевого сервера
    target.host=your.test.server.com
    # Протокол (http или https)
    protocol=https
    

Тест-планы JMeter

Тест-планы JMeter создаются в формате .jmx.Чтобы сделать ваши тест-планы совместимыми с этим фреймворком:

  1. Используйте функцию ${__P(property_name, default_value)} для чтения значений из файла common.properties. - Пример: в группе потоков установите Number of Threads (users) в ${__P(threads, 1)}.
  2. Используйте плагин JUnit Reporter: 1. Добавьте слушатель jp@gc - JUnit Reporter в свой тест-план. 2. Настройте его для сохранения отчета по пути, который может найти скрипт CI. Шаблон .gitlab-ci.yml ожидает его по адресу $REPORT_DIR/junit.xml, что соответствует jmeter_reports/Your_Job_Name/junit.xml.

Процесс работы шаблона

Работа шаблона включает в себя этапы:

  1. Обработка переменных
  2. Выполнение тестов
  3. Интеграция с Test IT

1. Обработка переменных

  1. Определение переменных GitLab CI происходит в .gitlab-ci.yml или в настройках проекта GitLab. Они управляют процессом работы CI/CD.
  2. Запуск тестов из Test IT с помощью вебхука, содержащего переменные Test IT. Когда тест запускается из Test IT, он может отправлять полезную нагрузку JSON с переменными (TESTIT_VARIABLES). Скрипт .before в файле CI включает раздел-заполнитель, показывающий, как можно разобрать этот JSON (с помощью инструмента jq) и динамически обновить файл common.properties перед запуском теста.
  3. Определение свойства JMeter. JMeter загружает все переменные из common.properties во время выполнения. Таким образом, параметры, такие как количество потоков, хосты и продолжительность, передаются в тест-план.

2. Выполнение тестов

  1. Запуск конвейера GitLab CI (например, вручную, по расписанию или через вебхук Test IT).
  2. Начало выполнения задания, запуск скрипта .before, который подготавливает окружение.
  3. Выполнение скрипта .common_job: a. Скрипт определяет план тестирования для запуска на основе имени задания ($CI_JOB_NAME). b. Скрипт запускает JMeter с указанным планом тестирования и файлом свойств. c. JMeter выполняет тест и с помощью плагина JUnit Reporter создает файл junit.xml. d. JMeter также создает подробный HTML-отчет.
  4. Вставка ссылки в общедоступный HTML-отчет. Ссылка помещается в файл junit.xml с помощью скрипта. Это делает отчет доступным непосредственно из тестового запуска Test IT.
  5. Вызов testit CLI для загрузки результатов junit.xml в Test IT.

Пример выполнения JMeter-теста

В Test IT мы запускаем тесты с использованием следующих параметров:

  # -n : запуск в неинтерактивном режиме (без GUI)
  # -t : путь к файлу тестового плана (.jmx файл)
  # -l : файл для сохранения результатов в формате JTL
  # -e : генерация HTML отчета после выполнения
  # -o : директория для HTML отчета
  # -q : файл с дополнительными свойствами (наша конфигурация)
  
  # Задержка только для ночных прогонов (nightly run)
  if [ "$FINAL_RUN_TYPE" = "nr" ]; then
    echo "Nightly run detected - sleeping for 900 seconds to avoid peak hours"
    sleep 900
  else
    echo "Non-nightly run - starting immediately (FINAL_RUN_TYPE: $FINAL_RUN_TYPE)"
  fi
  
  jmeter -n -t ./$TEST_PLAN_FILE -l ./reports/results.jtl -e -o ./reports/report -q ./config/common.properties

3. Интеграция с Test IT

  • Создание тестового запуска. Скрипт определяет, создавать ли новый тестовый запуск в Test IT или прикреплять результаты к существующему (если конвейер был запущен вебхуком Test IT, который передает $TESTIT_TESTRUN_ID).
  • Загрузка результатов. Команда testit results import выполняет основную работу. Она использует формат JUnit, связывает результаты с правильным проектом и конфигурацией и прикрепляет весь каталог HTML-отчетов для детального анализа.
  • Организация пространства имен. Флаг --namespace помогает организовать результаты в Test IT, предотвращая коллизии имен тестов, если в одном проекте тестируется несколько приложений.

Подготовка инфраструктуры GItLab и JMeter

Подготовка образа Docker

Важно: Для работы пайплайна необходимо предварительно собрать и разместить Docker образ в реестре контейнеров.

  1. Подготовьте сборку Docker-образа:

    # Перейдите в директорию с Dockerfile
    cd JMeter-TestIT-GitLab-Template
    
    # Соберите образ
    docker build -t your-registry/jmeter-testit:latest .
    
  2. Загрузите Docker-образ в реестр:

    # Загрузите образ в ваш Docker реестр
    docker push your-registry/jmeter-testit:latest
    
  3. Обновите файл .gitlab-ci.yml:

    # Укажите ваш образ в секции image
    .common_джоб:
      image: your-registry/jmeter-testit:latest
    

Готовый Dockerfile находится в файле Dockerfile и содержит:

  • OpenJDK 11 (Alpine Linux)
  • Apache JMeter 5.6.3
  • TestIT CLI для интеграции
  • Необходимые системные утилиты (rsync, ssh, python3)
  • Настроенное логирование для CI/CD

Быстрый старт

  1. Клонируйте репозиторий. Начните с этого репозитория-шаблона.
  2. Настройте .gitlab-ci.yml:
    • Заполните TESTIT_URL, TESTIT_PROJECT_ID и TESTIT_CONFIGURATION_ID.
    • Установите TESTIT_PRIVATE_TOKEN как маскированную переменную CI/CD в GitLab.
    • Обновите HOST_VM_PERF и другие переменные, специфичные для окружения.
  3. Создайте файл common.properties и добавьте в него параметры вашего теста.
  4. Добавьте тест-планы JMeter: поместите ваши файлы .jmx в каталог jmeter_tests/.
    • Убедитесь, что они параметризованы с помощью функций ${__P()}.
    • Добавьте слушатель JUnit Reporter в каждый тест-план.
  5. Добавьте плагины JMeter: поместите jmeter-junit-reporter-*.jar и любые другие необходимые плагины в каталог jmeter_plugins/.
  6. Создайте задания GitLab CI/CD: для каждого файла .jmx создайте соответствующее задание в .gitlab-ci.yml, которое расширяет .common_job. Помните о соглашении об именах!
  7. Запустите конвейер: отправьте свои изменения в GitLab и запустите конвейер.

Пошаговая настройка на основе существующего проекта

Если у вас уже есть настроенный GitLab CI для JMeter-тестов, выполните следующие шаги для интеграции с шаблоном:

Шаг 1: Анализ существующей структуры

  1. Проверьте структуру ваших задач (jobs):

    • Определите, какие стадии используются (perf_tests, service, custom)
    • Найдите переменные TEST_PLAN_FILE в ваших задачах
    • Проверьте правила запуска (rules) для каждой задачи
  2. Сопоставьте переменные:

    # Ваши текущие переменные → Переменные шаблона
    HOST_VM_PERF → HOST_VM_PERF (без изменений)
    JMETER_application → JMETER_application (без изменений)
    

Шаг 2: Адаптация задач (jobs)

  1. Замените extends в ваших задачах:

    # Было:
    your-job:
      extends: .your_template
    
    # Стало:
    your-job:
      extends:
        - .before
        - .common_job
    
  2. Обновите переменные задач (jobs):

    # Добавьте переменную TEST_PLAN_FILE если её нет:
    variables:
      TEST_PLAN_FILE: "jmx/perfTests/your-test.jmx"
    

Шаг 3: Настройка интеграции с Test IT

  1. Добавьте переменные Test IT в .common_job:

    variables:
      TESTIT_UPLOAD_URL: https://your-testit-instance.com/  # Пример адреса Test IT
      TESTIT_PROJECT_ID: your-project-id  # Пример ID проекта (получить можно через Chrome DevTools)
      TESTIT_CONFIGURATION_ID: your-configuration-id  # Пример ID конфигурации (получить можно через Chrome DevTools)
    
  2. Настройте правила запуска вебхуков:

    rules:
      - if: '$CI_PIPELINE_SOURCE == "trigger" && $JMETER_testName == "your-test-name"'
        when: on_success
      - when: manual
        allow_failure: true
    

Шаг 4: Проверка совместимости

  1. Убедитесь, что ваши .jmx-файлы соответствуют требованиям:

    • Используют переменные из common.properties
    • Генерируют JUnit XML отчеты
    • Настроены для работы с переменными окружения
  2. Проверьте структуру папок:

    ├── jmx/
    │   ├── perfTests/     # Основные performance-тесты
    │   ├── service/       # Сервисные тесты
    │   └── custom/        # Кастомные тесты
    ├── testData/          # Тестовые данные
    └── plugins/           # JMeter-плагины
    

Настройка Test IT

Настройка параметров проекта

  • В разделе Параметры проекта Test IT создайте следующие параметры:
#ПараметрНазначениеЗначения
1runTypeТип запуска тестов — используется для определения типа тестированияapi, regression, smoke, load
2testNameНазвание теста (задачи (job)) — определяет название задачи в GitLab CI, которое должно совпадать с именем .jmx-файла. Например, для файла Login_Test.jmx параметр должен быть Login_Test.Login_Test, Checkout_Process, Search_Functionality
3applicationНазвание приложения — используется для группировки результатов.perf, cloud, api
4hostХост для тестирования — определяет целевой сервер для нагрузочного тестирования.URL тестируемого приложения
5loopCountКоличество итераций — определяет количество повторений тестаЧисловые (1, 625, 1500, 5000)
6userNumКоличество пользователей — определяет количество виртуальных пользователейЧисловые (1, 10, 15, 20, 22, 25)

Настройка конфигураций

  • В разделе Конфигурации создайте конфигурации для различных сценариев:
  1. Базовые конфигурации:

    • Создайте конфигурации (например, "Load Test — Cloud Standard")
    • Укажите описание конфигурации
    • Установите флаг По умолчанию для основной конфигурации
  2. Привязка параметров:

    • Для каждой конфигурации установите специфичные значения параметров
    • Например:
      • application: cloud
      • host: perf
      • loopCount: 625
      • runType: lst
      • testName: Login_Test
      • userNum: 4
  3. Управление конфигурациями:

    • Используйте различные конфигурации для разных типов тестирования
    • Настройте параметры в соответствии с требованиями каждого сценария
    • Регулярно обновляйте конфигурации при изменении требований к тестированию

Настройка вебхука в Test IT

  • Для автоматического запуска тестов из Test IT необходимо настроить вебхук для [запуска автотестов]https://docs.testit.software/user-guide/work-with-projects/set-up-webhooks/webhook-for-autotests.html#%D0%B2%D0%B5%D0%B1%D1%85%D1%83%D0%BA-%D0%B4%D0%BB%D1%8F-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0-%D0%B0%D0%B2%D1%82%D0%BE%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2), который будет отправлять запросы в GitLab CI/CD.

Параметры вебхука в Test IT

  1. Общие настройки:

    • Название: Запуск автотестов
    • Состояние: Запущен
  2. URL и метод:

    • URL: https://your-gitlab-instance.com/api/v4/projects/{PROJECT_ID}/trigger/pipeline
    • Тип запроса: POST
    • {PROJECT_ID} — ID вашего проекта в GitLab (пример значения по умолчанию)
  3. Заголовки HTTP:

    • Параметр: Content-Type
    • Значение: application/json
  4. Тело запроса HTTP:

    • Заменить системные параметры: ✅
    • Экранировать параметры: ✅
    • Пользовательский контекст:
      {
      "ref": "main",
      "token": "YOUR_GITLAB_TOKEN",
      "variables": {
         "TESTIT_PROJECT_ID": "$PROJECT_ID",
         "TESTIT_CONFIGURATION_ID": "$CONFIGURATION_IDS",
         "TESTIT_TEST_RUN_ID": "$TEST_RUN_ID",
         "JMETER_loopCount": "$CONFIGURATIONS_PARAMETERS[loopCount]",
         "JMETER_usrNum": "$CONFIGURATIONS_PARAMETERS[usrNum]",
         "JMETER_host": "$CONFIGURATIONS_PARAMETERS[host]",
         "JMETER_application": "$CONFIGURATIONS_PARAMETERS[application]",
         "JMETER_testName": "$CONFIGURATIONS_PARAMETERS[testName]",
         "runType": "$CONFIGURATIONS_PARAMETERS[runType]"
       }
      }
      

    Примечание: Все указанные токены и ID являются примерами значений по умолчанию. Замените их на реальные значения из вашего окружения.

    Описание параметров:

    • ref — ветка репозитория для запуска тестов
    • token — токен GitLab для управления проектом
    • TESTIT_* — системные переменные Test IT, формируются автоматически
    • JMETER_* — параметры JMeter, настраиваются в конфигурациях Test IT

    Все ID проекта и конфигурации, приведенные в теле запроса — это примеры значений по умолчанию. Получить реальные данные ID можно через просмотр данных в интерфейсе Test IT или Chrome DevTools при работе с Test IT.

После настройки вебхуков и параметров, запуск любого автотеста в Test IT будет автоматически передавать данные в GitLab CI/CD, где будет выполняться соответствующий тест JMeter. Результаты тестирования будут автоматически переданы обратно в Test IT.

Условия успешного использования шаблона

Шаблон предоставляет полнофункциональную интеграцию между JMeter, GitLab CI/CD и Test IT. Он автоматизирует выполнение тестов производительности, генерацию отчетов и загрузку результатов в систему управления тестированием.

Для успешного использования:

  1. Настройте переменные окружения в GitLab
  2. Адаптируйте тест-планы под ваши требования
  3. Настройте Test IT CLI для вашего экземпляра
  4. Настройте вебхук в Test IT для автоматического запуска тестов
  5. Протестируйте интеграцию на тестовом окружении

При возникновении вопросов обращайтесь к документации JMeter, GitLab CI/CD и Test IT, а также к указанным выше ссылкам на документацию компонентов.

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

Все возможности шаблона и его параметры описаны в документации:

  • JMeter JUnit Reporter Plugin: https://github.com/tilln/jmeter-junit-reporter
  • Test IT CLI: https://docs.testit.software/user-guide/integrations/cli.html
  • Документация Test IT: https://docs.testit.software/
Обновлено: