15 инструментов для тестирования API |
16.11.2017 18:35 |
Автор: Джо Колантонио (Joe Colantonio) Оригинал статьи: https://techbeacon.com/5-top-open-source-api-testing-tools-how-choose https://www.joecolantonio.com/2017/05/16/12-open-source-api-testing-tools-rest-soap-services/ Перевод: Ольга Алифанова Сдвиг влево, происходящий благодаря таким процессам, как непрерывная интеграция и непрерывные релизы, приводит к растущей необходимости быстрой обратной связи от тестировщиков. Проблема интерфейсных тестов в том, что они довольно медленные, и поэтому они – не лучший вариант, когда нужно быстро дать разработчикам знать, сломал ли их код новый билд. API-тесты куда быстрее и более надежны. Прежде чем рассматривать инструменты тестирования API, давайте убедимся, что мы одинаково понимаем, что это вообще такое. Что такое API? Программные интерфейсы приложений (API) – это спецификация, которая работает как интерфейс между компонентами ПО. Большая часть функционального тестирования завязана на пользовательском интерфейсе – формах, веб-страницах. API-тестирование обходит пользовательский интерфейс, общаясь с приложением напрямую через запросы к его API. Это тестирование позволяет вам тестировать такие технологии, как JMS HTTP, базы данных и Web-службы. Иногда его называют "консольным" тестированием. Большая часть консольного тестирования завязана на обход интерфейса и отправку запроса напрямую к бэкэнду или службе приложения, а также получение ответа и удостоверении, что все работает так, как должно. Этот простой пример часто описывается как взаимоотношения клиента и сервера. Клиент делает запрос, обращаясь к ресурсу. Запрос отправляется, находит сервер, и сервер выполняет запрос. Он находит нужный ресурс и отправляет ответ клиентской части. Какие инструменты тестирования API использовать, как их выбирать? Selenium годится только для браузерного тестирования, а что же использовать для тестирования служб REST и Soap Если используется Java, то REST-Assured – лучший выбор для автоматизации API. Это мой основной инструмент для API-тестирования. REST-Assured – это богатая Java-библиотека, которую можно применять для тестирования REST-служб, основанных на HTTP. Она изначально предназначена для тестировщиков и интегрируется с любым основанным на Java фреймворком автоматизации. Она предоставляет похожий на BDD доменно-специфичный язык, упрощающий создание автотестов для API на Java. Встроенные функции позволяют не программировать с нуля. Бонус: если вы используете Serenity, то REST-Assured отлично с ним интегрируется, позволяя совмещать UI и REST-тесты в одном фреймворке с отличными подробными отчетами. Она также поддерживает XML и JSON-запросы/ответы. Тестировать REST-службы на Java сложнее, чем на динамических языках вроде Ruby или Groovy. Выбирайте REST-Assured – она привносит простоту динамических языков в область Java-программирования. API REST-Assured создан так, что вам не требуется быть экспертом по HTTP. Если ваша команда в основном состоит из Java-разработчиков, то ваш выбор очевиден. Postman – это клиент, который зародился как плагин для Chrome, но недавно был выпущен как десктоп-приложение для Mac и Windows. Многим не хочется морочиться с программированием на языке разработчиков и в среде разработки. Postman для них – идеальный вариант для быстрого "грязного" тестирования API. При этом он достаточно мощный и позволяет создавать более интегрированные решения при желании. У Postman богатый интерфейс, облегчающий его использование. Он также позволяет легко делиться знаниями с коллегами – вы можете сохранять все ваши запросы и ожидаемые ответы и отправлять их кому-нибудь еще. Компания Big Fish Games, занимающаяся казуальными играми, использует Postman для совместной работы команд. По словам Эмбер Рейс, инженеру по тестированию этой компании, кто-нибудь один отвечает за создание тест-кейсов для API. Этот человек потом публикует информацию в wiki, и все остальные имеют возможность запускать эти тесты и убедиться, что изменения не ломают существующий функционал. Postman даже позволяет размещать на внутреннем сайте кнопку "Запустить в Postman", автоматически стартующую тесты. Если ваша команда хочет не только тестировать API, но и автоматизировать ряд усилий по исследовательскому тестированию, то Postman – отличный выбор. Его можно использовать для отправки POST-запросов к серверу и получения ответов. Он позволяет настроить все заголовки и временные файлы, которые ожидает ваш API, и проверить ответ по получению.
KarateDSL – это относительно новый инструмент, сильно упрощающий создание сценариев для BDD-тестов API. В отличие от других BDD-фреймворков (Cucumber, JBehave, SpecFlow), вам не требуется писать определения шагов. Karate уже создал все нужные вам определения, и вы можете сразу же приступать к тестированию. Я записал видео, демонстрирующее, насколько он прост в использовании. Если вы не боитесь новых технологий и уже используете Java и Cucumber, KarateDSL может стать идеальным выбором для вашей команды. Он позволяет создавать тесты с последовательностями запросов к любой web-службе и убеждаться, что ответы соответствуют ожиданиям.
SoapUI – довольно давно существующий консольный инструмент, созданный SmartBear. Он существует в двух версиях – бесплатная версия с открытым исходным кодом, и Pro. Бесплатную, следовательно, можно при необходимости модифицировать, а платная более дружелюбна к пользователю и включает дополнительный функционал – редактор форм, мастер ассертов для Xpath, редактор запросов SQL. Если ваши команды занимаются только тестированием API и состоят в основном из тестировщиков, то это неплохой выбор. Это полнофункциональный инструмент тестирования API, не требующий создания нового решения с нулы. Если вам нужна специфическая функциональность, ее можно запрограммировать в SoapUI на Groovy. Инструмент хорошо подходит для сложных сценариев тестирования. Возможности бесплатной версии:
JMeter Несмотря на то, что JMeter создан для нагрузочного тестирования, многие также используют его для функционального тестирования API. Он включает всю необходимую для тестирования API функциональность, а также ряд дополнительных возможностей, улучшающих тестирование. К примеру, он умеет автоматически работать с CSV-файлами, позволяя быстро создавать уникальные значения параметров для тестов. Он также интегрируется с Jenkins, что дает возможность включать API-тесты в процессы непрерывной интеграции. Если вы планируете создать функциональные тесты, связанные с тестами производительности, то вы можете убить двух зайцев одним выстрелом, используя для этого JMeter. Fiddler Fiddler позволяет отслеживать, менять и повторно использовать HTTP-запросы. С его помощью можно проводить дебаг веб-сайтов, а используя расширения, можно еще больше увеличить спектр его возможностей. Одно из этих расширений — APITest – сильно расширяет возможности Fiddler по проверке поведения web-API. Для более сложного тестирования можно использовать библиотеку FiddlerCore.NET Class Library и создать инфраструктуру для API-тестирования. Это отличный выбор для команд, использующих .NET-языки, так как тесты можно писать на абсолютно любом из них. HttpMaster описывает себя как инструмент веб-разработки и тестирования, позволяющий автоматизировать тестирование сайтов и служб. Его можно применять для тестирования REST-служб и API-приложений. Он также позволяет отслеживать ответы API.
RestSharp – это простенький REST и HTTP API-клиент для .NET
Rest Console – это HTTP-клиент и визуализатор/конструктор запросов, помогающий разработчиком создавать, дебажить и тестировать REST API.
RoboHydra – это средство тестирования для клиентов, основанных на HTTP (т. е. ПО, делающего HTTP-запросы). Вместо того, чтобы подключать клиенты к реальному серверу, вы подключаете их к RoboHydra и заставляете его отвечать необходимым образом.
WebInject – решение с открытым исходным кодом для автоматизированного тестирования веб-приложений и служб. Его можно использовать для тестирования отдельных компонентов с HTTP-интерфейсами (JSP, ASP, CGI, PHP, AJAX, Servlets, HTML Forms, XML/SOAP Web Services, REST, и так далее).
PyRestTest – инструмент для тестирования API на основе Python.
Airborne – основанный на Ruby инструмент с открытым исходным кодом.
Unirest Рекомендуется Unmesh Gundecha Unirest как легкий клиент для HTTP-запросов. Можно комбинировать с xUnit для тестирования. Mockbin рекомендован Аугусто Мариетти. Он позволяет генерировать собственные конечные точки для тестирования, имитации и отслеживания HTTP-запросов и ответов между библиотеками, сокетами и API.
|