Найти в Дзене

Шпаргалка автотестировщику для собеседования

Ниже — вопросы с коротким и развернутым ответом по следующим темам: Каждый вопрос сопровождается: 🟢 Короткий ответ — по сути (1-2 предложения)
📘 Развернутый ответ — с пояснением, примерами, при необходимости Подписывайтесь на мой канал в Телеграмм, чтобы ничего не пропустить. Ну или на канал в VK, если хотите видеть новые статьи у себя в ленте. 🟢 Проверка логики работы серверной части, API, БД, правил обработки данных.
📘 Backend-тестирование охватывает тестирование SOAP/REST/gRPC/GraphQL API, бизнес-логики, взаимодействий с базами данных, микросервисными коммуникациями, авторизацией и проверкой безопасности. Тестируются валидность данных, коды ответов, эффективность обработки, ошибки. 🟢 REST — текстовый, HTTP/1.x, JSON; gRPC — бинарный, HTTP/2, protobuf.
📘 REST использует JSON-передачи поверх HTTP/1.1, легко читается, подходит для публичных API. gRPC от Google использует Protocol Buffers (protobuf), HTTP/2, передает бинарные данные. gRPC быстрее, строже по схеме, но требует .pro
Оглавление

Ниже — вопросы с коротким и развернутым ответом по следующим темам:

  • 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-методы:

  1. GET
    🔹 Получение данных с сервера.
    🔸 Примеры: получение списка статей, получение одного пользователя.
    📌 Не имеет тела запроса.
    📌 Идемпотентен.
  2. POST
    🔹 Создание нового ресурса.
    🔸 Примеры: регистрация пользователя, оформление заказа.
    📌 Имеет тело запроса.
    📌 Не идемпотентен.
  3. PUT
    🔹 Полная замена ресурса.
    🔸 Пример: обновление профиля пользователя.
    📌 Имеет тело запроса (весь объект).
    📌 Идемпотентен.
  4. PATCH
    🔹 Частичное обновление ресурса.
    🔸 Пример: обновление только имени пользователя, не трогая email.
    📌 Имеет тело запроса (часть объекта).
    📌 Не идемпотентен по спецификации, но обычно считается идемпотентным на практике, если сервер реализован корректно.
  5. DELETE
    🔹 Удаление ресурса.
    🔸 Пример: удаление поста.
    📌 Может иметь тело, но редко используется.
    📌 Идемпотентен (удаление повторно — не изменит результата).
  6. HEAD
    🔹 Аналог GET, но без тела ответа.
    🔸 Пример: проверить, существует ли документ (используется для preflight или проверки кэша).
    📌 Не имеет тела запроса и ответа.
    📌 Идемпотентен.
  7. OPTIONS
    🔹 Возвращает доступные методы и заголовки.
    🔸 Часто используется браузером для CORS-препроверки.
    📌 Может иметь и тело, и заголовки.
    📌 Идемпотентен.
  8. TRACE
    🔹 Диагностический метод, возвращает то, что получил сервер.
    🔸 Часто отключён из соображений безопасности.
    📌 Не имеет тела запроса.
    📌 Идемпотентен.
  9. 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 хранятся в браузере и используются для сессий, авторизации, персонализации. Их можно сделать HttpOnly (невидимы для JS), Secure (только через HTTPS) и задать срок жизни. Передаются в заголовках.

Чем отличается куки от localStorage?

🟢 Cookie видит сервер, localStorage — только JS.
📘 Cookie используются при каждом HTTP-запросе. localStorage работает только внутри браузера, не участвует в авторизации, но может хранить больше данных. Cookie поддерживают Secure, SameSite и могут быть HttpOnly; localStorage — нет.

🟢 Ограничение отправки 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 хорош, но более “низкоуровневый”.