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

Разработка программного обеспечения
Активность ядер
Парадигмы и модели
Методологии и рамки
Вспомогательные дисциплины
Практики
инструменты
Стандарты и свод знаний
Глоссарии
Контуры

API тестирование это тип тестирование программного обеспечения это включает в себя тестирование интерфейсы прикладного программирования (API) напрямую и как часть интеграционное тестирование чтобы определить, соответствуют ли они ожиданиям в отношении функциональности, надежности, производительности и безопасности.[1] Поскольку в API отсутствует GUI, Тестирование API проводится на слой сообщений.[2] Тестирование API теперь считается критически важным для автоматизации тестирования, потому что API теперь служат основным интерфейсом для логика приложения и потому что GUI тесты трудно поддерживать с короткими циклами выпуска и частыми изменениями, обычно используемыми с Гибкая разработка программного обеспечения и DevOps.[3][4]

Обзор тестирования API

Тестирование API включает тестирование API напрямую (изолированно) и как часть сквозных транзакций, выполняемых во время тестирования интеграции.[1] Вне RESTful API, эти транзакции включают несколько типов конечных точек, например веб-сервисы, ESB, базы данных, мэйнфреймы, веб-интерфейсы, и ERP. Тестирование API выполняется для API, которые создает группа разработчиков, а также для API, которые команда использует в своем приложении (включая сторонние API).[5]

Тестирование API используется для определения того, возвращают ли API правильный ответ (в ожидаемом формате) для широкого диапазона возможных запросов, правильно ли реагируют на крайние случаи такие как сбои и неожиданные / экстремальные входы, доставляйте ответы в приемлемое количество времени и безопасно реагировать на потенциальные атаки безопасности.[1][4] Виртуализация услуг используется в сочетании с тестированием API для изоляции тестируемых сервисов, а также для расширения доступа к тестовой среде путем имитации API / сервисов, недоступных для тестирования.[6]

Тестирование API обычно включает тестирование ОТДЫХ API или МЫЛО веб-сервисы с JSON или же XML полезные данные сообщения отправляется HTTP, HTTPS, JMS, и MQ.[2][7] Он также может включать форматы сообщений, такие как БЫСТРЫЙ, ИСПРАВИТЬ, EDI и аналогичные форматы фиксированной длины, CSV, ISO 8583 и Буферы протокола отправляется транспорты / протоколы Такие как TCP / IP, ISO 8583, MQTT, ИСПРАВИТЬ, RMI, SMTP, Рандеву TIBCO, и ИСПРАВИТЬ.[8][9]

Тестирование API, тестирование GUI и автоматизация тестирования

Тестирование API признано более подходящим для автоматизация тестирования и непрерывное тестирование (особенно автоматизация, используемая с Гибкая разработка программного обеспечения и DevOps ), чем тестирование графического интерфейса.[3][4] Приведены следующие причины:

  • Сложность системы: Тесты GUI не могут в достаточной степени проверить функциональные пути и внутренние API / сервисы, связанные с многоуровневыми архитектурами. API считаются наиболее стабильным интерфейсом к тестируемой системе.
  • Короткие циклы отпускания с быстрыми циклами обратной связи: Команды Agile и DevOps, работающие с короткими итерациями и быстрыми циклами обратной связи, обнаруживают, что тесты GUI требуют значительной доработки, чтобы не отставать от частых изменений. Тесты на уровне API менее хрупкие и их легче поддерживать.

По этим причинам рекомендуется, чтобы команды повысили уровень тестирования API, уменьшив при этом свою зависимость от тестирования графического интерфейса. Тестирование API рекомендуется для подавляющего большинства усилий по автоматизации тестирования и максимально возможного пограничного тестирования. Затем тестирование графического интерфейса пользователя зарезервировано для проверки типичных вариантов использования на системном уровне, мобильного тестирования и тестирования удобства использования.[3][4][10]

Типы тестирования API

Тестирование API обычно включает следующие практики:

  • Модульное тестирование - Тестирование работоспособности отдельных операций.
  • Функциональное тестирование - Тестирование функциональности более широких сценариев, часто с использованием модульных тестов в качестве строительных блоков для сквозных тестов. Включает определение тестового примера, выполнение, проверку и регрессионное тестирование.
  • Нагрузочное тестирование - Проверка функциональности и производительности под нагрузкой, часто путем повторного использования функциональных тестов.
  • Обнаружение ошибок времени выполнения - Мониторинг приложения за выполнением автоматических или ручных тестов для выявления таких проблем, как состояние гонки, исключения и утечки ресурсов.
  • Тестирование безопасности - Включает в себя тестирование на проникновение и нечеткое тестирование а также проверка аутентификации, шифрования и контроля доступа.
  • Тестирование веб-интерфейса - Выполняется как часть сквозных интеграционных тестов, которые также охватывают API-интерфейсы, позволяет командам проверять элементы графического интерфейса пользователя в контексте более крупной транзакции.
  • Тестирование совместимости - (только SOAP) Проверка соответствия Взаимодействие веб-сервисов профили.
  • WS- * тестирование на соответствие - (только SOAP) Проверка соответствия стандартам WS- *, таким как WS-Addressing, WS-Discovery, WS-Federation, WS-Policy, WS-Security и WS-Trust.
  • Тестирование на проникновение - тестирование компьютерной системы, сети или веб-приложения для поиска уязвимостей, которыми может воспользоваться злоумышленник.
  • Fuzz-тестирование - массивные объемы чисто случайных данных, иногда называемых «шумом» или «нечеткостью», принудительно вводятся в систему для попытки принудительного сбоя, переполнения или другого негативного поведения. Это делается для проверки абсолютных пределов API и служит своего рода «наихудшим сценарием».

Программного обеспечения

Смотрите также

Рекомендации

  1. ^ а б c API тестирования защищает приложения и репутацию, Эми Райхерт, SearchSoftwareQuality, март 2015 г.
  2. ^ а б Все о тестировании API: интервью с Джонатаном Купером, Кэмерон Филипп-Эдмондс, Stickyminds, 19 августа 2014 г.
  3. ^ а б c Оценка автоматизации функционального тестирования (FTA) Forrester Wave ™ вышла, и все дело в том, чтобы выйти за рамки тестирования графического интерфейса пользователя В архиве 2015-05-28 в Wayback Machine, Диего Ло Джудиче, Форрестер 23 апреля 2015 г.
  4. ^ а б c d Создавайте лучшее программное обеспечение, используя стратегию многоуровневого тестирования, ШОН Кенефик, Gartner 7 января 2014 г.
  5. ^ Ответственность за сторонние API лежит на корпоративных разработчиках., Эми Райхерт, SearchSoftwareQuality, июль 2014 г.
  6. ^ Ускорьте разработку с помощью автоматического тестирования, Натан Уилсон, Gartner 30 декабря 2013 г.
  7. ^ Основы руководства для разработки отличного веб-API Эрика Книппа и Гэри Оллиффа, Gartner 20 августа 2014 г.
  8. ^ Борьба с хрупкими скриптами и дефектами программного обеспечения, Адриан Бриджуотер, Журнал доктора Добба 26 октября 2011 г.
  9. ^ Как мы учимся говорить на языке тестирования составных приложений?, Адриан Бриджуотер, Журнал доктора Добба 14 февраля 2012 г.
  10. ^ Кон, Майк (2009). Успех с Agile: разработка программного обеспечения с использованием Scrum. Эддисон-Уэсли Профессионал. п.312. ISBN  978-0321579362.