Контекст
HTTP (HyperText Transfer Protocol) — это текстовый протокол прикладного уровня, по которому браузер, мобильное приложение или любой другой клиент общается с веб-сервером. QA-инженер работает с HTTP каждый день: снимает трафик в DevTools, составляет запросы в Postman, разбирает баг-репорты. Без понимания модели клиент-сервер невозможно толково описать ни одну ошибку API.
- Клиент — это сторона, которая инициирует соединение и формулирует запрос (браузер, мобильное приложение, Postman, curl).
- Сервер — сторона, которая принимает запрос, обрабатывает его и отправляет ответ.
- HTTP работает поверх TCP/IP: каждый запрос — это отдельное «письмо» с чётко определённой структурой (стартовая строка, заголовки, тело).
- HTTP/1.1 использует текстовый формат; HTTP/2 и HTTP/3 бинарные, но для QA смысловая модель остаётся той же.
- HTTPS — то же самое, что HTTP, но канал зашифрован через TLS; тестировщику это важно при проверке сертификатов и перехвате трафика.
Рабочий алгоритм
Когда вы тестируете API-взаимодействие, пройдитесь по следующему чеклисту, чтобы восстановить полную картину запроса и ответа:
- Определите клиента: кто отправляет запрос — браузер, мобильное приложение или сервис-потребитель?
- Зафиксируйте HTTP-метод и URL: это точка входа в API.
- Откройте вкладку Network в DevTools или Postman Console — посмотрите стартовую строку запроса (метод + путь + версия протокола).
- Изучите заголовки запроса: Content-Type, Authorization, Accept — они определяют контракт обмена.
- Получите ответ: запомните статус-код, заголовки ответа и тело — именно их вы будете проверять.
- Убедитесь, что соединение завершилось корректно: нет таймаутов, нет обрыва TCP-сессии.
Пример из практики
Тестировщик проверяет, что профиль пользователя загружается после входа. В Postman он отправляет: GET /api/v1/users/me HTTP/1.1 Host: api.example.com Authorization: Bearer eyJhbGciOiJIUzI1NiJ9... Accept: application/json Сервер возвращает: HTTP/1.1 200 OK Content-Type: application/json {"id":"usr_1847","email":"alice@example.com","plan":"pro","createdAt":"2025-03-12T09:00:00Z"} Вывод: клиент (Postman) сформировал запрос с Bearer-токеном, сервер аутентифицировал его, нашёл пользователя и вернул JSON с полным профилем. Статус 200 и наличие поля email — первые два assertion в тест-кейсе.
Частые ошибки
Новички в API-тестировании регулярно попадают в следующие ловушки:
- Путают клиент и сервер в баг-репорте — пишут «сервер не отправил запрос», хотя имеют в виду клиентскую ошибку формирования запроса.
- Игнорируют версию протокола: API на HTTP/2 может вести себя иначе в части мультиплексирования — важно уточнять при репродукции.
- Считают HTTPS и HTTP идентичными для тестирования: при перехвате HTTPS-трафика нужно установить доверенный сертификат прокси (Charles, mitmproxy), иначе запросы не будут видны.
- Не смотрят на стартовую строку ответа — пропускают случаи, когда сервер вернул HTTP/1.0 вместо ожидаемого HTTP/1.1, что влияет на keep-alive.