rest api testing with cucumber using bdd approach
Цей посібник пояснює тестування API REST на огірках із використанням підходу BDD. Він охоплює встановлення програмного забезпечення, налаштування проекту, виконання TestScript та звіти.
У цій статті ми побачимо, як розпочати тестування REST API у стилі BDD із фреймворком Cucumber.
Перш ніж глибоко заглибитися в тему, давайте зрозуміємо важливі поняття, що в ній беруть участь.
Давайте розпочнемо!!
Що ви дізнаєтесь:
- Важливі поняття в REST API
- Як працює огірок?
- Налаштування програми тестування огірків у Windows
- Висновок
- Рекомендована література
Важливі поняття в REST API
Відпочинок
Це програмний архітектурний стиль. Повна форма REST - це представницький державний трансфер . Він визначає набір обмежень, які слід використовувати для створення веб-служб. Веб-служби, які відповідають архітектурному стилю REST, називаються RESTful веб-службами.
REST API Тестування
Тестування REST API - це тестування API з використанням 4 основних методів, тобто POST, GET, PUT та DELETE.
Відпочинок шаблон
RestTemplate - це фреймворк-клас із відкритим кодом, який забезпечує зручний спосіб перевірки спокійних веб-служб на основі HTTP, надаючи перевантажені методи для методів HTTP.
Примітка : Щоб дізнатись більше про концепцію тестування REST API, ви можете звернутися до нашого попереднього підручника „ Тестування REST API за допомогою Spring RestTemplate та TestNG ', Де ми розглянули, як виконувати тестування REST API вручну разом із концепцією JSON.
BDD
BDD - це підхід, який керується поведінкою. Це один із методів розробки програмного забезпечення, який з’явився в результаті тестової розробки, тобто стилю TDD.
Принцип тестування BDD полягає в тому, що тестові кейси написані природною мовою, яка легко читається і непрограмістами.
Огірок
Огірок - це інструмент, який підтримує розвиток, спричинений поведінкою
Як працює огірок?
Подивимось, як працює Огірок.
Огірок складається з Feature Files, Step Definition Files та класу Runner.
Файли функцій
Файли функцій пише Ваш бізнес-аналітик або, можливо, ваш спонсор. Вони написані у форматі натуральної мови з описаними специфікаціями та підтверджують, що функції програми відповідають специфікаціям.
Ці специфікації містять кілька сценаріїв або прикладів, згаданих у них. Кожен сценарій - це перелік певних кроків для огірка.
Давайте розглянемо сценарій, коли користувач хоче увійти в систему.
Щоб перевірити, чи це працює відповідно до специфікацій, потрібно описати цей сценарій. Ось кроки, які слід виконати разом із бажаним результатом відповідно до специфікацій.
Щоб отримати уявлення, ось як виглядатиме зразковий сценарій:
Scenario: Login to the system Given User launches Login screen When User enters username, password and submit Then Login Successful message appears
Як бачите, кожен сценарій - це своєрідний перелік кроків для огірка. Щоб Огірок розумів сценарії, вони повинні дотримуватися деяких основних правил синтаксису, які називаються Корнішон .
Файли визначення кроку
Файли визначень кроків відображають кожен крок огірка, згаданий у файлі Feature, до коду реалізації. Це дозволяє Огірку виконати дію, яку потрібно виконати кроком.
Огірковий фреймворк підтримує багато мов програмування для написання таких етапів, як Java, .net та Ruby.
Примітка : У статті « Тестування REST API за допомогою Spring RestTemplate та TestNG ', Ми розробили тестовий проект TestNG із шаблоном Spring.
Тепер ми розробимо тестову структуру для тієї самої служби REST та RestTemplate, але за допомогою Cucumber для стилю тестування на основі поведінки.
Почнемо з налаштування нашої системи тестування автоматизації з Огірком!
Налаштування програми тестування огірків у Windows
# 1) Встановлення
(i) Ми збираємось використовувати Java для розробки кроків. Отже, спочатку завантажте інсталятор JDK для Windows з Oracle та встановіть Java на свою машину.
(ii) IDE (інтегроване середовище розвитку) : Я використовував Eclipse як IDE для розробки програми автоматизації тесту. Ви можете завантажити його з Затьмарення
(iii) Отримати плагін Eclipse для огірка:
Виконайте ці кроки в Eclipse:
- Виберіть Довідка -> Встановити нове програмне забезпечення в меню.
- Введіть ‘Огіркове затемнення’ у текстовому полі пошуку.
- Клацніть на Встановити кнопку.
Огіркова плагінова установка в Eclipse
- Продовжуйте натискати кнопку Далі, поки не дійдете до Перегляньте ліцензію екран.
Нарешті, натисніть прапорець, щоб прийняти Ліцензійну угоду, і натисніть на Готово кнопку. Це завершить установку. Тепер перезапустіть IDE Eclipse. Це потрібно, щоб набути чинності встановлення плагіна.
(iv) Весняні банки: Оскільки ми збираємось використовувати клас RestTemplate, який належить до фреймворку, вам потрібно мати банки для фреймворку. Ви можете завантажити весняні банки з Весняні рамки і збережіть його в локальній папці. Наприклад, C: / projectJar
(v) JSON-прості банки: Нам потрібно виконати синтаксичний аналіз JSON. Отже, ми будемо використовувати легкий JSON-простий API. Отже, завантажте JSON-simple-1.1.jar і збережіть його в C: / projectJar
(vi) Банки з огірками:
Для запуску проекту «Огірок» вам знадобляться такі баночки з огірком:
- огірок-серцевина
- огірок-ява
- огірок-JUnit
- огірок-JVM-деп
- огірок-звітність
- корнішони
- JUnit
- mockito-all
- охоплення
- огірок-HTML (Для звітів у html)
Ви можете завантажити ці файли за допомогою файлу pom.xml. Але найпростіший спосіб - завантажити ці jar-файли з Центральне сховище і збережіть ці файли jar до локальної папки, Наприклад, C: / projectJar
Тепер цим ми завершили всі необхідні установки. Отже, давайте створимо наш проект автоматизації тестування BDD.
найкращий сервер wow для нових гравців 2017 року
# 2) Налаштування проекту
- Створити файл -> Новий -> Проект Java -> Назвіть його як « CRUD_Огірок ’.
- Тепер створіть новий пакет Java демо.
- Налаштуйте BuildPath проекту:
- Як ви бачили в попередньому розділі, ми встановили плагін Cucumber, завантажили Spring і JSON-прості банки. Отже, настав час додати шлях побудови в наш проект, щоб споживати їх. Для цього створіть lib папку в CRUD_Cucumber ’ а тепер скопіюйте всі банки з C: / projectJar в lib / огірок, lib / весна папку.
- Клацніть правою кнопкою миші на CRUD_Огірок ' -> Шлях побудови -> Налаштуйте Шлях побудови.
- Клацніть на Бібліотеки вкладку.
- Натисніть на Додайте банки кнопка-> Виберіть усі баночки з lib / огірок папку та lib / Весна папку. Це додасть усі банки з огірками, весняні банки та JSON-просту банку до шляху створення вашого проекту.
Структура вашого проекту відображатиметься в Провіднику пакетів Eclipse наступним чином.
Структура пакету тестового проекту
# 3) Файл функцій
Тепер давайте створимо наш файл функцій DemoFeature.feature що має функцію Виконання CRUD-операцій у службі працівника.
У нашому прикладі я використав одну фіктивну службу http://dummy.restapiexample.com/api REST.
аніме веб-сайти дивитись аніме безкоштовно
Цей файл функцій описує сценарії виконання операцій CRUD, тобто покриття CRUD (Створення-Читання-Оновлення-Видалення).
- Спершу визначимо функцію, у нашому випадку це тестування методів CRUD, які можна описати наступним чином.
Feature: Test CRUD methods in Sample Employee REST API testing
- Зараз це має різні сценарії, такі як створення, оновлення, читання та видалення запису працівника. Тож подивіться на сценарій POST:
Scenario: Add Employee record
- Опишіть передумову для тесту, який встановлює URL-адресу служби співробітників.
Given I Set POST employee service api endpoint
- Вкажіть фактичний крок тестування надсилання запиту на публікацію.
When I Set request HEADER And Send a POST HTTP request
- Тепер опишіть перевірку органу реагування.
Then I receive valid Response
Отже, у нашому файлі функцій Сценарій буде виглядати наступним чином:
Scenario: Add Employee record Given I Set POST employee service api endpoint When I Set request HEADER And Send a POST HTTP request Then I receive valid Response
Аналогічним чином ви можете написати інші сценарії, як показано нижче.
DemoFeature.feature
# 4) Етапи Визначення Визначення
Для кроків функцій, що використовуються у вищезазначених сценаріях, вам потрібно написати програмні реалізації, в даному випадку це Java.
Визначення кроку - це метод, написаний на Java, що має вираз. Він пов'язує свій метод з одним або декількома кроками. Отже, коли Огірок виконує кроки, описані у сценарії файлу функції, він спочатку шукає відповідність визначення кроку виконати.
Наприклад, коли визначення кроку для Додавання працівника за допомогою POST можна записати наступним чином.
Для даного кроку реалізація записується наступним чином:
@Given('^I Set POST employee service api endpoint$') public void setPostEndpoint(){ addURI = 'http://dummy.restapiexample.com/api/v1/create'; System.out.println('Add URL :'+addURI); }
Аналогічно, для кроку When наступним є метод визначення:
@When ('^Send a POST HTTP request$') public void sendPostRequest(){ doublename_id = Math.random(); emp_name = 'zozo_'+name_id;//Just to avoid Duplicate Name entry String jsonBody'{'name':''+emp_name+'','salary':'123','age':'23'}'; System.out.println('
' + jsonBody); HttpEntityentity = new HttpEntity(jsonBody, headers); //POST Method to Add New Employee restTemplate = newRestTemplate (); response = restTemplate.postForEntity(addURI, entity, String.class); }
Тепер ось частина кроку перевірки, тобто реалізація кроку Then:
@Then ('^I receive valid Response$') Public void verifyPostResponse(){ responseBodyPOST = response.getBody(); // Write response to file responseBody = response.getBody().toString(); System.out.println('responseBody --->' + responseBody); // Get ID from the Response object employeeId = getEmpIdFromResponse(responseBody); System.out.println('empId is :' + employeeId); // Check if the added Employee is present in the response body. Assert.hasText(responseBody,employeeId); // Check if the status code is 201 Assert.isTrue(response.getStatusCode()==HttpStatus.OK); System.out.println('Employee is Added successfully employeeId:'+employeeId); }
Примітка: Тут ми використовуємо метод RestTemplate для надсилання запиту. Це те саме, що метод, що використовується в Тестування REST API за допомогою Spring RestTemplate та TestNG ' . Щоб дізнатися більше про методи шаблону відпочинку, ви можете звернутися до навчального посібника.
Таким чином, ваше визначення кроку буде виглядати наступним чином.
StepDefinition.java
Ви можете застосувати визначення кроків для інших сценаріїв Оновлення, читання та видалення працівника таким же чином.
# 5) Запуск тестів
Тепер ми завершили завдання з розробки сценарію та покрокового сценарію, тож давайте запустимо наші тести. Для цього нам потрібно написати клас бігуна JUnit.
publicclassRunner { }
Тут вам потрібно додати наступні анотації над назвою класу:
@RunWith (Cucumber.class): Для запуску в якості тестового класу бігунів для Огірка.
@CucumberOptions: Тут ви вказуєте розташування файлу функцій та розташування файлу визначення кроку для фреймворку Cucumber, який слід переглянути під час виконання.
features='' glue=''
Підключати: Це використовується для визначення різних варіантів форматування звіту, який генерується як вихідний результат.
Отже, ваш клас бігунів буде виглядати так.
TestRunner.java
Просто клацніть правою кнопкою миші TestRunner.java і виберіть опцію « Запустити як тест JUnit ’ . Це відобразить результат виконання тесту наступним чином.
Вихід вкладки Junit
Ви побачите наступні повідомлення на консолі.
Вихід консолі
# 6) Звіти
Результат ми бачили на консолі. Однак, Огірок надає результати тестів у більш презентабельному форматі HTML, яким можна поділитися з зацікавленими сторонами.
відчинено ціль -> огірок-звіти у браузері.
Примітка : Пам'ятаєте Junit runner class CucucmberOptions?
@CucumberOptions (features='Features',glue={'demo'},plugin={'pretty', 'html:target/cucumber-reports'})
Тут плагін - це параметр, який ми вказуємо для звітів у форматі HTML разом із папкою.
target/cucumber-reports
Тепер відкрийте сторінку target cucumber-reports index.html. Сторінка звіту - це HTML-сторінка, де ви можете побачити назву функції зі сценаріями, які успішно виконані.
Отже, ваш звіт буде виглядати наступним чином.
Результат тесту CucumberTest у форматі HTML
Висновок
На завершення цього підручника давайте підсумуємо те, що ми дізналися до цього часу.
Ми бачили всі кроки з самого початку для налаштування BDD Cucumber REST API Test Automation Framework.
У цьому процесі ми дізналися наступне:
- Для автоматизації тестів ми вибрали Java як мову програмування.
- Ми вибрали Огірок в якості тестової основи для створення набору тестів у тестовому способі, що керується поведінкою.
- Для надсилання фактичних запитів HTTP на сервер ми використовували клас Spring Frame RestTemplate.
- Для споживання цих API ми встановили плагін Cucumber, завантажили файли jar-залежностей Cucumber, Spring jar та JSON-простий jar для API-аналізатора.
- Ми створили файл Feature для опису сценаріїв простою англійською мовою, файл Definition Step для відображення Steps та клас JUnit Runner для запуску файлу Feature.
- Нарешті, ми виконали клас Test Runner і побачили результат на консолі у більш презентабельному та читабельному форматі HTML.
Коротше, у цій статті описано, як розпочати роботу з автоматизацією тесту REST API з огірком. Ми розглянули налаштування нашої системи автоматизації тестів безпосередньо від встановлення всього необхідного програмного забезпечення, налаштування проекту, розробки TestScript до виконання тесту та перегляду згенерованих звітів.
Цього достатньо для будь-якого контролю якості автоматизації, щоб розпочати роботу з тестовою структурою автоматизації. Але якщо хтось хоче детально зрозуміти, як функціонує Огірок внутрішньо, як працює мова огірків, то це можна дослідити на Огірок.
Сподіваюся, ви готові розпочати тестування REST API у стилі BDD з огірком !!
Рекомендована література
- 10 найкращих засобів тестування API у 2021 році (SOAP та REST API)
- Найкращі засоби тестування програмного забезпечення 2021 р. (Інструменти автоматизації тестування якості)
- Тестування REST API за допомогою Spring RestTemplate та TestNG
- Завантажити тестувальник електронної книги
- 20 найважливіших запитань та відповідей на тестування API
- Тестування SaaS: виклики, інструменти та підхід до тестування
- Спрощення тестування API за допомогою Katalon Studio
- Тестування автоматизації за допомогою інструменту огірок та селен - Підручник No30