автор Малаховская Екатерина
Готовимся к собеседованию - API
Одна из ключевых тем, с которой вы можете столкнуться на собеседовании на роль тестировщика, — это тестирование API. Важно понимать, что API (Application Programming Interface) — это интерфейс для взаимодействия различных программных систем. Тестирование API включает в себя проверку функциональности, безопасности, производительности и других аспектов работы API, чтобы убедиться в его надежности и соответствии требованиям.
Давайте разберем основные вопросы, которые могут быть заданы по данной теме на собеседовании, чтобы вы могли быть готовы к обсуждению этого важного аспекта тестирования.
1. Общие вопросы

1. Что такое API и зачем его тестировать?
API (Application Programming Interface) — это интерфейс для взаимодействия между различными программными компонентами. Он предоставляет набор методов, через которые приложения могут обмениваться данными и функциональностью. Тестирование API необходимо, чтобы убедиться в правильности его работы, безопасности, производительности и соответствии требованиям.

2. Какие виды API существуют?
  • REST API — широко используется в веб-программировании. Он работает на основе HTTP и передает данные, чаще всего в формате JSON или XML.
  • SOAP API — основан на протоколе SOAP (Simple Object Access Protocol). Этот вид API более формализован и использует XML для обмена данными.
  • GraphQL API — позволяет клиентам запрашивать только те данные, которые им необходимы, улучшая производительность.
  • gRPC API — используется для высокоскоростной передачи данных в распределенных системах, основывается на HTTP/2 и протоколе буферов (Protocol Buffers).

3. В чем разница между REST и SOAP API?
  • REST: легкий, работает через HTTP/HTTPS, поддерживает JSON и XML, проще в использовании, используется в большинстве современных приложений.
  • SOAP: более сложный, использует XML, имеет встроенные механизмы безопасности и транзакций, требует больше ресурсов, используется в более специфичных областях, таких как банковские приложения.

4. Что такое RESTful API?
RESTful API — это API, который следует принципам архитектуры REST. Он использует стандартные HTTP методы (GET, POST, PUT, DELETE) и работает с ресурсами, которые идентифицируются с помощью URL.

2. Виды тестирования API

1. Какие виды тестирования API вы знаете?
  • Функциональное тестирование — проверка, выполняет ли API свою основную функцию.
  • Тестирование безопасности — проверка на наличие уязвимостей.
  • Нагрузочное тестирование — проверка API на способность обрабатывать большое количество запросов.
  • Тестирование производительности — проверка времени отклика и ресурсов, используемых API.
  • Тестирование совместимости — проверка работы API с различными операционными системами, устройствами или версиями.
  • Тестирование на отказоустойчивость — проверка поведения API в условиях сбоев или ошибок.

2. Чем отличается функциональное тестирование API от нефункционального?
Функциональное тестирование проверяет, выполняет ли API свою основную задачу, т.е. соответствует ли он заданным требованиям.
Нефункциональное тестирование фокусируется на дополнительных характеристиках, таких как производительность, безопасность, доступность и совместимость.

3. Что такое нагрузочное тестирование API?
Нагрузочное тестирование API направлено на проверку того, как API справляется с большими объемами запросов. Оно позволяет оценить, насколько API устойчиво работает при высоких нагрузках.

4. Как провести тестирование безопасности API?
Для тестирования безопасности API важно проверять:
  • Аутентификацию и авторизацию (например, через OAuth или JWT).
  • Возможность XSS, SQL-инъекций, CSRF.
  • Шифрование передаваемых данных.
  • Защищенность от атак типа "Brute Force".

3. Инструменты для тестирования API

1. Какие инструменты вы использовали для тестирования API?
Некоторые популярные инструменты:
  • Postman — удобен для ручного тестирования, создания тестов и автогенерации документации.
  • SoapUI — используется для тестирования SOAP и REST API.
  • JMeter — инструмент для нагрузочного тестирования.
  • Swagger — используется для документирования API и тестирования его функционала.

2. В чем разница между Postman и SoapUI?
  • Postman больше ориентирован на RESTful API и предоставляет удобный интерфейс для тестирования запросов.
  • SoapUI используется для тестирования как SOAP, так и REST API, имеет расширенные возможности для создания нагрузочного тестирования и тестирования безопасности.

3. Что такое cURL, и как его использовать для тестирования API?
cURL — это командная утилита для отправки запросов по протоколу HTTP/HTTPS. С помощью cURL можно тестировать API, отправлять GET, POST, PUT, DELETE запросы, а также получать ответы от сервера. Пример использования:
curl -X GET http://example.com/api/resource

4. Зачем нужен Swagger?
Swagger — это инструмент для документирования API, который позволяет генерировать спецификации API и тестировать их через интерфейс. Он помогает разработчикам и тестировщикам лучше понять, как работает API, и интегрировать автоматическое тестирование.

4. HTTP-запросы и ответы

1. Какие методы HTTP-запросов вы знаете и где они применяются?
GET — запрос для получения данных.
POST — запрос для отправки данных на сервер (например, создание ресурса).
PUT — запрос для обновления данных.
DELETE — запрос для удаления ресурса.
PATCH — запрос для частичного обновления данных.

2. Что означают коды состояния HTTP (например, 200, 404, 500)?
200 — ОК, запрос успешно выполнен.
404 — Не найдено, запрашиваемый ресурс не существует.
500 — Внутренняя ошибка сервера.

3. Чем отличаются GET и POST запросы?
GET используется для получения данных и не изменяет состояние сервера.
POST используется для отправки данных на сервер и может изменять его состояние (например, создание нового ресурса).

5. Аутентификация и безопасность

1. Какие виды аутентификации используются в API?
Basic Authentication — передача имени пользователя и пароля в заголовке запроса.
OAuth 2.0 — современная аутентификация, которая используется для предоставления ограниченного доступа к ресурсам.
JWT (JSON Web Token) — метод аутентификации, который используется для обмена безопасной информацией.

2. Чем отличаются OAuth 2.0 и Basic Auth?
OAuth 2.0 предоставляет более гибкую и безопасную аутентификацию, особенно для сторонних приложений.
Basic Auth менее безопасен, так как передает учетные данные в открытом виде, если не используется с HTTPS.

3. Как защитить API от несанкционированного доступа?
  • Использовать безопасные методы аутентификации (например, OAuth 2.0).
  • Обрабатывать входные данные для защиты от атак (например, SQL-инъекций, XSS).
  • Использовать HTTPS для шифрования данных.
  • Применять механизмы ограничения доступа и проверку прав.

6. Практические вопросы

1. Как проверить, что API работает корректно?
Протестировать все возможные сценарии запросов (включая граничные случаи), проверить коды состояния, корректность данных в ответах и время отклика.

2. Как валидировать JSON или XML ответ от API?
Использовать библиотеки для парсинга JSON или XML (например, JSON Schema для JSON) и проверить, что данные соответствуют требуемой структуре.

3. Что такое Mock API и когда его используют?
Mock API — это поддельный API, который имитирует поведение реального API. Он используется для тестирования, когда реальный API недоступен.

4. Что такое контрактное тестирование API?
Контрактное тестирование проверяет, что интерфейс API соответствует определенному контракту, т.е. что запросы и ответы API соответствуют заранее заданным спецификациям.

7. Автоматизация тестирования API

1. Какие фреймворки или библиотеки вы используете для автоматизации тестирования API?
RestAssured (для Java)
Postman с Newman (CLI-интерфейс для автоматизации)
Jest (для тестирования API в JavaScript)

2. Чем отличается ручное тестирование API от автоматизированного?
Ручное тестирование требует вмешательства человека для выполнения тестов.
Автоматизированное тестирование использует скрипты для автоматического выполнения тестов, что сокращает время и повышает точность.

3. Как интегрировать API тесты в CI/CD процесс?
Использовать инструменты, такие как Jenkins или GitLab CI, для автоматического запуска тестов API на каждом этапе разработки или деплоя.

8. Ошибки и отладка

1. Какие ошибки могут возникнуть при тестировании API?
Ошибки могут включать неправильные коды состояния, неправильные данные в ответах, проблемы с производительностью, уязвимости безопасности.

2. Как отследить и устранить ошибки в API?
Использовать логи серверов и инструментов для мониторинга (например, New Relic, Splunk), повторно проверять запросы и их ответы, тестировать API с различными параметрами.

3. Что вы будете делать, если API возвращает ошибку 500?
Проверить серверные логи на наличие ошибок, убедиться, что код API не нарушен, и проверить серверное окружение (например, ресурсы, базы данных).


Заключение

Тестирование API играет важную роль в обеспечении стабильности, безопасности и производительности программных решений. Понимание ключевых концепций, таких как виды тестирования API, инструменты для автоматизации, работа с REST и SOAP, а также методы аутентификации и обработки ошибок, поможет успешно пройти собеседование и эффективно выполнять задачи в профессиональной деятельности.
Регулярное изучение новых инструментов и подходов в тестировании API, а также практика с реальными сервисами, позволит вам постоянно развивать свои навыки и оставаться востребованным специалистом в сфере QA.
Хотите лучше разбираться в тестировании и узнать много примеров из практики от опытных преподавателей - приходите на наш курс Тестирование API
Учимся отличать тест-план, тест-кейсы и чек-листы на примерах.
Полезные ресурсы и советы для поиска работы
Выпускник школы QaLearning рассказывает про свой путь обучения, поиска работы и прохождения собеседований. Вы получите много дельных советов!