С какими системами управления тестированием (TMS) вы работали?

«С какими системами управления тестированием (TMS) вы работали?» — вопрос из категории Тестовая документация, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Я имел опыт работы с несколькими TMS, которые интегрировались в процессы команд разработки и тестирования.

TestRail: Использовал его как основную систему для хранения ручных тест-кейсов, планирования тестовых прогонов и формирования отчетности. Настраивал интеграцию с JIRA для автоматического обновления статусов багов и линковки требований. Его REST API активно применял для автоматической отправки результатов выполнения автотестов, что позволяло иметь актуальную историю прохождения тестов.

Allure TestOps: Работал с этой системой в связке с фреймворком Allure для отчетов по автотестам. Ценил её за мощные возможности аналитики (тренды, графики стабильности), управление тестовой документацией в стиле BDD (возможность привязки автотестов к сценариям Gherkin) и глубокую интеграцию с CI/CD (Jenkins, GitLab CI).

Zephyr Scale (для JIRA): Применял в проектах, где требовалась тесная интеграция управления тестами непосредственно внутри JIRA. Использовал его гибкость для создания как структурированных тест-кейсов, так и BDD-сценариев. Удобно было то, что вся информация — от требований до тестов и дефектов — была сосредоточена в одном инструменте.

Xray: Работал с ним в качестве аддона для JIRA. Основные задачи — это создание и организация тест-кейсов, планирование тестовых прогонов и, что особенно важно, поддержка формата Cucumber (Gherkin). Это позволяло напрямую ассоциировать фичи-файлы с автотестами и визуализировать их выполнение в JIRA.

Пример интеграции автотестов с TestRail через его API на Python:

import requests

def report_test_result_to_testrail(test_run_id: int, test_case_id: int, status: str, comment: str = ""):
    """
    Отправляет результат выполнения теста в TestRail.
    """
    base_url = "https://your-company.testrail.io"
    endpoint = f"/index.php?/api/v2/add_result_for_case/{test_run_id}/{test_case_id}"
    url = base_url + endpoint

    # Аутентификация через логин и API-ключ (можно использовать токен)
    auth = ("your.email@company.com", "your-api-key")

    # Маппинг статуса теста на ID статуса в TestRail (1-Passed, 5-Failed)
    status_id_map = {"passed": 1, "failed": 5, "blocked": 2}
    status_id = status_id_map.get(status.lower(), 5)  # По умолчанию - Failed

    payload = {
        "status_id": status_id,
        "comment": comment or f"Test executed via automation. Result: {status}"
    }

    headers = {"Content-Type": "application/json"}

    try:
        response = requests.post(url, auth=auth, headers=headers, json=payload)
        response.raise_for_status()  # Вызовет исключение для кодов 4xx/5xx
        print(f"Result for case {test_case_id} reported successfully.")
    except requests.exceptions.RequestException as e:
        print(f"Failed to report result to TestRail: {e}")

# Использование в фикстуре или tearDown методе автотеста
# report_test_result_to_testrail(run_id=15, case_id=305, status="passed")

Выбор TMS всегда зависел от процессов команды, стека технологий и необходимости интеграции с другими инструментами (JIRA, CI/CD).