Какой у вас опыт работы с XML в контексте тестирования?

«Какой у вас опыт работы с XML в контексте тестирования?» — вопрос из категории Форматы данных, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Есть опыт работы с XML для валидации, парсинга и генерации тестовых данных.

Основные задачи:

  • Парсинг и извлечение данных: Получение конкретных значений из XML-ответов SOAP API или конфигурационных файлов.
  • Валидация структуры: Проверка XML на соответствие XSD (XML Schema Definition) или DTD.
  • Использование XPath: Мощный язык запросов для навигации по элементам и атрибутам в XML-документе.
  • Генерация тестовых данных: Создание корректных и некорректных XML-документов для негативного тестирования.

Пример теста на Python с использованием lxml для валидации и XPath:

from lxml import etree

def test_soap_response_structure_and_data():
    """Тест валидирует SOAP-ответ по XSD и проверяет данные с помощью XPath."""
    xml_response = """
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
            <GetUserResponse>
                <User>
                    <ID>1001</ID>
                    <Name>John Doe</Name>
                    <Active>true</Active>
                </User>
            </GetUserResponse>
        </soap:Body>
    </soap:Envelope>
    """

    # 1. Загружаем XML и XSD схему
    xml_doc = etree.fromstring(xml_response.encode())
    xsd_doc = etree.parse("user_schema.xsd")
    xsd = etree.XMLSchema(xsd_doc)

    # 2. Валидация структуры
    is_valid = xsd.validate(xml_doc)
    assert is_valid, f"XML не соответствует XSD: {xsd.error_log}"

    # 3. Извлечение данных с помощью XPath
    user_id = xml_doc.xpath("//User/ID/text()")[0]
    user_name = xml_doc.xpath("//User/Name/text()")[0]

    assert user_id == "1001"
    assert user_name == "John Doe"
    print("Тест пройден: XML валиден и данные корректны.")

Почему это важно: Многие enterprise-системы и протоколы (например, SOAP) используют XML. Умение его проверять критически для обеспечения корректности обмена данными.