Откуда берутся ожидаемые результаты для тестов?

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

Ответ

Ожидаемый результат (expected result) — это эталон корректного поведения системы. Его источники иерархичны:

1. Первичные (формальные) источники:

  • Требования (SRS/User Stories): Функциональные и нефункциональные спецификации.
  • Техническая документация: API-спецификации (Swagger/OpenAPI), схемы баз данных.
  • Макеты и дизайн-системы (UI): Для проверки визуального соответствия.

2. Вторичные и практические источники:

  • Общение с командой: Уточнение у аналитика (BA), разработчика (Dev) или владельца продукта (PO).
  • Анализ работы системы: Изучение поведения существующей (legacy) системы или аналогов.
  • Эталонные данные/скриншоты: Для регрессионного и визуального тестирования.

Пример для API-теста на Python (pytest):

import requests

def test_get_user_by_id():
    # 1. Ожидаемый результат взят из спецификации OpenAPI
    expected_user_schema = {
        "type": "object",
        "properties": {
            "id": {"type": "integer"},
            "name": {"type": "string"},
            "email": {"type": "string", "format": "email"}
        },
        "required": ["id", "name", "email"]
    }

    # 2. Конкретные ожидаемые данные из тестового сценария
    expected_data = {
        "id": 1,
        "name": "Leanne Graham",
        "email": "Sincere@april.biz"
    }

    # Выполнение запроса и проверка
    response = requests.get("https://jsonplaceholder.typicode.com/users/1")
    actual_data = response.json()

    # Проверка структуры (соответствие схеме)
    assert validate_schema(actual_data, expected_user_schema)
    # Проверка значений
    assert actual_data == expected_data

Важно: При отсутствии формальных требований ожидаемый результат должен быть согласован и зафиксирован (например, в тест-кейсе), чтобы избежать разночтений.