Ниже — вопросы с коротким и развернутым ответом по следующим темам:
- Backend-тестирование
- Сетевые протоколы (HTTP / gRPC)
- Взаимодействие клиент ↔ сервер
- Методы/статусы
- Cookie
- Frontend-тестирование
- DevTools
- Локаторы и автоматизация (Page Object, WebDriver)
Каждый вопрос сопровождается:
🟢 Короткий ответ — по сути (1-2 предложения)
📘 Развернутый ответ — с пояснением, примерами, при необходимости
Подписывайтесь на мой канал в Телеграмм, чтобы ничего не пропустить.
Ну или на канал в VK, если хотите видеть новые статьи у себя в ленте.
🟩 BACKEND
Что такое backend-тестирование?
🟢 Проверка логики работы серверной части, API, БД, правил обработки данных.
📘 Backend-тестирование охватывает тестирование SOAP/REST/gRPC/GraphQL API, бизнес-логики, взаимодействий с базами данных, микросервисными коммуникациями, авторизацией и проверкой безопасности. Тестируются валидность данных, коды ответов, эффективность обработки, ошибки.
Чем отличается REST API от gRPC API?
🟢 REST — текстовый, HTTP/1.x, JSON; gRPC — бинарный, HTTP/2, protobuf.
📘 REST использует JSON-передачи поверх HTTP/1.1, легко читается, подходит для публичных API. gRPC от Google использует Protocol Buffers (protobuf), HTTP/2, передает бинарные данные. gRPC быстрее, строже по схеме, но требует .proto и сложнее для отладки.
Какие типы RPC есть в gRPC?
🟢 Unary, Client Streaming, Server Streaming, Bidirectional Streaming.
📘 Это четыре типа вызовов в gRPC: Unary (1 запрос — 1 ответ), Client Streaming (клиент шлёт поток, ответ один), Server Streaming (один запрос, поток ответов), Bidirectional (обе стороны шлют поток). Все работают по HTTP/2 и используют protobuf.
Какие инструменты ты используешь при тестировании API?
🟢 Postman, curl, grpcurl, BloomRPC, Swagger.
📘 Postman — для REST, grpcurl/BloomRPC/Insomnia — для gRPC. Swagger/OpenAPI — для документации. Также использую Python (requests, grpcio), Charles/Fiddler для перехвата трафика, pytest для автотестов, Postgres для ручного анализа данных.
🟩 СЕТЕВЫЕ ПРОТОКОЛЫ
Структура HTTP-запроса:
— Метод
— URL
— Заголовки (Headers)
— Тело (Body)
— Query-параметры
📌 Основные и дополнительные HTTP-методы:
- GET
🔹 Получение данных с сервера.
🔸 Примеры: получение списка статей, получение одного пользователя.
📌 Не имеет тела запроса.
📌 Идемпотентен. - POST
🔹 Создание нового ресурса.
🔸 Примеры: регистрация пользователя, оформление заказа.
📌 Имеет тело запроса.
📌 Не идемпотентен. - PUT
🔹 Полная замена ресурса.
🔸 Пример: обновление профиля пользователя.
📌 Имеет тело запроса (весь объект).
📌 Идемпотентен. - PATCH
🔹 Частичное обновление ресурса.
🔸 Пример: обновление только имени пользователя, не трогая email.
📌 Имеет тело запроса (часть объекта).
📌 Не идемпотентен по спецификации, но обычно считается идемпотентным на практике, если сервер реализован корректно. - DELETE
🔹 Удаление ресурса.
🔸 Пример: удаление поста.
📌 Может иметь тело, но редко используется.
📌 Идемпотентен (удаление повторно — не изменит результата). - HEAD
🔹 Аналог GET, но без тела ответа.
🔸 Пример: проверить, существует ли документ (используется для preflight или проверки кэша).
📌 Не имеет тела запроса и ответа.
📌 Идемпотентен. - OPTIONS
🔹 Возвращает доступные методы и заголовки.
🔸 Часто используется браузером для CORS-препроверки.
📌 Может иметь и тело, и заголовки.
📌 Идемпотентен. - TRACE
🔹 Диагностический метод, возвращает то, что получил сервер.
🔸 Часто отключён из соображений безопасности.
📌 Не имеет тела запроса.
📌 Идемпотентен. - CONNECT
🔹 Используется для установления туннеля (обычно для HTTPS через прокси).
🔸 Пример: все HTTPS-запросы через прокси → сначала отправляют CONNECT.
📌 Идемпотентность не применима напрямую.
📌 Специфичный случай.
Что делает HTTP-запрос?
🟢 Отправляет данные от клиента на сервер по протоколу HTTP, получает ответ.
📘 Клиент формирует запрос (метод, URL, заголовки, тело) и отправляет через TCP (обычно 80/443 порт). Сервер принимает, обрабатывает, возвращает статус, заголовки и тело. Это стандартный способ общения client↔server в web.
Что передается при gRPC-запросе?
🟢 Бинарное сообщение (protobuf) через HTTP/2, с метаданными.
📘 gRPC использует Protocol Buffers для сериализации данных. В отличие от JSON, это бинарный и компактный формат. Запрос/ответ передаются через один и тот же TCP-соединение благодаря HTTP/2 с поддержкой мультиплексирования.
Что такое заголовки HTTP? Зачем они?
🟢 Дополнительные метаданные запроса или ответа.
📘 Заголовки (Headers), как Content-Type, Authorization, Accept, позволяют серверу понять, как обрабатывать запрос и ответ. Например, Content-Type: application/json говорит серверу, что тело запроса — это JSON.
🟩 ВЗАИМОДЕЙСТВИЕ КЛИЕНТ↔СЕРВЕР
Как клиент и сервер обмениваются данными?
🟢 Клиент отправляет запрос → сервер обрабатывает и отвечает.
📘 Передача идет по протоколу (HTTP/gRPC или другие). Запрос содержит метод, путь, заголовки и тело. Сервер принимает, проводит валидации и логику, обращается к БД, формирует ответ. Процесс включает DNS, TCP/TLS-соединения, заголовки, коды.
Что происходит при открытии сайта в браузере?
🟢 DNS → TCP/TLS → HTTP → Ответ (HTML/JS/CSS).
📘 Браузер узнает IP сайта (DNS), устанавливает TCP-соединение, возможно — TLS (HTTPS). С помощью HTTP отправляется GET-запрос на /. Сайт отдает HTML + плагины. Дополнительно загружаются JS, картинки, CSS. Запросы и ответы управлялись через заголовки.
🟩 HTTP-МЕТОДЫ И КОДЫ
Назови основные HTTP-методы
🟢 GET, POST, PUT, PATCH, DELETE.
📘 GET — получение ресурса, POST — создание, PUT — полное обновление, PATCH — частичное, DELETE — удаление. OPTIONS используется при CORS. HEAD — как GET, без тела.
Что означают коды 200, 400, 401, 404, 500?
🟢 200 — успех, 400 — плохой запрос, 401 — нет авторизации, 404 — не найдено, 500 — ошибка сервера.
📘 Коды делятся на: 2xx — успех, 4xx — ошибка клиента (неправильный запрос, авторизация), 5xx — ошибка сервера. 403 означает — доступ запрещён, даже при авторизации.
Когда используется код 201?
🟢 При успешном создании ресурса (POST).
📘 Пример: POST-запрос для создания пользователя. Ответ: 201 Created + тело с ID новой сущности. Часто сопровождается заголовком Location — URL новой сущности.
Что значит код 204?
🟢 Успех, но без тела ответа.
📘 Обычно ответ на DELETE илиPUT в API, когда возвращать нечего. Подразумевается, что действия были выполнены, но результат не отправляется.
🟩 COOKIE
Что такое Cookie?
🟢 Это данные, сохраняемые браузером и автоматически отправляемые серверу.
📘 Cookie хранятся в браузере и используются для сессий, авторизации, персонализации. Их можно сделать HttpOnly (невидимы для JS), Secure (только через HTTPS) и задать срок жизни. Передаются в заголовках.
Чем отличается куки от localStorage?
🟢 Cookie видит сервер, localStorage — только JS.
📘 Cookie используются при каждом HTTP-запросе. localStorage работает только внутри браузера, не участвует в авторизации, но может хранить больше данных. Cookie поддерживают Secure, SameSite и могут быть HttpOnly; localStorage — нет.
Что такое SameSite в cookie?
🟢 Ограничение отправки cookie при внешних запросах.
📘 SameSite=Strict — не отправлять вообще с внешних сайтов; Lax — частично (например, при переходе по ссылке); None — куки отправляется всегда (требует Secure).
🟩 FRONTEND
Что такое кроссбраузерное тестирование?
🟢 Проверка работы сайта в разных браузерах.
📘 Кроссбраузерность означает единое поведение, верстку и функциональность в Chrome, Firefox, Safari, Edge и др. Проверяется совместимость JS, CSS, шрифтов, отображение элементов и событий.
Что ты ищешь в DevTools → Network?
🟢 Заголовки, тело, статус-код, время запроса.
📘 Network позволяет проследить каждый запрос: URL, метод, статус-код, response time, заголовки запроса и ответа, payload. Это важно при отладке API, кук, токенов. Фильтруется по типу (XHR, JS, Image)
Какие вкладки DevTools ты чаще всего используешь?
🟢 Elements, Console, Network, Application.
📘 Elements — DOM-структура, поиск локаторов. Console — JS-ошибки, логика. Network — API-запросы. Application — куки, localStorage, sessionStorage.
🟩 АВТОМАТИЗАЦИЯ, ЛОКАТОРЫ
Что такое локатор?
🟢 Это способ найти элемент в DOM-структуре.
📘 Локаторы могут быть по ID, классу, тегу, CSS-селектору или XPath. Хороший локатор — стабильный и уникальный. Лучше использовать атрибуты вроде data-testid, а не позиционные (nth-child).
Какими локаторами ты пользуешься?
🟢 CSS-селекторы, XPath, ID, тег.
📘 CSS предпочтительнее: еx: div[class^="header"], button[data-testid="submit"]. XPath — мощнее, но медленнее и сложнее. ID — лучший вариант, если есть. Сначала смотрю, что выдает DevTools при hover/copy.
Что такое Page Object?
🟢 Это шаблон для хранения логики страницы в виде класса.
📘 Page Object — это класс, инкапсулирующий структуру и действия страницы: локаторы, методы (нажать, ввести, ждать). Он улучшает читаемость тестов, уменьшает дублирование и повышает повторное использование кода.
Чем Playwright лучше Selenium?
🟢 Быстрее, работает с modern JS, auto-wait, встроенный отчёт.
📘 Playwright поддерживает мультибраузерность, обходит популярные защиты от автоматизации, имеет встроенные intercepts, waits, trace viewer, умеет открывать несколько контекстов. Selenium хорош, но более “низкоуровневый”.