Постоянные «сдвиги влево», которые проходят при использовании такого метода как непрерывные выпуски ПО, неуклонно приводят к тому, что возрастает количество обратной связи от отдела QA.
Актуальная проблема интерфейсов заключается в том, что они очень медленные и не являются наиболее хорошим вариантом, когда разработчики должны узнать, сломал ли их новую сборку ранее написанный программный код. В этом контексте, API-тесты являются наиболее надежным и эффективным решением.
Перед тем как рассмотреть широкий «ассортимент» доступных на сегодняшний день инструментов автоматизации API-тестов, давайте детально уясним, что же такого они из себя представляют.
Понятие API
API (программные интерфейсы приложений) – особый вид спецификации, которая взаимодействует как интерфейс между особыми компонентами определенного программного обеспечения.
Значительная часть функционального тестирования основывается как раз на пользовательском интерфейсе – различные формы, веб-страницы, процессы. API тесты «обходят» части пользовательского интерфейса, взаимодействуя с приложениями и системами напрямую, посредством запросов к его API.
Подобная форма тестирования позволяет проверять работоспособность таких распространенных технологий, как базы данных, JMS HTTP и веб-службы.
Иногда можно встретить и другое название этого процесса – «консольное тестирование».
Значительная часть консольного тестирования основана на обходе интерфейса и прямолинейной отправке запроса прямиком к back-end части приложения и получению ответа и удостоверения в том, что все функционирует, как нужно.
Это самый простой и понятный пример того, как проходит процесс тестирования конечных точек (API).
Клиент совершает запрос, обращаясь при этом к ресурсу. Запрос отправляется, находит нужный сервер, а сервер в свою очередь выполняет входящий запрос. После нахождения нужного запроса, он прямиком отсылается к клиентской части.
И вот теперь можно смело поговорить об инструментах, которые необходимо использовать в процессе тестирования конечных точек в форме полной автоматизации.
Конечно, можно банально обратиться к проверенному годами Selenium, но его можно использовать только при браузерном тестировании, а вот для процессов тестирования SOAP и REST он точно не подходит в полной мере.
REST-Assured
Если на проекте активно используется Java, значит REST-Assured – наиболее приемлемый и эффективный инструмент для автоматизации процесса проверки API. Именно этот инструмент в кругу разработчиков и тестировщиков является наиболее часто используемым.
Утилита REST-Assured – это очень богатая и разносторонняя Java-библиотека, которую можно всецело использовать для проверки функциональности разнообразных REST-служб, выстроенных на HTTP протоколах.
Изначально, при ее создании было отмечено, что она идеально подойдет для тестировщиков, которые часто сталкиваются с процессами автоматизации различных Java фреймворков.
С технической точки зрения, REST-Assured являет собой оригинальный доменно-специфический язык, с помощью которого можно максимально упростить создание автоматических тестов для продукта на основе Java.
Наличие большого количества шаблонных функций позволяет не программировать с нуля.
Приложение поддерживает XML, а также JSON запросы и ответы.
Karate DSL
Относительно новый инструмент автоматизации, с помощью которого тестировщик может существенно упростить создание различных сценариев для своих BDD-тестов для проверки конечных точек. В отличие от большинства уже разработанных утилит и приложений, при использовании Karate DSL вам не нужно создавать новые шаги и тестовые сценарии.
Программа уже создала все необходимые определения, которые могут использоваться при тестировании.
Продукт Karate DSL однозначно может стать идеальным инструментом, который подойдет для всего отдела тестирования в качестве базовой утилиты, с помощью которой можно создавать и выполнять массу проверок.
Его технологические возможности нацелены на создание базы последовательных запросов, которые очень легко анализировать на соответствие ожиданий.
HTTPMaster Express
Утилита HTTPMaster Express являет собой специализированный инструмент веб-разработки, с помощью которого можно спокойно автоматизировать проверку функциональности веб-сайтов и сопутствующих серверных служб.
Ее запросто можно использовать в качестве основного инструмента для процессов тестирования различных REST-служб или API-программ.
Также есть возможность быстро отслеживать входящие ответы от API-приложений.
Особенности программы:
- Позволяет настроить клиентские запросы;
- Есть возможность редактировать установленные параметры, для включения динамических данных;
- Работа с цепочкой запросов, где информация из первого запроса передается в следующий и так далее.
RestSharp
Простой REST и HTTP API-клиент для .NET.
Особенности приложения:
- Всецело поддерживает взаимодействие с MonoTouch, Mono для Android, Windows Phone 10, NET 3.5+, Silverlight 5;
- Запросто монтируется через NuGEt;
- Поддержка DELETE, HEAD, POST, OPTIONS.
Rest Console
Универсальный HTTP-клиент для создания и редактирования запросов, позволяющий тестировщикам редактировать и отлаживать ранее созданный REST API.
Возможности:
- Создание параметров запросов;
- Параметры подсвечивания синтаксиса;
- Работа с аутентификацией Plain, OAuth+Custom;
RoboHydra Server
Популярное средство проверки для клиентов, выстроенных на основе HTTP.
Чтобы постоянно не подключаться к реальному серверу, вы просто подключаете RoboHydra Server и приложение отвечает вместо вас необходимым образом.
Особенности:
- Разработан на JavaScript, запускается из-под Node;
- Есть возможность тестирования с помощью целой группы разнообразных клиентов.
WebInject
Эффективное решением с открытым программным кодом, которое подходит для разнообразных процессов автоматизированного тестирования веб-приложений и подключенных служб.
Отличительная черта – функционирование через командную строку.
Утилита создана на основе языка программирования Perl и является кросс-платформенным продуктом, который одинаково поддерживаться, как на Windows, Linux, так и на MaC OS.
Pyresttest
Еще один эффективный инструмент автоматизации проверки API на основе языка программирования Python.
С его помощью можно:
- Создавать систему базовых тестов YAML или JSON в файлах, которые не требуют исходного программного кода;
- Возвращать коды в случае падения теста;
- Создавать и редактировать группу тестов под управлением операционных систем Linux и Mac OS.
Airborne
Продукт Airborne – построенный на Ruby фреймворк с открытым исходным кодом.
- Функционирует с утилитами Rack;
- Работает с API, которые созданы на Rails.
Unirest
Данный инструмент довольно активно рекомендуется как один из наиболее простых клиентов для тестирования HTTP запросов.
Его запросто можно комбинировать с xUnit для процессов тестирования.
Mockbin
Этот продукт рекомендован как наиболее эффективный инструмент самим Аугусто Мариетти.
Используя его, можно запросто генерировать собственную группу конечных точек для проверок, имитации и отслеживания HTTP-запросов и ответов между подключенными библиотеками, сокетами и собственно API.
Возможности:
- Имитация своих конечных точек;
- Создание группы HTTP-методов;
- Процессы логирования и отслеживания входящей группы запросов к конечным точкам.
Как видите, количество инструментов для проведения процессов автоматизации тестирования конечных точек весьма разношерстный и состоит из большого количества разнообразных инструментов и приложений, с помощью которых можно настроить оптимальную методику построения процессов проверок перед выпуском веб-продуктов.
Теперь же можно поговорить о некоторых нюансах автоматизации API, на которые необходимо обращать свое внимание.
Рациональность отбора тестов API для автоматизации
Первые малозначимые проблемы начинаются уже во время выбора необходимого тест-кейса, которые в будущем будут использоваться в системе автоматизированной проверки.
Не каждый тест-кейс запросто поддается процессу автоматизации, и нередко возникают ситуации, когда проверки рационально провести в мануальной форме. Если простыми словами, то на 1000 есть около 10% тестов, которые не получиться автоматизировать.
Даже в сфере проверки конечных точек (API) бывает очень трудно отойти от процессов ручного тестирования в пользу автоматизации.
Помните, что ручное тестирование и автоматизация – это не взаимоисключающие процессы, а максимально взаимодополняющие.
Вывод
Хотя про автоматизацию тестирования API было изложено много негатива, нет полной уверенности в том, что избегать автотестов – наиболее правильное решение. От них всегда есть существенная польза.
Применение автоматизации дает эффективные результаты при тех же финансовых затратах.Но, чтобы всецело говорить о том, что методика автоматизированного тестирования конечных точек имеет реальную пользу, необходимо оперировать действительно большими проектами со сложной логической и технической базой.
И напоследок, неоспоримые преимущества любой автоматизации:
- Автотест работает намного быстрее, чем человек;
- Точность автотеста намного выше;
- Автоматизация – явный курс на повышения контроля качества;
- Автоматизация может использоваться в любых процессах тестирования;
- Автотест можно запускать даже ночью, пока все тестировщики безмятежно спят!
Оставить комментарий