Собеседование 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 и как вы искали первую работу?

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

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

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Мы в Telegram

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

? Популярное

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

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

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

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

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

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

live

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