Разделы портала

Онлайн-тренинги

.
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

REST-Assured

Если используется 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

Postman – это клиент, который зародился как плагин для Chrome, но недавно был выпущен как десктоп-приложение для Mac и Windows.

Многим не хочется морочиться с программированием на языке разработчиков и в среде разработки. Postman для них – идеальный вариант для быстрого "грязного" тестирования API. При этом он достаточно мощный и позволяет создавать более интегрированные решения при желании.

У Postman богатый интерфейс, облегчающий его использование. Он также позволяет легко делиться знаниями с коллегами – вы можете сохранять все ваши запросы и ожидаемые ответы и отправлять их кому-нибудь еще.

Компания Big Fish Games, занимающаяся казуальными играми, использует Postman для совместной работы команд. По словам Эмбер Рейс, инженеру по тестированию этой компании, кто-нибудь один отвечает за создание тест-кейсов для API. Этот человек потом публикует информацию в wiki, и все остальные имеют возможность запускать эти тесты и убедиться, что изменения не ломают существующий функционал. Postman даже позволяет размещать на внутреннем сайте кнопку "Запустить в Postman", автоматически стартующую тесты.

Если ваша команда хочет не только тестировать API, но и автоматизировать ряд усилий по исследовательскому тестированию, то Postman – отличный выбор.

Его можно использовать для отправки POST-запросов к серверу и получения ответов. Он позволяет настроить все заголовки и временные файлы, которые ожидает ваш API, и проверить ответ по получению.

  • Можно использовать для автоматизированного и исследовательского тестирования.
  • Можно использовать для Mac, Windows, Linux &Chrome.
  • Широкие возможности для интеграции – например, с форматами Swagger & RAML
  • Имеет функции запуска, тестирования, документации и отслеживания.
  • Не требует изучения новых языков.

Karate DSL

KarateDSL – это относительно новый инструмент, сильно упрощающий создание сценариев для BDD-тестов API. В отличие от других BDD-фреймворков (Cucumber, JBehave, SpecFlow), вам не требуется писать определения шагов. Karate уже создал все нужные вам определения, и вы можете сразу же приступать к тестированию. Я записал видео, демонстрирующее, насколько он прост в использовании.

Если вы не боитесь новых технологий и уже используете Java и Cucumber, KarateDSL может стать идеальным выбором для вашей команды. Он позволяет создавать тесты с последовательностями запросов к любой web-службе и убеждаться, что ответы соответствуют ожиданиям.

  • Основан на Cucumber-JVM
  • Позволяет запускать тесты и генерировать отчеты
  • Создание тестов не требует знания Java
  • Их легко могут написать даже те, кто вообще не умеет программировать.

SoapUI

SoapUI – довольно давно существующий консольный инструмент, созданный SmartBear. Он существует в двух версиях – бесплатная версия с открытым исходным кодом, и Pro. Бесплатную, следовательно, можно при необходимости модифицировать, а платная более дружелюбна к пользователю и включает дополнительный функционал – редактор форм, мастер ассертов для Xpath, редактор запросов SQL.

Если ваши команды занимаются только тестированием API и состоят в основном из тестировщиков, то это неплохой выбор. Это полнофункциональный инструмент тестирования API, не требующий создания нового решения с нулы. Если вам нужна специфическая функциональность, ее можно запрограммировать в SoapUI на Groovy. Инструмент хорошо подходит для сложных сценариев тестирования.

Возможности бесплатной версии:

  • Простое создание собственного кода через Groovy
  • Создание тестов методом перетаскивания
  • Возможность создания сложных сценариев
  • Асинхронное тестирование
  • Mock-служба позволяет имитировать поведение служб до их внедрения.

JMeter

Несмотря на то, что JMeter создан для нагрузочного тестирования, многие также используют его для функционального тестирования API.

Он включает всю необходимую для тестирования API функциональность, а также ряд дополнительных возможностей, улучшающих тестирование.

К примеру, он умеет автоматически работать с CSV-файлами, позволяя быстро создавать уникальные значения параметров для тестов. Он также интегрируется с Jenkins, что дает возможность включать API-тесты в процессы непрерывной интеграции.

Если вы планируете создать функциональные тесты, связанные с тестами производительности, то вы можете убить двух зайцев одним выстрелом, используя для этого JMeter.

Fiddler

Fiddler позволяет отслеживать, менять и повторно использовать HTTP-запросы.  С его помощью можно проводить дебаг веб-сайтов, а используя расширения, можно еще больше увеличить спектр его возможностей.

Одно из этих расширений — APITest – сильно расширяет возможности Fiddler по проверке поведения web-API.

Для более сложного тестирования можно использовать библиотеку FiddlerCore.NET Class Library и создать инфраструктуру для API-тестирования.

Это отличный выбор для команд, использующих .NET-языки, так как тесты можно писать на абсолютно любом из них.

HttpMaster Express

HttpMaster описывает себя как инструмент веб-разработки и тестирования, позволяющий автоматизировать тестирование сайтов и служб. Его можно применять для тестирования REST-служб и API-приложений. Он также позволяет отслеживать ответы API.

  • Позволяет кастомизировать запросы
  • Возможности для редактирования параметров позволяют включать в запрос динамические данные.
  • Можно использовать цепочки запросов, включающих данные предыдущего запроса в следующий.

RestSharp

RestSharp – это простенький REST и HTTP API-клиент для .NET

  • Поддерживает .NET 3.5+, Silverlight 5, Windows Phone 8, Mono, MonoTouch, Mono для Android
  • Легко устанавливается через NuGet
  • Поддержка GET, POST, PUT, PATCH, HEAD, OPTIONS, DELETE

Rest Console

Rest Console – это HTTP-клиент и визуализатор/конструктор запросов, помогающий разработчиком создавать, дебажить и тестировать REST API.

  • Возможность легко создавать параметры запроса
  • Подсвечивание синтакса
  • Поддержка аутентификации: Plain, Basic, OAuth + Custom

RoboHydra Server

RoboHydra – это средство тестирования для клиентов, основанных на HTTP (т. е. ПО, делающего HTTP-запросы). Вместо того, чтобы подключать клиенты к реальному серверу, вы подключаете их к RoboHydra и заставляете его отвечать необходимым образом.

  • Можно тестировать множество различных клиентов.
  • Написан на Javascript, запускается под Node

WebInject

WebInject – решение с открытым исходным кодом для автоматизированного тестирования веб-приложений и служб. Его можно использовать для тестирования отдельных компонентов с HTTP-интерфейсами (JSP, ASP, CGI, PHP, AJAX, Servlets, HTML Forms, XML/SOAP Web Services, REST, и так далее).

  • Работает через командную строку
  • Написан на Perl – можно установить на MS Windows, GNU/Linux, BSD, Solaris, MAC OS

Pyresttest

PyRestTest – инструмент для тестирования API на основе Python.

  • Позволяет создавать тесты в базовых YAML или JSON конфигурационных файлах, не требует кода
  • Возвращает коды при падении теста
  • Работает только под  Mac и Linux

Airborne

Airborne – основанный на Ruby инструмент с открытым исходным кодом.

  • Работает с приложениями Rack (например, Sinatra и Grape)
  • Работает с API, написанными на Rails

Unirest

Рекомендуется Unmesh Gundecha Unirest как легкий клиент для HTTP-запросов. Можно комбинировать с xUnit для тестирования.

Mockbin

Mockbin рекомендован Аугусто Мариетти. Он позволяет генерировать собственные конечные точки для тестирования, имитации и отслеживания HTTP-запросов и ответов между библиотеками, сокетами и API.

  • Имитация собственных конечных точек.
  • Создание HTTP-методов
  • Логирование и отслеживание входящих запросов к конечным точкам

Обсудить в форуме