Коротко о API и его тестирование - узнайте на базовом уровне

  1. Форматы передачи данных в API
  2. Методы HTTP запросов
  3. HTTP коды ответов
  4. REST API
  5. Аутентификация по API
  6. Инструменты для работы с API
  7. тестирование API
  8. Но при тестировании API вполне можно использовать общепринятые техники тестирования ПО:

В этой заметке я постараюсь сосредоточить информацию, которая может пригодиться тестировщикам, желающим узнать, на базовом уровне, что такое API?

API (Application Programming Interface) - это набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах (Википедия).

Своими словами, API предоставляет нам возможность использовать чужие наработки в своих целях. Таким образом, применение API программистам упрощает создание кода.

Впервые мне пришлось столкнуться с API при разработке приложения прогноза погоды. Мною был разработан графический интерфейс, а погодные данные подтягивались в приложение через бесплатный ключ API Open Weather. API выступает посредником между разработчиком приложений и любым средой, с которым это приложение должен взаимодействовать. Образно .... картинка с моего воображения - это «шланг». «Прикручивают» его, настраиваешь, а потом по нему бежит информация 🙄 Конечно, у каждого API своя цель или как лучше сказать - бизнес логика.

Современные API часто принимают форму веб-сервисов, которые предоставляют пользователям (как людям, так и другим веб-сервисам) какую-то информацию. Обычно эта процедура обмена информацией и формат передачи данных структурированы, чтобы обе стороны знали, как взаимодействовать между собой.

Форматы передачи данных в API

Существует множество форматов данных, с помощью которых пользователи взаимодействуют с API. Наиболее уживаниши и известны:

Формат передачи данных XML - жестко иерархически структурирован формат передачи данных. Информация в нем описывается с помощью простых тегов. Более хотите узнать об этом формат передачи данных? - традиционно обратитесь к Википедии. Простой пример:

Простой пример:

и JSON - несложный, легкий, а значит и более быстрый формат, который выглядит следующим образом:

и JSON - несложный, легкий, а значит и более быстрый формат, который выглядит следующим образом:

по ссылкам MediaWiki предлагаем, по желанию, ознакомиться с другими API форматами.

Методы HTTP запросов

Обычно при обращении к веб API используются запросы HTTP. Поэтому нужно хотя бы кратко сказать о стандартных методах, которые могут содержаться в HTTP запросе. Эти методы также называют HTTP глаголами (Verbs):

  • GET - пожалуй, наипопулярнейших тип запроса. Используется для получения или чтения данных. Запросы с использованием этого метода могут только получать данные.
  • HEAD - приглашает ресурс так же, как и метод GET, но без тела от проповеди. Перевод заголовок здесь говорит красноречиво сам за себя
  • PUT - обычно используется для обновления ресурса, путем замены данных запроса.
  • POST - обычно используется для создания нового ресурса или используется для отправки сущностей к определенному ресурсу. Плюсы метода POST очевидны: можно передавать неограниченные объемы информации, причем, никто не увидит эту информацию после того, как вы ее отправили (имеется в виду, в строке браузера). Если не ошибаюсь, таким образом можно передать пароль, регистрационные данные из форм и тому подобное.
  • DELETE - удаляет данные.
  • OPTIONS - используется для описания параметров соединения с ресурсом.
  • PATCH - используется для частичного изменения ресурса.
  • и другие.

Хороший туториал по HTTP на все случаи жизни на developer.mozilla.org

примеры:

Если мы хотим получить информацию о ресурсе, URL которого http://www.example.com/customers/12345, мы можем послать запрос:
GET http://www.example.com/customers/12345

Если мы хотим обновить ресурс, мы можем послать PUT-запрос:
PUT http://www.example.com/customers/12345/orders/98765

Обычные GET запросы способен посылать веб-браузер. Для передачи других типов запросов могут понадобиться скриптовые языки программирования или специальные инструменты (об этом поговорим чуть позже).

HTTP коды ответов

Сервер может посылать различные коды в ответ на запросы пользователей. Это могут быть коды ошибок или просто коды, информирующие пользователей о состоянии сервера. Детальное описание ЧИТАТЬ:

Наиболее известные коды - 2xx: OK Success (успешная ответ от сервера), 4xx (проблемы на стороне клиента) и 5xx (проблемы на стороне сервера). О том, какие коды возвращать в той или иной ситуации, решают разработчики самых API.

REST API

REST API - это идеология построения API, которая расшифровывается как Representational State Transfer API. Она основывается на следующих принципах, сформулированных ее создателем, Роем Филдингом:

  • Клиент-серверная архитектура
  • Stateless сервер
  • кэширования
  • многослойная структура
  • единый интерфейс
  • Код по требованию

Не буду углубляться в детали, кто желает почитать по теме Википедия.

Аутентификация по API

Обычно для использования API нужен специальный ключ, с помощью которого сервер узнает о пользователе. API ключ может отсутствовать или предоставляться по запросу (например, после регистрации на сайте). Например, как в примере с погодным сайтом, ключ импортировал мне показатели погоды. Еще один пример, игра в которую ввести API ключ с Facebook способна импортировать список друзей.

Инструменты для работы с API

Выше мы уже упоминали: обычные GET запросы можно отправлять с помощью браузера. Но специальные инструменты, которые предназначены для разработки и тестирования API предоставляют возможность не только отправлять различные типы запросов, но и сохранять запросы, показывать результаты в различных форматах, выступать в роли proxy сервера. И много много-многое другое.

Среди таких инструментов:

  • Postman - в том числе существует в расширении для Google Chrome, которое в бесплатной версии позволяет посылать запросы, записывать их, показывать историю. Довольно удобный и понятный инструмент. Советы тестирования API в Postman
  • jMeter - инструмент, получивший известность прежде всего благодаря инструмента для Perfomance Testing (тестирование навантажаження), которое можно проводить с его помощью. Но это лишь одна из множества его приложений.
  • Fiddler - позволяет просматривать HTTP запросы.
  • SoapUI - мощный продукт для разработки и тестирования веб приложений.
  • Advanced REST Client - еще одно расширение для Chrome для работы с API (конструкция запросов, их показ тоже в удобном виде).

тестирование API

А теперь - очень коротко о том, как тестировать API. Конечно, здесь есть своя специфика. Тестирование направлено на проверку функционирования прежде всего бизнес логики приложения.

Типичные ошибки в API:

  • Сбой обработки ошибочных условий;
  • неиспользованные flag
  • Отсутствует или дублируется функционал;
  • Вопрос настройки: трудности при подключении и получении ответа от API;
  • Проблемы с безопасностью API;
  • Вопросы по многопоточности;
  • Проблемы с производительностью: бывает время отклика API очень высокий;
  • ошибки;
  • Некорректная обработка валидных значений;
  • Данные ответы некорректно структурированные (JSON или XML).

При тестировании API нужно учитывать, что API создаются во многом для интеграции с другими сервисами. И работают с ними не люди, а другие программные системы. Поэтому нужно оценивать API с позиции удобства его использования вместе с другими продуктами, с позиции легкой интеграции с ними. Каждый API должен быть гибким, также иметь понятную и подробную документацию.

Но при тестировании API вполне можно использовать общепринятые техники тестирования ПО:

  • Смотровое исследовательское тестирование - тесты должны выполнить набор вызовов, задекларированных в API, чтобы проверить общую работоспособность системы;
  • Проверка документации - проверяется полнота описаний функций API, ее понятность и, в свою очередь, является финальным результатом.
  • Анализ предельных значений - в API запросам в явном виде могут передаваться значения параметров. Это отличный повод выделить границы входных и выходных значений и проверить их.
  • Разбиение на классы эквивалентности - н Авито у небольшого API есть множество вариантов использования и множество комбинаций входных и выходных переменных. Поэтому мы можем лишний раз использовать наши навыки выделения эквивалентных классов.
  • Юзабилити-тестирование - проверяет, есть ли API функциональным и обладает удобным интерфейсом, также проверяется интеграция с другими;
  • Тестирование безопасности - проверяет используемый тип аутентификации и шифрования данных с помощью HTTP,
  • Автоматизированное тестирование - создание скриптов, программ или настройка приложений, которые смогут тестировать API на регулярной основе;

Как видите все виды тестирования, к которым мы так привыкли - функциональное тестирование, нагрузочное тестирование, тестирование безопасности, юзабилити, тестирование документации - не чужды при тестировании API тоже. В принципе, это и не удивительно, поскольку API является полноценным самостоятельным продуктом.

Более хотите узнать об этом формат передачи данных?

Новости

Социальные сети в России, зима 2015-2016 Цифры, тренды, прогнозы | Блог Brand Analуtics — все о бренд мониторинге и социальной аналитике
Представляем данные регулярного исследования активной аудитории социальных сетей в России, зима 2015-2016. В исследовании представлены данные по аудитории, возрасту, полу и региональному распределению

SMM маркетинг от А до Я
Развитие социальных сетей породило новую огромную бизнес отрасль — СММ маркетинг. Это когда мы приходим с нашим продуктом в какую-нибудь соцсеть, находим там нашу целевую аудиторию, и предлагаем ей наш

Полезно знать
20.02.2014 Что такое Pinterest. Визуальный PR и маркетинг Pinterest или ПИНТЕРЕСТ – социальная сеть, использующая вместо текстов картинки и изображения, которые можно добавлять в аккаунт,

Фейсбук Моя страница: ВХОД на свою страницу Facebook
Фейсбук (Facebook) Моя страница — это личная страница каждого зарегистрированного пользователя самой большой в мире социальной сети.  Фейсбук даёт возможность людям с разных уголков Земли общаться между

Анализ социальных сетей
АНАЛИЗ СОЦИАЛЬНЫХ СЕТЕЙ (social network analysis) - новое направление структурного подхода, основными целями которого являются исследование взаимодействий между социальными объектами и выявление условий

Социальные сети для продвижения бизнеса: какие выбрать?
  Привет, друзья! Социальные сети занимают львиную часть времени в нашей жизни. Ежедневный просмотр новостей, любимых групп и переписка с друзьями – это любимое дело большинства молодых людей. Вот и

ВРЕДНОЕ ВЛИЯНИЕ СОЦИАЛЬНЫХ СЕТЕЙ НА ЗДОРОВЬЕ ЧЕЛОВЕКА - VI Студенческий научный форум (15 февраля - 31 марта 2014 года)
ВРЕДНОЕ ВЛИЯНИЕ СОЦИАЛЬНЫХ СЕТЕЙ НА ЗДОРОВЬЕ ЧЕЛОВЕКА Гущина Н. В., Люлина Н.В. С распространением всемирной паутины рост социальных сетей по всему миру стал глобальным явлением. С каждым

Влияние социальных сетей на подростков. Пропаганда суицида в сетях
Почему мы любим интернет? Почему молодым людям, подросткам сказать «Привет» стало проще, познакомившись в интернете, чем просто подойти в реальности? Почему все «сидят» в социальных сетях? Социальные сети

Маркетинг в социальных сетях (SMM) для продвижения компании
Деятельность в социальных сетях, на блогах и форумах по повышению лояльности клиентов получила название SMM — от аббревиатуры английского звучания этого термина – Social Media Marketing. Аудитория

Фейсбук (Facebook) - что это за сеть: как пользоваться ФБ
Фейсбук — это самая популярная и большая социальная сеть в мире. Если Вам интересно узнать больше о Facebook, про то как пользоваться сетью и о некоторых «фишках» ФБ — этот материал именно для вас!