API (Application Programming Interface) — набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах.
Современные API часто принимают форму веб-сервисов, которые предоставляют пользователям (как людям, так и другим веб-сервисам) какую-то информацию. Обычно процедура обмена информацией и формат передачи данных структурированы, чтобы обе стороны знали, как взаимодействовать между собой.
Форматы передачи данных
Существует множество форматов данных, с помощью которых пользователи взаимодействуют с API. Например, широко известный XML. Или JSON
HTTP глаголы
Обычно при обращении к веб API используются запросы HTTP. Поэтому нужно хотя бы коротко сказать о стандартных методах, которые могут содержаться в HTTP запросе. Эти методы также называют HTTP глаголами:
— GET. Наверное, самый популярный тип запроса. Используется для получения или чтения данных.
— PUT. Обычно используется для обновления ресурса.
— POST. Обычно используется для создания нового ресурса.
— DELETE. Удаляет данные.
— И другие
REST API
REST API — это идеология построения API, которая расшифровывается как Representational State Transfer API. Она основывается на следующих принципах, сформулированных ее создателем, Роем Филдингом:
1. Клиент-серверная архитектура
2. Stateless сервер
3. Кешируемость
4. Многослойная структура
5. Единый интерфейс
6. Код по требованию
Аутентификация
Обычно для использования API нужен специальный ключ, с помощью которого сервер узнает пользователя. В открытых API ключ может отсутствовать или предоставляться по запросу (например, после регистрации на сайте).
Для интеграции сервисов друг с другом широко используется протокол аутентификации OAuth. Например, он может использоваться онлайн игрой, которая импортирует список друзей из Facebook.
Инструменты для работы с API
Обычные GET запросы можно посылать при помощи браузера. Но существует множество специальных инструментов, которые предназначены для разработки и тестирования API. Они предоставляют возможность не только отправлять различные типы запросов, но и сохранять запросы, показывать результаты в различных форматах, выступать в роли proxy сервера. И многое многое другое.
Тестирование API
Конечно, тут есть своя специфика, но мы можем использовать такие общепринятые техники, как:
— Анализ граничных значений. В API запросах в явном виде могут передаваться значения параметров. Это отличный повод выделить границы входных и выходных значений и проверить их.
— Разбиение на классы эквивалентности. Даже у небольшого API есть множество вариантов использования и множество комбинаций входных и выходных переменных. Поэтому мы можем лишний раз использовать наши навыки выделения эквивалентных классов.
При тестировании нужно учитывать, что API создаются во многом для интеграции сервисов. И работают с ними часто не люди, а другие программные системы. Поэтому нужно оценивать API с позиции удобства его использования другими продуктами, с позиции легкой интеграции с ним. Уважающий себя API должен также иметь понятную и подробную документацию.
Можно сделать вывод, что все виды тестирования, к которым мы привыкли — функциональное тестирование, нагрузочное, тестирование безопасности, юзабилити, тестирование документации — не чужды при тестировании API. В принципе, это не удивительно, потому что API является полноценным самостоятельным продуктом.