Собеседование QA: тестирование API

Особенности Типы и видыПротоколы Цели Компоненты HTTPМетоды HTTPPUT и POSTСтатус-кодыИнструменты Методы аутентификацииSOAP, REST и разница между нимиШаблоны документации — Примеры API которыми пользуются всеПроблемы Баги

Что такое тестирование API?

Подтип тестирования, нацеленный на программный интерфейс приложений (API). Тестирование API проверяет, соответствует ли API приложения требованиям по функциональности, производительности, безопасности, и другим.

Какие отличительные характеристики тестирования API по сравнению с другими типами?

  • Тестирование без GUI. В этом свой позитив, поскольку это дает ранний инсайт проблем с приложением, что позволяет разработчиками убрать их еще до того как они проявятся на уровне интерфейса (то есть пользователя).
  • Тестируется ключевая функциональность на глубоком уровне, что позволяет на раннем этапе оценить общее качество билда; ошибки устраняют на базовом уровне, не пропуская на высшие уровни. Тестирование обычно идет параллельно с разработкой.
  • Экономия времени — тестирование API забирает меньше времени, чем тестирование интерфейса. Для API-тестов нужно меньше кода, и в целом меньше рутинных операций.
  • Языки. В тестировании API для передачи данных применяются XML или JSON, поэтому процессы не зависят от языка программирования — может применяться любой.

Какие протоколы применяются при тестировании API?

  • HTTP
  • REST
  • SOAP
  • JMS
  • UDDI

Опишите основные отличия между тестированием API и GUI.

Тестирование API направлено на бизнес-логику, передачу данных, безопасность, и производительность. Тестирование интерфейса проверяет «вид и ощущения» от продукта, вплоть до размещения и удобства кнопок, форм и т.п.

Что верифицируют в процессе тестирования API?

  • Корректность передачи данных
  • Статус-коды HTTP
  • Время отклика (response time)
  • Коды ошибок, если API возвращает ошибки
  • Авторизацию
  • Нефункциональное тестирование, в частности производительность и безопасность

Опишите компоненты HTTP-запроса.

HTTP-запрос состоит из пяти элементов:

  • HTTP-метод, задающий действие.
  • URI, идентификатор ресурса на сервере.
  • Версия HTTP
  • Заголовок запроса, содержащий метаданные в формате ключ:значение; тип клиента (браузера), поддержка форматов, форматы тела запроса, настройки кэша и прочее.
  • Тело запроса, с данными, передаваемыми клиентом в API.

Какие HTTP-методы часто применяются в REST API?

Методы, выполняющие так называемые CRUD-операции:

  • GET, метод чтения данных из ресурса
  • POST, метод для создания (или обновления) ресурсов
  • PUT, изменяющий существующий ресурс
  • DELETE, удаляющий указанный ресурс

Расскажите об отличиях между PUT и POST.

  • Если нужно изменить один ресурс, являющийся компонентом коллекции ресурсов, вызывается метод PUT. Если нужно добавить дочерний ресурс в коллекцию, используется POST. 
  • Если PUT-запрос отправлен много раз, результат будет тем же. Если POST-запрос отправлен много раз, результаты будут отличаться, то есть при каждом запросе будет создан ресурс, или возвращена ошибка

Например, если есть ресурс создания и обновления пользовательских экаунтов, отправка одного и того же PUT-метода будет каждый раз обновлять пользователя. Отправка одинакового POST-метода много раз создаст много экаунтов, или вернет ошибки «такой юзернейм-почта уже зарегистрированы».

Опишите статус-коды HTTP-ответа, по классам

(Частый вопрос, без которого не обходится ни одно собеседование 100%). Итак, 

  • 1хх: категория «информационных» ответов. Клиент должен продолжать запрос, или игнорировать, если запрос завершен.
  • 2хх: успешный запрос.
  • 3хх: редирект-ответы (перенаправления), возможны несколько ответов, один из них должен быть выбран браузером или пользователем.
  • 4хх: ошибка на стороне клиента. Сервер не смог обработать запрос и передает ошибку клиенту. Некорректный URL, некорректный синтаксис и так далее.
  • 5хх: ошибка на стороне сервера — невозможно обработать запрос.

Распространенные инструменты тестирования API

Также очень частый вопрос. Инструменты: во первых, Postman. Это неформальный стандарт в тестировании API, по крайней мере в России. Далее можно назвать SoapUI (здесь отдельный большой гайд), и Swagger и Katalon. Разумеется, неплохо бы иметь опыт работы с этими инструментами, хотя бы базовый, но очень желательно коммерческий.

Вопросы на собеседовании — Postman

Postman — большой гайд для начинающих

Также Тестирование производительности API в K6

Какие применяются методы аутентификации при тестировании API?

  • Через сессии/cookies
  • Базовая аутентификация
  • Дайджест-аутентификация
  • OAuth

В чем разница между аутентификацией и авторизацией?

Аутентификация — это процесс подтверждения идентичности пользователя; авторизация — процесс подтверждения прав на уровень доступа.

Почему тесты API лучше автоматизируются, чем тесты UI?

Хорошей практикой тестирования является классическая тестовая пирамида, в которой сквозные (e2e) UI-тесты должны быть на верхушке пирамиды (то есть в последнюю очередь), и их должно быть сравнительно мало; поскольку автотесты UI весьма трудозатратные и часто нестабильные из-за множества программных зависимостей, проявляющихся на этом высоком уровне. Автотесты API находятся на среднем уровне пирамиды, как часть интеграционного тестирования, они намного быстрее и более надежные, контролируемые.

Опишите отличия между тестированием API и модульным (юнит-) тестированием

Юнит-тестирование проходит по методике белого ящика, API — обычно черного ящика. Юнит-тестирование имеет дело с небольшими модулями и компонентами и сравнительно проще; тестирование API намного более сложный процесс. 

Какие типы и виды тестирования применяются при тестировании API?

  • Функциональное тестирование: бОльшая часть тестов API касается именно функциональности приложения, того что приложение должно делать (функциональные тест-кейсы).
  • Ручное тестирование: хотя API-тесты сейчас в значительной мере автоматизируются, это не значит что вообще нет ручных тестов, например в Postman.
  • Автоматизированное тестирование: тест-кейсы API автоматизируются, применяются соответствующие фреймворки. 
  • Нагрузочное тестирование: эмулируется трафик на API и изучаются проблемные места; без этого бывает сложно предугадать, какие проблемы с API могут возникнуть при большой нагрузке. Применяются инструменты (чаще всего JMeter), отправляющие HTTP-запросы на эндпойнты API и измеряющие время ответа, количество ошибок и другие метрики
  • Тестирование безопасности: проверка защищенности API от внешних угроз, верификация надежности шифрования, и в целом устойчивость архитектуры API; также контроль уровней доступа и деталей авторизации.
  • В частности, тестирование на проникновение (пентест API): специалисты по безопасности, незнакомые с этим API, пытаются оценить устойчивость, симулируя поведение злоумышленника.

Какие стили архитектуры применяются при создании Web API?

  • Simple URI в качестве адреса сервиса
  • Stateless-коммуникация
  • HTTP для клиент-серверной коммуникации
  • XML/JSON как язык форматирования

Опишите тестовое окружение API

Так как нет GUI-интерфейса, применяется более сложный подход: определенная конфигурация сервера и БД. В процессе тестирования подаются параметры оригинального окружения через API-вызовы, и проверяются результаты.

В чем разница между API и веб-сервисами?

Веб-сервисы:

  • Все веб-сервисы это API
  • Все веб-сервисы должны быть доступны по HTTP
  • Веб-сервис имеет только три способа коммуникации: SOAP, REST, XML-RPC
  • Веб-сервису для функционирования всегда нужно подключение к интернету

В то время как API:

  • Не все API являются веб-сервисами
  • Не всем API нужна доступность по HTTP
  • API имеет много способов коммуникации, например через DLL-файлы в C++, Jar-файлы/RMI в Java, прерывания в Linux Kernel API и пр.
  • API не обязательно нужно интернет-подключение

Что такое SOAP?

Буквально «простой протокол доступа к объектам», протокол обмена структурированными сообщениями на основе XML.

Что такое REST API?

REST — буквально «передача самоописываемого состояния», стиль взаимодействия распределенного приложения в сети. REST API — набор функций для создания и выполнения запросов и получения ответов по HTTP.

В чем разница между SOAP и REST?

SOAP:

  • Протокол, по которому компьютеры коммуницируют между собой, используя XML
  • SOAP поддерживает только XML
  • SOAP не поддерживает кэширование
  • SOAP медленнее чем REST
  • SOAP работает через HTTP, но «вкладывает сообщение в конверт»

В то время как REST:

  • REST это тип архитектуры сервисов для сетевых приложений
  • Поддерживает много форматов
  • Поддерживает кэширование
  • Быстрее чем SOAP
  • REST-клиент похож на браузер по функциям и применяет стандартные методы
  • REST использует HTTP-заголовки

Какие знаете шаблоны документации API?

  • Swagger
  • FlatDoc
  • RestDoc
  • API blueprint
  • Slate
  • Miredot
  • Web service API Specification.

Какие знаете известные примеры API? Например публичных сервисов.

  • Google Maps API
  • YouTube
  • Twitter
  • Amazon Advertising API

Какие сложности возникали при тестировании API на прежней работе?

Самые распространенные проблемы с API:

  • Выбрать нужные параметры и их комбинации
  • Присвоить правильные категории параметрам
  • Правильный порядок API-запросов
  • Верификация и валидация ответов
  • Нет GUI, сложно подавать и контролировать входные значения

Какие баги чаще всего возникают при тестировании API, по опыту предыдущей работы?

  • Баги с производительностью, стабильностью и надежностью
  • Дублированная или отсутствующая функциональность
  • Некорректная коммуникация
  • Баги в многопотоковых приложениях

***

Судя по всему, бизнес-аналитиком стать проще, чем стажером в QA

Все собеседования в одном канале

Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

1 КОММЕНТАРИЙ

Подписаться
Уведомить о
guest

1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Валерон
Валерон
11 месяцев назад

Какие протоколы применяются при тестировании API?

HTTPRESTSOAPJMSUDDIНо REST это не протокол!!!

Последний раз редактировалось 11 месяцев назад Валерон ем

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

? Популярное

? Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас