Тестирование API - это тип тестирования программного обеспечения, который включает в себя тестирование интерфейсов прикладного программирования (API) напрямую и как часть интеграционного тестирования, чтобы определить, соответствуют ли они ожиданиям в отношении функциональности, надежности, производительности и безопасности. [1] Поскольку в API отсутствует графический интерфейс , тестирование API выполняется на уровне сообщений . [2] Тестирование API теперь считается критически важным для автоматизации тестирования, потому что API теперь служат в качестве основного интерфейса для логики приложения и потому что тесты GUI трудно поддерживать с короткими циклами выпуска и частыми изменениями, обычно используемыми сГибкая разработка программного обеспечения и DevOps . [3] [4]
Обзор тестирования API
Тестирование API включает тестирование API напрямую (изолированно) и как часть сквозных транзакций, выполняемых во время интеграционного тестирования. [1] Помимо API-интерфейсов RESTful , эти транзакции включают несколько типов конечных точек, таких как веб-службы , ESB , базы данных , мэйнфреймы , веб-интерфейсы и ERP . Тестирование API выполняется для API-интерфейсов, которые создает группа разработчиков, а также для API-интерфейсов, которые команда использует в своем приложении (включая сторонние API). [5]
Тестирование API используется для определения того, возвращают ли API правильный ответ (в ожидаемом формате) для широкого диапазона возможных запросов, правильно ли реагируют на крайние случаи, такие как сбои и неожиданные / экстремальные входные данные, доставляют ли ответы в приемлемое время и надежно реагировать на потенциальные атаки на систему безопасности . [1] [4] Виртуализация сервисов используется вместе с тестированием API для изоляции тестируемых сервисов, а также для расширения доступа к тестовой среде путем моделирования API / сервисов, которые недоступны для тестирования. [6]
Тестирование API обычно включает в себя тестирование REST API или веб-служб SOAP с полезной нагрузкой сообщения JSON или XML , отправляемой через HTTP , HTTPS , JMS и MQ . [2] [7] Он также может включать форматы сообщений, такие как SWIFT , FIX , EDI и аналогичные форматы фиксированной длины, CSV , ISO 8583 и буферы протоколов , отправляемые через транспорты / протоколы, такие как TCP / IP , ISO 8583 , MQTT , FIX , RMI , SMTP , TIBCO Rendezvous и FIX . [8] [9]
Тестирование API, тестирование GUI и автоматизация тестирования
Тестирование API признано более подходящим для автоматизации тестирования и непрерывного тестирования (особенно для автоматизации, используемой при разработке программного обеспечения Agile и DevOps ), чем тестирование GUI. [3] [4] Приведены следующие причины:
- Сложность системы: тесты GUI не могут в достаточной степени проверить функциональные пути и внутренние API / сервисы, связанные с многоуровневыми архитектурами. API считаются наиболее стабильным интерфейсом к тестируемой системе.
- Короткие циклы выпуска с быстрыми циклами обратной связи: группы Agile и DevOps, работающие с короткими итерациями и быстрыми циклами обратной связи, обнаруживают, что тесты графического интерфейса требуют значительной доработки, чтобы идти в ногу с частыми изменениями. Тесты на уровне 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.
- Тестирование на проникновение - тестирование компьютерной системы, сети или веб-приложения для поиска уязвимостей, которые может использовать злоумышленник.
- Нечеткое тестирование - массивные объемы чисто случайных данных, иногда называемых «шумом» или «нечеткостью», принудительно вводятся в систему для попытки принудительного сбоя, переполнения или другого негативного поведения. Это делается для проверки абсолютных пределов API и служит своего рода «наихудшим сценарием».
Программное обеспечение
- SoapUI
- SOAtest
- Чванство
Смотрите также
- Автоматизированное тестирование
- Виртуализация услуг
- Тестирование программного обеспечения
- Безопасность веб-API
Рекомендации
- ^ a b c Тестирование API-интерфейсов защищает приложения и репутацию , Эми Райхерт, SearchSoftwareQuality, март 2015 г.
- ^ a b Все о тестировании API: интервью с Джонатаном Купером , Кэмерон Филипп-Эдмондс, Stickyminds, 19 августа 2014 г.
- ^ a b c Выпущена оценка Forrester Wave Evaluation Of Functional Test Automation (FTA), и все дело в том, чтобы выйти за рамки тестирования графического интерфейса пользователя. Архивировано 28 мая 2015 г. в Wayback Machine , Диего Ло Джудис, Forrester, 23 апреля 2015 г.
- ^ a b c d Создавайте лучшее программное обеспечение с помощью многоуровневой стратегии тестирования , ШОН Кенефик, Gartner, 7 января 2014 г.
- ^ Обязанность сторонних API ложится на корпоративных разработчиков , Эми Райхерт, SearchSoftwareQuality, июль 2014 г.
- ^ Ускорение разработки с помощью автоматизированного тестирования , Натан Уилсон, Gartner, 30 декабря 2013 г.
- ^ A Guidance Framework for Design the Great Web API , Eric Knipp and Gary Olliffe, Gartner 20 августа 2014 г.
- ↑ Борьба с хрупкими скриптами и дефектами программного обеспечения , Адриан Бриджуотер, журнал доктора Добба, 26 октября 2011 г.
- ^ Как мы учимся говорить на языке тестирования составных приложений? , Адриан Бриджуотер, журнал доктора Добба, 14 февраля 2012 г.
- ^ Кон, Майк (2009). Успех с Agile: разработка программного обеспечения с использованием Scrum . Эддисон-Уэсли Профессионал. п. 312 . ISBN 978-0321579362. CS1 maint: обескураженный параметр ( ссылка )