Этот урок является введением в тестирование API с помощью Karate Framework. Узнайте о структуре тестового сценария Karate и шагах по созданию первого тестового сценария:

API - это аббревиатура, означающая интерфейс прикладного программирования. Проще говоря, мы можем определить его как программного посредника, который обеспечивает связь между приложениями.

Нам необходимо тестирование API, потому что:

  • Результаты публикуются быстрее, поэтому больше не нужно ждать, чтобы убедиться, что API работает нормально.
  • Благодаря более быстрому реагированию, развертывание этих API также становится более быстрым, что обеспечивает быстрое время выполнения заказа.
  • Раннее обнаружение сбоев, еще до создания пользовательского интерфейса приложения, позволяет нам снизить риски и устранить неполадки.
  • Возможность крупномасштабных поставок в более короткие сроки.

Для того чтобы работать над тестированием API, на рынке доступны различные инструменты, такие как Postman, Mocha и Chai. Они показали хорошие результаты и эффективное использование для тестирования API, однако, они сильно зависят от кода. Для их использования необходимо быть технически подкованным и знать языки программирования.

Karate Framework прекрасно решает эту проблему предшествующих программных инструментов.

Что такое рамочное каратэ

Каратэ? Давайте поговорим о каратэ. Это японское? Что вы думаете? Может быть, великий Брюс Ли разработал его в свободное время.

Хотя мы хотели бы углубиться в интересные корни каратэ, пока что давайте поговорим о том. Инструмент для карате который был разработан Питер Томас один из замечательных инструментов, который приходит на помощь тестировщикам API.

Фреймворк Karate использует стиль написания программы Cucumber, который следует BDD-подходу. Синтаксис легко понять непрограммистам. И этот фреймворк - единственный инструмент тестирования API, который объединил автоматизацию API и тестирование производительности в один отдельный инструмент.

Он предоставляет пользователям возможность параллельно выполнять тестовые случаи и выполнять проверки JSON & XML.

С помощью этой информации можно вывести определенные ключевые моменты для дальнейшего детального понимания инструмента каратэ:

  • Karate - это фреймворк тестирования BDD, а не TDD.
  • Она разработана таким образом, чтобы быть простой для непрограммистов. Эта особенность является переломным моментом, поскольку она позволяет использовать и получать доступ многим людям, независимо от их технической подготовки или возможностей.
  • Он использует файл функций Cucumber и язык Gherkins для написания теста, который очень прост для понимания.

Все эти функции делают его одним из самых выгодных инструментов автоматизации на сегодняшний день.

История рамочного каратэ

Создано ' Питер Томас В 2017 году это программное обеспечение стремится сделать функциональные возможности тестирования легкодоступными для всех. Оно было написано на Java, и большинство людей ожидали, что его файлы также будут на том же языке, однако, к счастью, это не так.

Скорее, он использует файлы Gherkins, что является результатом его связи с фреймворком Cucumber. Программа автоматизации является расширением Cucumber, поэтому наследует использование файла Gherkins в своей работе. Большая разница между двумя программами заключается в том, что Karate не использует Java при тестировании, а Cucumber использует.

Именно по этой причине он предназначен для непрограммистов, поскольку синтаксис Gherkins очень удобен и понятен. Именно по этой причине Karate наиболее подходит и рекомендуется для вхождения в мир автоматизированного тестирования API.

Ниже перечислены некоторые особенности Karate Testing Framework:

  • Использует простой для понимания язык Gherkins.
  • Он не требует технических знаний программирования, как Java.
  • Он основан на популярных стандартах Cucumber.
  • Легко создать каркас.
  • Параллельное тестирование - это основная функциональность, которую обеспечивает сам Karate, поэтому нам не нужно зависеть от Maven, Gradle , и т.д.
  • Пользовательский интерфейс для отладки теста.
  • Вызов файла функций из другого файла.
  • Обеспечивает поддержку тестирования драйверов данных, которые создаются внутри компании, поэтому нет необходимости зависеть от внешних фреймворков.
  • Встроенные нативные отчеты Rest. Кроме того, он может быть интегрирован с Cucumber для улучшения UI отчетов и большей наглядности.
  • Обеспечивает внутреннюю поддержку конфигурации коммутации в различных средах тестирования (QA, Stage, Prod, Pre-Prod).
  • Бесшовная поддержка интеграции CI/CD, которая может быть полезной.
  • Способна обрабатывать различные HTTP-вызовы:
    • Поддержка Web Socket
    • SOAP-запрос
    • HTTP
    • Работа с файлами cookie в браузере
    • HTTPS
    • Данные HTML-формы
    • XML-запрос

Сравнение Карате и Rest-Assured

Будьте уверены : Это библиотека на базе Java для тестирования REST-сервисов. Она использует язык Java для написания строк кода. Она помогает в тестировании многочисленных категорий запросов, что в дальнейшем приводит к проверке различных комбинаций бизнес-логики.

Рамки каратэ : Инструмент на основе Cucumber/Gherkins, используемый для тестирования SOAP & REST сервисов.

В следующей таблице перечислены несколько наиболее заметных различий между Rest-Assured & Karate Framework:

S.No Основа Рамки каратэ REST-Assured
1 Язык В нем используется сочетание огурца и корнишонов В нем используется язык Java
2 Код Размер Обычно строк кода меньше, так как он следует структуре, подобной Cucumber Строк кода больше, так как он включает в себя использование языка Java
3 Требуются технические знания Не программисты могут легко написать код Gherkins Необходимы технические знания для написания кода на Java
4 Тестирование на основе данных Необходимо использовать TestNG или эквивалент для поддержки того же самого Собственные метки могут быть использованы для поддержки тестирования данных
5 Обеспечивает ли он поддержку вызовов SOAP Да, она обеспечивает Это относится только к REST-запросу
6 Параллельное тестирование Да, параллельное тестирование легко поддерживается с параллельной генерацией отчетов. Не в значительной степени. Хотя люди пытались это сделать, но процент неудач превышает процент успехов.
7 Отчетность Он обеспечивает внутреннюю отчетность, поэтому не зависит от внешних плагинов. Мы даже можем интегрировать его с плагином отчетности Cucumber для улучшения пользовательского интерфейса. Необходима зависимость от внешних плагинов, таких как Junit, TestNG
8 Поддержка CSV для внешних данных Да, из Karate 0.9.0 Нет, необходимо использовать Java-код или библиотеку
9 Автоматизация веб-интерфейса Да, начиная с версии Karate 0.9.5 автоматизация Web-UI возможна Нет, это не поддерживается
10 Образец GET Заданный параметр val1 = 'name1'

И param val2 = 'name2'

И путь 'somelocation'

Когда метод получает

Тогда ответ на совпадение содержит 'OKAY'

given().

param("val1", "name1").

param("val2", "name2").

when().

get("/some\location").

then().

body(containsString("OKAY"));

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

Инструменты, необходимые для работы с Karate Framework

Теперь, когда мы получили базовые знания о Karate Framework, давайте рассмотрим процессы и инструменты, необходимые для настройки среды Karate.

#1) Затмение

Eclipse - это интегрированная среда разработки, используемая в области компьютерного программирования. В основном она используется для программирования на Java. Как уже упоминалось ранее, Karate написан на Java, поэтому логично, почему Eclipse является наиболее подходящей IDE для программного обеспечения для тестирования API. Еще одна причина заключается в том, что это инструмент с открытым исходным кодом, и это довольно веская причина, чтобы выбрать этот инструмент.

Примечание: Мы даже можем использовать IntelliJ, Visual Studio и другие различные редакторы, доступные на рынке.

#2) Maven

Это инструмент автоматизации сборки, используемый в основном для создания Java-проектов. Это один из способов создания среды Karate и написания кода. Чтобы настроить ваш Eclipse с учетом требований Maven, вы можете щелкнуть здесь для установки Maven.

Работая в Maven, используйте зависимости Maven, которые помогут вам поддерживать Karate Framework.

Следующие зависимости будут использоваться с Maven в pom.xml.

 com.intuit.karate karate-apache 0.9.5 test com.intuit.karate karate-junit4 0.9.5 test 

Примечание: Последние версии могут быть доступны в репозитории Maven.

#3) Gradle

Gradle является альтернативой Maven и может использоваться в равном качестве. Они имеют свои сходства и различия, но могут быть одинаково использованы для создания среды для наших кодов Karate.

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

 testCompile 'com.intuit.karate:karate-junit4:0.6.0' testCompile 'com.intuit.karate:karate-apache:0.6.0' 

Примечание: Вы можете использовать MAVEN или ВЫПУСК.

#4) Настройка среды Java в вашей системе

Необходимо настроить среду JDK и JRE, чтобы начать работу со сценариями Karate Framework.

Структура сценария тестирования карате

Тестовый сценарий Karate известен тем, что имеет расширение ".feature". Это свойство унаследовано от Cucumber. Организация файлов в соответствии с конвенциями Java также разрешена. Вы можете свободно организовывать свои файлы в соответствии с конвенциями пакетов Java.

Однако руководство Maven предписывает хранить файлы, не относящиеся к Java, отдельно. Они хранятся в папке src/test/resources структура. А файлы Java хранятся под src/main/java .

Но создатели Karate Framework считают, что нужно хранить как Java, так и не-Java файлы бок о бок. По их мнению, гораздо проще искать файлы *.java и *.feature, когда они хранятся вместе, а не следуют стандартной структуре Maven.

Это можно легко сделать, настроив pom.xml следующим образом (для Maven):

 src/test/java **/*.java ... 

Ниже приводится общая структура рамочного каратэ:

Теперь, поскольку этот Karate Framework использует файл Runner, который также необходим в Cucumber для запуска файлов функций, поэтому большая часть написанного будет соответствовать стандартам Cucumber.

Но, в отличие от Cucumber, в Karate эти шаги не требуют четкого определения, что, в свою очередь, повышает гибкость и простоту работы. Нам не нужно добавлять дополнительный клей, который обычно приходится добавлять, когда мы следуем фреймворку Cucumber.

Класс "Бегун" в большинстве случаев называется TestRunner.java.

Тогда файл TestRunner.java примет вид:

 import com.intuit.karate.junit4.Karate; import org.junit.runner.RunWith; @RunWith(Karate.class) public class TestRunner { } 

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

Общий файл *.feature выглядит примерно так, как показано ниже:

 Характеристика: получение сведений о пользователе Сценарий: тестирование вызова get для получения сведений о пользователе Дается url '//reqres.in/api/users/2' Когда метод GET Тогда статус 200 

Создание первого базового сценария тестирования карате

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

Прежде чем мы напишем основные сценарии тестирования Karate, пожалуйста, установите следующие реквизиты на вашей машине:

  • Eclipse IDE
  • Maven. Установите соответствующий путь Maven.
  • JDK & JRE. Установите соответствующий путь.

Давайте рассмотрим пошаговый подход:

#1) Создайте новый MAVEN Проект в редакторе Eclipse

  • Открыть Eclipse
  • Нажмите на Файл. Выберите Новый проект.

  • Выберите проект Maven

  • Выберите местоположение рабочей области.
  • Выберите архетип (обычно мы выбираем " Maven-archetype-quickstart 1.1 " для простых проектов Maven).
  • Укажите ID группы & ID артефакта (в нашем примере мы использовали следующие значения).
    • Идентификатор группы : Каратэ
    • Идентификатор артефакта: KarateTestScriptsSample
  • Нажмите кнопку Finish, чтобы завершить настройку.

#2) После создания, теперь в окне Project Explorer вы сможете увидеть следующую структуру.

#3) Включите все свои зависимости.

Нашим первым шагом после установки будет включить все зависимости которые потребуются для выполнения. Мы сохраним все теги в POM.xml (предполагается, что вы уже знаете об использовании POM.xml).

  • Откройте POM.xml и скопируйте приведенный ниже код под тегом dependency и сохраните файл.
 com.intuit.karate karate-apache 0.9.5 test com.intuit.karate karate-junit4 0.9.5 test 

Нажмите здесь для источника.

#4) Давайте продумаем сценарий, что мы будем тестировать в этом сценарии базового тестирования.

Сценарий:

Мы будем тестировать API с помощью этого URL.

Путь: api/users/2

Метод: ПОЛУЧИТЬ

И нам нужно подтвердить , возвращает ли запрос Код успеха (200) или нет.

Проще говоря, мы просто протестируем образец API, чтобы проверить, успешно ли он выполняется.

Примечание: Мы берем образец API, который доступен для тестирования. Вы можете выбрать любой PATH или обратиться к своему API.

Нажмите здесь для источника.

#5) Теперь нашим следующим шагом будет создание .функция файл.

Как уже говорилось в разделе "Введение", в файл .feature это свойство, унаследованное от Cucumber. В этом файле мы напишем тестовые сценарии, которые необходимо выполнить для проведения тестирования API.

  • Перейти к папке src/test/java в вашем проекте.

  • Щелкните на нем правой кнопкой мыши и создайте новый файл - userDetails.feature. Затем нажмите кнопку Готово.

Теперь вы увидите следующий файл в папке src/test/java

Сайт Значок зеленого цвета напоминает .feature fi le в Cucumber, который мы только что создали.

  • После того как файл создан, теперь мы напишем наши тестовые сценарии, которые будут рассмотрены в следующем разделе.

#6) Поскольку у нас есть сценарий и заготовка. особенность файл готов, теперь давайте приступим к созданию нашего первого скрипта. Давайте начнем кодирование

Напишите следующую строку кода в файле userDetails.feature, который мы создали в Шаге №5:

 Характеристика: получение сведений о пользователе Сценарий: тестирование вызова get для получения сведений о пользователе Дается url '//reqres.in/api/users/2' Когда метод GET Тогда статус 200 

Давайте попробуем разобраться в компонентах, которые записаны в приведенном выше файле:

  • Характеристика: Ключевое слово объясняет название функции, которую мы тестируем.
  • Общие сведения: Это необязательный раздел, который рассматривается как раздел предварительных требований. Он может быть использован для определения того, что необходимо для тестирования API. Он содержит HEADER, URL & PARAM варианты.
  • Сценарий: Каждый файл характеристик, который вы увидите, будет содержать хотя бы одну характеристику (хотя он может давать множество сценарии). Это описание тестового случая.
  • Дано: Это шаг, который должен быть выполнен до выполнения любого другого шага тестирования. Это обязательное действие, которое должно быть выполнено.
  • Когда: Он определяет условие, которое должно быть выполнено для выполнения следующего шага тестирования.
  • Тогда: Это говорит нам о том, что должно произойти в случае, если условие, упомянутое в Когда удовлетворен.

Примечание: Все вышеперечисленные ключевые слова относятся к языку Gherkins. Это стандартный способ написания тестовых сценариев с помощью Cucumber.

И еще несколько слов, использованных в файле характеристик:

  • 200: Это код статуса/ответа, который мы ожидаем (Нажмите здесь для получения списка кодов статуса)
  • GET: Это метод API, такой как POST, PUT и т.д.

Мы надеемся, что это объяснение было для вас понятным. Теперь вы сможете соотнести то, что именно написано в приведенном выше файле.

Теперь нам нужно создать файл TestRunner.java

Как объяснялось в предыдущем разделе, Cucumber нуждается в файле Runner, который необходим для выполнения программы .функция файл, содержащий сценарии тестирования.

  • Перейти к папке src/test/java в вашем проекте

  • Щелкните на нем правой кнопкой мыши и создайте Новый Java-файл: TestRunner.java
  • После того как файл будет создан, разместите под ним следующие строки кода:
 import org.junit.runner.RunWith; import com.intuit.karate.junit4.Karate; @RunWith(Karate.class) public class TestRunner { } 
  • Test Runner - это файл, который теперь будет выполняться для выполнения желаемого сценария, написанного в Шаге №5.

#7) Теперь у нас готовы оба файла TestRunner.Java и userDeatils.feature. Единственная задача, которая остается для нас, это Запускайте сценарий.

  • Перейдите к файлу TestRunner.java и щелкните правой кнопкой мыши по файлу, как показано на рисунке ниже.

  • Выберите Run As -> Junit Test
  • После выбора вы увидите, что тестовый пример запущен.
  • Дождитесь выполнения тестового сценария. После этого в окне появится что-то вроде того, что показано на рисунке ниже.

  • Наконец, мы можем сказать, что успешно создали наш самый первый базовый Тестовый сценарий используя Рамки каратэ.

#8) Наконец, фреймворк Karate также предоставляет HTML-презентацию отчета о выполненных действиях.

  • Перейдите в целевую папку -> surefire-reports-> Здесь вы увидите свой HTML-отчет, который можно открыть.

** Мы также рекомендуем вам открыть его с помощью браузера Chrome, чтобы он лучше выглядел и ощущался.

  • Вам будет показан следующий HTML-отчет, в котором будут изображены Сценарии и тестирование который был выполнен для упомянутого сценария:

Заключение

В этом руководстве мы обсудили тестирование API, различные инструменты тестирования, доступные на рынке, и то, как Karate Framework является лучшим вариантом по сравнению с аналогами.

Для создания нашего первого базового тестового сценария мы следовали пошаговому подходу. Мы начали с создания базового Проект Maven в Eclipse IDE для создания файла .feature, который содержит весь сценарий тестирования и файл Runner для выполнения тестового случая, указанного в файле .feature.

В конце нескольких шагов мы можем увидеть отчет о выполнении результатов теста.

Мы надеемся, что это руководство было полезным для новичков в изучении того, как создать свой первый тестовый сценарий с использованием Karate Framework и провести тестирование API. Этот подробный пошаговый подход является прекрасным способом запуска и выполнения различных тестов на API.

NEXT>>

Прокрутить вверх