Как вы тестируете HTTP GET-запросы?

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

Ответ

Тестирование GET-запросов фокусируется на корректности данных, параметрах запроса, кодах ответа и заголовках.

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

  1. Позитивные сценарии: Валидация структуры и данных ответа при корректных параметрах.
  2. Негативные сценарии: Проверка обработки невалидных или отсутствующих параметров, несуществующих ресурсов.
  3. Параметры запроса: Тестирование фильтрации, пагинации, сортировки через query-параметры.
  4. Заголовки (Headers): Проверка Content-Type, Cache-Control, CORS-заголовков.
  5. Производительность: Проверка времени ответа и соблюдения лимитов (rate limiting).

Пример теста на Python с библиотекой requests:

import requests
import pytest

def test_get_user_with_valid_id():
    # GET-запрос с параметром
    response = requests.get(
        'https://api.example.com/users',
        params={'id': 1, 'fields': 'name,email'}
    )

    # Проверки
    assert response.status_code == 200
    assert response.headers['Content-Type'] == 'application/json'

    user_data = response.json()
    assert user_data['id'] == 1
    assert 'name' in user_data
    assert 'email' in user_data

def test_get_user_with_invalid_id():
    # Проверка обработки ошибки
    response = requests.get('https://api.example.com/users', params={'id': 99999})
    assert response.status_code == 404

Инструменты: Postman (для ручного тестирования и коллекций), curl для быстрых проверок, автотесты на Python/pytest для регрессии.