Цей урок є вступом до тестування API за допомогою Karate Framework. Дізнайтеся про структуру тестового скрипта Karate і кроки для створення першого тестового скрипта:

API - це абревіатура, що розшифровується як Application Programming Interface. Простими словами, це програмний посередник, який забезпечує зв'язок між додатками.

Нам потрібне тестування 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.

Нижче наведено деякі особливості системи тестування з карате:

  • Використовує просту та зрозумілу мову корнішонів.
  • Він не вимагає технічних знань програмування, як Java.
  • Він базується на популярних стандартах Cucumber.
  • Легко створити фреймворк.
  • Паралельне тестування - це основна функціональність, яка надається самим Karate, тому нам не потрібно залежати від Мейвен, Грейдл. і т.д.
  • Інтерфейс для налагодження тесту.
  • Виклик функціонального файлу з іншого файлу.
  • Забезпечує підтримку тестування драйверів даних, які побудовані власними силами, отже, немає необхідності залежати від зовнішніх фреймворків.
  • Вбудовані вбудовані звіти про відпочинок. Крім того, його можна інтегрувати з Cucumber для кращих звітів і більшої наочності користувацького інтерфейсу.
  • Надає власну підтримку для перемикання конфігурації між різними середовищами тестування (QA, Stage, Prod, Pre-Prod).
  • Бездоганна підтримка інтеграції CI/CD, яка може бути корисною.
  • Здатний обробляти різні HTTP-дзвінки:
    • Підтримка веб-сокетів
    • SOAP-запит
    • HTTP
    • Обробка файлів cookie браузера
    • HTTPS
    • Дані HTML-форми
    • XML запит

Порівняння карате та релаксації

Будьте певні. Опис: Це бібліотека на основі Java для тестування REST-сервісів. Вона використовує мову Java для написання рядків коду. Допомагає тестувати численні категорії запитів, що в подальшому призводить до перевірки різних комбінацій бізнес-логіки.

Основи карате : Інструмент на основі Cucumber/Gherkins, який використовується для тестування SOAP та REST сервісів.

У наступній таблиці перераховані деякі з найбільш помітних відмінностей між Rest-Assured і Karate Framework:

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

І param val2 = 'name2'

І шлях 'somelocation'

Коли метод get

Тоді відповідь на збіг містить 'OK'

given().

param("val1", "name1").

param("val2", "name2").

when().

get("/some\location").

then().

body(containsString("OK"));

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

Інструменти, необхідні для роботи з фреймворком карате

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

#1) Затемнення

Eclipse - це інтегроване середовище розробки, що використовується в галузі комп'ютерного програмування. Здебільшого воно використовується для програмування на Java. Як згадувалося раніше, Karate написано на Java, тому зрозуміло, чому Eclipse є основним IDE для тестування програмного забезпечення API. Інша причина полягає в тому, що це інструмент з відкритим вихідним кодом, і це досить вагома причина, щоб вибрати цей інструмент.

Зауважте: Ми навіть можемо використовувати IntelliJ, Visual Studio та інші різні редактори, доступні на ринку.

#2) Мейвен

Це інструмент автоматизації збірки, який використовується переважно для створення проектів на 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 є альтернативою Maven і може використовуватися з однаковим успіхом. Вони мають свої подібності та відмінності, але можуть бути однаково використані для створення середовища для наших кодексів карате.

Він простіший у використанні, гнучкіший, і його рекомендується використовувати, коли наш додаток має певні вимоги до модуляризації та управління купою плагінів. Код налаштування 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, кроки не вимагають чіткого визначення в Карате, що, в свою чергу, підвищує гнучкість і простоту операцій. Нам не потрібно додавати додатковий клей, який зазвичай доводиться додавати, коли ми дотримуємося фреймворку Cucumber.

Клас "Бігун" у більшості випадків називається TestRunner.java.

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

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

І говорячи про .feature містить всі тестові сценарії, які необхідно протестувати, щоб переконатися, що API працює відповідно до очікуваних вимог.

Загальний файл *.feature виглядає приблизно так, як показано нижче:

 Функція: отримання інформації про користувача Сценарій: тестування виклику get для отримання інформації про користувача Дано url '//reqres.in/api/users/2' When метод GET Then статус 200 

Створення першого базового тестового сценарію карате

Цей розділ допоможе вам розпочати створення вашого першого тестового скрипта, який буде корисним для перетворення API у вигляді фреймворку Karate.

Перш ніж ми напишемо основні тестові скрипти Karate, будь ласка, встановіть на вашому комп'ютері наступні реквізити:

  • Eclipse IDE
  • Maven. Встановити відповідний шлях до Maven.
  • JDK & JRE. Встановіть відповідний шлях.

Давайте подивимося на покроковий підхід:

#1) Створіть новий MAVEN Проект у редакторі Eclipse

  • Відкрите затемнення
  • Клацніть на Файл, виберіть Новий проект.

  • Виберіть проект Maven

  • Виберіть місце розташування Робочої області.
  • Виберіть Архетип (зазвичай ми обираємо " Мейвен-архетип-швидкий старт 1.1 " для простих проектів Maven).
  • Вкажіть ідентифікатор групи та ідентифікатор артефакту (у нашому прикладі ми використовували такі значення).
    • Ідентифікатор групи : Карате
    • Ідентифікатор артефакту: KarateTestScriptsSample
  • Натисніть Готово, щоб завершити налаштування.

#2) Після створення ви зможете побачити наступну структуру у вікні Провідника проектів.

#3) Включіть всіх своїх утриманців.

Нашим першим кроком після налаштування буде включити всі залежності Ми збережемо всі теги у файлі POM.xml (припускаючи, що ви вже знаєте про використання POM.xml).

  • Відкрийте POM.xml, скопіюйте наведений нижче код під тегом залежності та збережіть файл.
 com.intuit.karate karate-apache 0.9.5 test com.intuit.karate karate-junit4 0.9.5 test 

Джерело тут.

#4) Давайте проведемо мозковий штурм, що ми будемо тестувати в цьому тестовому сценарії з основ карате.

Сценарій:

Ми будемо тестувати API з цією URL-адресою.

Шлях: api/users/2

Метод: GET

І нам потрібно підтвердити чи повертає запит Код успіху (200) чи ні.

Простіше кажучи, ми просто протестуємо зразок API, щоб побачити, чи успішно він виконується.

Зауважте: Ми беремо зразок API, який доступний для тестування. Ви можете вибрати будь-який PATH або послатися на свій API.

Джерело тут.

#5) Тепер нашим наступним кроком буде створення .feature файл.

Як зазначалося у вступі, у розділі "Вступ .feature файл це властивість, успадкована від Cucumber. У цьому файлі ми випишемо тестові сценарії, які потрібно виконати для проведення тестування API.

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

  • Клацніть на ньому правою кнопкою миші і створіть новий файл - userDetails.feature. Потім натисніть кнопку "Готово".

Тепер ви побачите наступний файл у папці src/test/java

У "The Значок зеленого кольору нагадує .feature fi le в Cucumber, який ми щойно створили.

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

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

Напишіть наступний рядок коду у файлі userDetails.feature, який ми створили на кроці #5:

 Функція: отримання інформації про користувача Сценарій: тестування виклику get для отримання інформації про користувача Дано url '//reqres.in/api/users/2' When метод GET Then статус 200 

Спробуємо розібратися з компонентами, які записані у вищенаведеному файлі:

  • Особливість: Ключове слово пояснює назву функції, яку ми тестуємо.
  • Передісторія: Це необов'язковий розділ, який розглядається як розділ Pre-requisite. Він може бути використаний для визначення того, що потрібно для тестування API. Він містить HEADER, URL & PARAM варіанти.
  • Сценарій: Кожен файл функцій, який ви побачите, матиме принаймні одну функцію (хоча він може надавати множинний Це опис тестового кейсу.
  • Зрозуміло: Це крок, який необхідно виконати перед виконанням будь-якого іншого кроку тесту. Це обов'язкова дія, яку необхідно виконати.
  • Коли: Він визначає умову, яка повинна бути виконана для виконання наступного кроку тесту.
  • Тоді: Він говорить нам про те, що повинно статися, якщо умова, згадана в Коли задоволений.

Зауважте: Всі вищезгадані ключові слова належать до мови Gherkins. Це стандартний спосіб написання тестових скриптів за допомогою Cucumber.

І ще кілька слів, що використовуються у файлі функцій:

  • 200: Це код статусу/відповіді, який ми очікуємо (список кодів статусів можна знайти тут)
  • ВЗЯТИ: Це метод API, такий як POST, PUT тощо.

Сподіваємося, це пояснення було для вас зрозумілим. Тепер ви зможете зрозуміти, що саме написано у вищезгаданому файлі.

Тепер нам потрібно створити файл TestRunner.java

Як пояснювалося у попередньому розділі, Cucumber потребує файлу Runner, який буде потрібен для виконання .feature файл, який містить сценарії тестування.

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

  • Клацніть правою кнопкою миші на ньому і створіть новий Java-файл: TestRunner.java
  • Після того, як файл створено, розмістіть під ним наступні рядки коду:
 import org.junit.runner.RunWith; import com.intuit.karate.junit4.Karate; @RunWith(Karate.class) public class TestRunner { } 
  • Виконавець тесту - це файл, який буде запущено для виконання бажаного сценарію, написаного на кроці #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>>;

Прокрутити до початку