Согласно исследованиям Google Trends, в последнее время продолжает возрастать интерес к тестированию интерфейсов прикладного программирования (API). В 2017 году американская компания SmartBear Software, разрабатывающая программное оснащение для программистов и тестировщиков, провела масштабный опрос среди профессионалов в данной области. Результат показал, что более половины программистов используют автоматизированные инструменты для тестирования интерфейсов прикладного программирования (API testing). При этом ожидается рост этого показателя до 80 %.
Следовательно, использование эффективных инструментов для автоматического тестирования API крайне важно. Сегодня становится понятным, что API testing – это не просто способ контроля качества, но и компонент эффективного внедрения программного обеспечения.
В этом материале мы представим обзор 9 решений (бесплатных или коммерческих) для тестирования API.
1. Postman ( https://www.getpostman.com/)
Этот инструмент перерос с плагина для Chrome до многофункционального инструмента тестирования, совместимого с платформами Windows и Mac. Postman считается оптимальным выбором для тех, кто хочет использовать язык разработчика, а не работать с кодировками в интегрированной программной среде. Можно выделить следующие преимущества инструмента:
- широкий интерфейс делает тестирование удобным и простым;
- можно использовать технологию автоматического и исследовательского тестирования;
- удобный в работе клиент REST;
- широкий пакет возможностей для интеграции, включая совместимость с форматами RAML и Swagger;
- корректно функционирует в программах, разработанных для Windows, Linux, Mac и Chrome;
- включены функции Document, Monitoring, Run и Test;
- для полномасштабного использования не нужно учить новый язык программирования;
- интегрирована система легкого обмена полученным опытом между участниками команды. Программа систематизирует запросы и ожидаемые ответы, рассылает результаты участникам проекта.
Цена: от бесплатного тестового периода до 21$ с одного аккаунта в месяц.
2. SoapUI (soapui.org/)
Это удобный консольный инструмент, дающий возможность быстрого и простого тестирования SOAP, API REST и веб-сервисов. С использованием SoapUI можно открыть исходный документ и интегрировать необходимый набор функций, включая описанные ниже:
- быстрое создание программного кода с использованием технологии Groovy;
- быстрое создание тестов методом «указания клика» и привычного перемещения объектов с помощью мыши;
- мощный API testing с загрузкой данных из Excel, БД и файлов. Такой алгоритм позволяет реалистично симулировать реальное взаимодействие юзера и API;
- присутствует поддержка асинхронного тестирования и возможность запуска комплексных сценариев;
- сканирование безопасности и загрузка тестов могут использоваться повторно, для чего придется сделать всего пару кликов.
Цена: от бесплатного тестового периода до 659$ / год.
3. Tricentis Tosca ( https://www.tricentis.com/)
Это платформа для непрерывного тестирования для технологий DevOps и Agile. Можно выделить следующие плюсы инструмента:
- поддерживает большинство популярных протоколов, включая REST, IBM MQ, Rabbit MQ, TIBCO EMS, NET TCP, SOAP, AMQP и HTTP(s) JMS;
- интегрируется в циклы DevOps и Agile;
- API testing может проводиться на мобильных, браузерных и пакетных приложениях;
- автоматизация поддерживается внедренными передовыми технологиями;
- сокращено время проведения регрессивных тестов.
Цена: может меняться.
4. Katalon Studio ( https://www.katalon.com)
Это бесплатный API testing инструмент, что особенно нравится начинающим разработчикам. Он предоставляет общую среду для разработки и выполнения UI-функционала, тестирования мобильных продуктов и служб API/Web. Главным преимуществом решения является его способность комбинации уровней Business (службы API/Web) и UI. Инструмент полностью совместим с операционными системами Mac OS, Linux и Windows.
Katalon Studio поддерживает запросы RESTful и SOAP с разными командами (PUT, DELETE, GET, POST). При этом существует возможность настройки параметров команд.
Главные особенности:
- поддержка API testing запросов RESTful и SOAP;
- множество интегрированных ключей для постановки тестовых задач;
- комбинированная поддержка теста между верификациями API и UI;
- поддержка библиотеки проверки утверждений AssertJ;
- возможность применения подхода, управляемого полученными данными;
- использование исследовательского и автоматического типа тестирования;
- хорошее решение как для начинающих разработчиков, так и для опытных.
Цена: бесплатно.
5. JMeter ( https://jmeter.apache.org/)
Изначально это открытое программное обеспечение разрабатывалось для нагрузочного тестирования. Но сегодня оно активно используется для функционального тестирования.
Основные особенности:
- автоматически поддерживает файлы CSV, что необходимо для быстрого указания уникальных параметров тестирования;
- результаты тестирования воспроизводятся;
- может применяться в рамках динамического и статического API testing для определения производительности технических ресурсов;
- интеграция Jenkins и JMeter открывает возможность включать тесты в конвейерные обработки CI.
Цена: открытое программное обеспечение.
6. Apigee ( https://apigee.com/api-management/)
Это кросс-облачная платформа для тестов API, дающая возможность измерять и настраивать производительность, обеспечивать разработку API и технической поддержки с применением сторонних редакторов (Swagger). Система работает по многошаговому алгоритму, который управляется Javascript.
Главные плюсы:
- дает возможность разрабатывать, разворачивать, отслеживать и масштабировать API;
- с помощью Open API Specification быстро создает прокси и производит развертку в «облаке»;
- определяет слабые места путем наблюдения за трафиком, оценки количества ошибок и продолжительности ожидания ответа;
- на базе одного кода функционируют модели разворачивания в локальной среде и «облаке», также доступен гибридный режим.
Система тестирования Apigee создана для онлайн-бизнеса и сфер, где требуется интенсивная обработка данных. В силу своей специфики и многофункциональности решение нельзя назвать доступным.
Цена: от бесплатного пробного периода до 2 500$ / месяц.
7. Assertible ( https://assertible.com/)
Это инструмент тестирования интерфейсов прикладного программирования, который отличается надежностью и автоматизацией процессов. Его преимущества заключаются в следующем:
- система обеспечивает автоматический API testing на всех этапах интеграции и поставки приложения;
- поддерживает текущие тесты после интеграции программного обеспечения, совмещая их с популярными инструментами Slack, Zapier и GitHub;
- с помощью готовых операторов осуществляется поддержка подлинности ответов HTTP, что позволяет контролировать наличие ошибок целостности.
Цена: от бесплатного тестового периода до 500$ / месяц.
8. Rest-Assured ( http://rest-assured.io/)
Это открытый предметно-ориентированный Java-язык, делающий тестирование REST быстрым и удобным. Его плюсы:
- имеет большой набор интегрированных функционалов, поэтому не приходится прибегать к повторному кодированию;
- качественно интегрирован с платформой Serenity, что открывает возможность комбинировать тесты REST и UI в одной среде, получая хорошие результаты;
- совместим с синтаксисом конструкций BDD Given/When/Then;
- для полноценного использования не обязательно глубоко разбираться в HTTP.
Цена: открытое программное обеспечение.
9. Karate DSL ( https://github.com/intuit/karate)
Относительно новое решение для тестирования API, помогающее создавать сценарии BDD-тестов без необходимости написания характеристик этапов. Необходимые характеристики генерируются самим Karate DSL, что ускоряет и упрощает процесс запуска тестирования.
Преимущества решения:
- интегрирован на вершине Cucumber-JVM;
- может запускать тестирование и получать отчеты, как другие стандартные инструменты Java;
- поддерживает параллельное многопотоковое выполнение программного кода, а также конфигурацию переключения/продвижения;
- создать тест можно без знаний языка программирования Java;
- тестирование может осуществлять человек, не работающий непосредственно в программировании.
Цена: открытое программное обеспечение.
Есть ли универсальное решение
Нет. Вышеописанные инструменты позволяют справляться с любыми задачами в области API testing, но только в комплексе. Как и все продукты для разработчиков, решения для тестирования API не могут совмещать в рамках одного продукта все возможные функции.
Для большинства заинтересованных пользователей возможностей платных продуктов вполне достаточно, но переход на них сдерживается сравнительно высокой стоимостью. Бесплатные решения вполне способны справляться с различными видами тестирования, но их применение сопряжено с необходимостью получения специфических знаний, а также с некоторой сложностью внедрения. Кроме того, нужно учитывать, что некоторые вполне удобные инструменты могут не сочетаться с конкретной платформой, технологией или задачей.
Нужно понимать, что API testing – это актуальный тренд в области автоматического тестирования программного обеспечения. Поэтому на рынке неизбежно будут появляться новые инструменты. Они будут более удобными, многофункциональными или специализированными. В любом случае идеального решения для всех задач разработки программного обеспечения в ближайшее время создано не будет. Но расширение ассортимента инструментов для тестирования, определенно, играет на руку разработчикам.
Теперь остается только сформулировать свои требования, оценить все преимущества и недостатки подходящих решений и сделать выбор. Чтобы получить объективную возможность оценивания продуктов для тестирования, попробуйте инструменты из представленного списка. Такой подход поможет определить, какая платформа больше подходит для определенных задач, а также составить собственный топ. В итоге по мере появления на рынке новых инструментов для тестирования API вы сможете четко понимать, стоит ли использовать новинки или их возможности покрываются существующими решениями.