← Назад к вопросам

С какими TMS работал

2.0 Middle🔥 132 комментариев
#Теория тестирования

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Интеграция с системами управления тестированием (TMS) в автоматизации

В рамках автоматизации end-to-end и CI/CD процессов я интегрировал автотесты с несколькими системами управления тестированием, что позволяет централизованно управлять тест-кейсами, планами исполнения, артефактами и анализировать результаты. Основной задачей было обеспечение бесшовной двусторонней синхронизации между кодом автотестов и TMS.

Jira + Zephyr Scale / Squad

Наиболее распространенная связка в корпоративной среде. Для интеграции использовались:

  • REST API Zephyr Scale для создания/обновления тест-кейсов, циклов тестирования и отправки результатов.
  • Кастомные аннотации в коде для привязки тестов к ключам тест-кейсов (например, @TestCaseKey("PROJ-123")).
  • Плагины для CI/CD (Jenkins, GitLab CI) для генерации отчетов и обновления статусов.
// Пример интеграции с Zephyr Scale через REST API после выполнения теста
@Test
@TestCaseKey("PROJ-456")
public void testLoginWithValidCredentials() {
    // Код теста
    // ...
    // После выполнения отправляем результат в TMS
    TestResult result = new TestResult("PROJ-456", TestStatus.PASS, "Test passed successfully");
    zephyrClient.sendResult(result);
}

TestRail

Использовал для проектов с требованием детальной аналитики и сложной иерархией тест-планов. Интеграция включала:

  • Official TestRail API для массового импорта автотестов как тест-кейсов и отправки результатов прогонов.
  • Кастомную сборку на Python или Java для маппинга структуры проектов (Sections, Suites) и синхронизации.
  • Генерацию отчетов в формате, совместимом с TestRail, для автоматического обновления статусов.
# Пример отправки результата в TestRail через API
import testrail

def send_test_result(case_id, run_id, status):
    client = testrail.APIClient('https://your.testrail.io/')
    client.user = 'user'
    client.password = 'api_key'
    
    result_data = {
        "status_id": 1 if status == "passed" else 5,  # 1 - Passed, 5 - Failed
        "comment": "Automatic test execution via CI",
    }
    response = client.send_post(f'add_result_for_case/{run_id}/{case_id}', result_data)
    return response

Qase

Для современных cloud-проектов применял Qase благодаря его удобному API и встроенной интеграции с популярными фреймворками:

  • Qase TMS API для синхронизации тестов, используя их теги или специальные методы в коде.
  • Готовые плагины для TestNG, JUnit 5, pytest, которые значительно упрощают интеграцию.
  • Настройку автоматического создания тест-рана при запуске в CI и публикации результатов с детализацией по шагам.
// Пример использования аннотаций Qase в Java-тесте
import io.qameta.allure.*;
import io.qase.api.annotation.QaseTitle;
import io.qase.api.annotation.QaseId;

public class CheckoutTest {
    @Test
    @QaseId(123)
    @QaseTitle("Successful checkout with credit card")
    public void checkoutWithCreditCard() {
        // Шаги теста
    }
}

Allure TestOps

Работал с Allure TestOps как частью Allure Framework, что обеспечивало глубокую интеграцию с отчетами Allure:

  • Автоматическое связывание Allure-отчетов из CI с тест-кейсами в TestOps.
  • Использование Allure Labels (@AllureId, @Epic, @Story) для организации тестов и их синхронизации.
  • Настройка автоматического обновления статусов тест-кейсов на основе результатов выполнения в Jenkins или TeamCity.

Кастомизированные решения и внутренние TMS

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

  • Разрабатывать adapter layer на основе REST или GraphQL API для взаимодействия.
  • Настраивать синхронизацию через webhooks или обработку событий в CI/CD пайплайне.
  • Создавать скрипты-миграторы для переноса тест-кейсов из одной системы в другую.

Ключевые принципы, которых я придерживаюсь при интеграции:

  1. Идемпотентность синхронизации: повторный запуск не создает дубликатов.
  2. Минимальное воздействие на код тестов: использование аннотаций/тегов, а не жесткого кода интеграции.
  3. Надежная обработка ошибок при работе с API TMS, чтобы сбои не ломали процесс тестирования.
  4. Сохранение контекста: прикрепление логиров, скриншотов, данных запросов/ответов к результатам в TMS.

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