rest api testing with cucumber using bdd approach
Този урок обяснява REST API тестване с краставица, използвайки BDD подход. Той обхваща инсталирането на софтуер, настройката на проекта, изпълнението на TestScript и отчетите.
В тази статия ще видим как да започнем с REST API Тестване в BDD стил с рамката Cucumber.
Преди да се потопим дълбоко в темата, нека разберем важните понятия, включени в нея.
Да започваме!!
Какво ще научите:
- Важни понятия в REST API
- Как работи краставицата?
- Настройване на рамка за тестване на краставици в Windows
- Заключение
- Препоръчително четене
Важни понятия в REST API
ПОЧИВКА
Това е софтуерен архитектурен стил. Пълната форма на REST е Представителен държавен трансфер . Той определя набор от ограничения, които да се използват за създаване на уеб услуги. Уеб услугите, които съответстват на архитектурния стил REST, се наричат RESTful уеб услуги.
REST API Тестване
Тестването на REST API е тестване на API с помощта на 4 основни метода, т.е. POST, GET, PUT и DELETE.
REST Шаблон
RestTemplate е пролетен клас с отворен код, който предоставя удобен начин за тестване на HTTP базирани успокояващи уеб услуги, като предоставя претоварени методи за HTTP методите.
Забележка : За да научите повече за концепцията за REST API тестване, можете да се обърнете към нашия по-ранен урок „ REST API Тестване с Spring RestTemplate и TestNG ’, Където разгледахме как да извършим REST API Testing ръчно заедно с концепцията за JSON.
BDD
BDD е подходът, основан на поведенческо развитие. Това е една от техниките за разработка на софтуер, която се появява в рамките на тестваното развитие, т.е. TDD стил.
Принципът на BDD тестването е, че тестовите случаи са написани на естествен език, който е лесно четим и от непрограмистите.
Краставица
Краставицата е инструмент, който подпомага развитието, ръководено от поведението
Как работи краставицата?
Нека да видим как работи краставицата.
Краставицата се състои от файлове с функции, файлове с дефиниция на стъпки и клас Runner.
Файлове с функции
Файловете с функции са написани от вашия бизнес анализатор или може би вашият спонсор. Те са написани на естествен език, като са описани спецификации и потвърждават, че функциите на приложението са според спецификациите.
Тези спецификации имат множество сценарии или примери, споменати в него. Всеки сценарий е списък на определени стъпки, за които Краставицата да работи.
Нека разгледаме сценарий, при който потребителят иска да влезе в системата.
За да се провери дали това работи според спецификациите, този сценарий трябва да бъде описан. Ето стъпките, които трябва да се извършат заедно с желания резултат според спецификациите.
Само за да добиете представа, ето как ще изглежда примерен сценарий:
Scenario: Login to the system Given User launches Login screen When User enters username, password and submit Then Login Successful message appears
Можете да видите, всеки сценарий е един вид списък на стъпките, за да работи Краставицата. За да може Краставицата да разбере сценариите, те трябва да следват някои основни правила за синтаксис, наречени Корнишон .
Файлове за дефиниция на стъпки
Файловете с дефиниции на стъпки съпоставят всяка стъпка от корнишони, спомената във файл с функции, към кода за изпълнение. Това позволява на Краставицата да изпълни действието, което се изисква да бъде изпълнено от стъпката.
Рамката за краставици поддържа много езици за програмиране за писане на дефиниции на стъпки като 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 за разработката на Automation Test Suite. Можете да го изтеглите от Затъмнение
(iii) Вземете приставката Eclipse за краставица:
Следвайте тези стъпки в Eclipse:
- Изберете Помощ -> Инсталиране на нов софтуер от опцията на менюто.
- Въведете ‘Краставично затъмнение’ в текстовото поле за търсене.
- Щракнете върху Инсталирай бутон.
Приставка за краставици в Eclipse
- Продължавайте да щраквате върху бутона Напред, докато стигнете до Преглед на лиценза екран.
И накрая, щракнете върху квадратчето, за да приемете лицензионното споразумение, и щракнете върху завършек бутон. Това ще завърши инсталацията. Сега рестартирайте Eclipse IDE. Това е необходимо, за да влезе в сила инсталацията на приставката.
(iv) Пролетни буркани: Тъй като ще използваме клас RestTemplate, който принадлежи към пролетната рамка, трябва да имате пролетни рамки. Можете да изтеглите пролетни буркани от Пролетна рамка и го запазете в локалната папка. Например, C: / projectJar
(v) JSON-прости буркани: Трябва да извършим JSON парсинг. Следователно ще използваме лек JSON-прост API. И така, изтеглете JSON-simple-1.1.jar и го запазете в C: / projectJar
(vi) Буркани с краставици:
За да стартирате проекта за краставици, ще ви трябват следните буркани с краставици:
- краставица-сърцевина
- краставица-ява
- краставица-JUnit
- краставица-JVM-deps
- краставица-отчитане
- корнишон
- JUnit
- mockito-all
- покритие
- краставица-HTML (За отчети в html)
Можете да изтеглите тези файлове с помощта на файл pom.xml. Но най-простият начин е да изтеглите тези jar файлове от Централно хранилище и запишете тези файлове в локалната папка, Например, C: / projectJar
Сега с това завършихме всички необходими инсталации. И така, нека създадем нашия проект за автоматизация на BDD тестове.
# 2) Настройка на проекта
- Създаване на файл -> Нов -> Проект Java -> Именувайте го като ‘ CRUD_Cucumber ’.
- Сега, Създайте нов Java пакет демонстрация.
- Конфигурирайте BuildPath на проекта:
- Както видяхте в по-ранния раздел, ние инсталирахме приставка Cucumber, изтеглихме пролетта и JSON прости буркани. И така, време е да добавим път за изграждане в нашия проект, за да ги консумираме. За това създайте a lib папка в CRUD_Cucumber ’папка и сега копирайте всички буркани от C: / projectJar в lib / Краставица, lib / Пролет папка.
- Щракнете с десния бутон върху „ CRUD_Cucumber ’ -> Път за изграждане -> Конфигуриране на Път за изграждане.
- Щракнете върху Библиотеки раздел.
- Кликнете върху Добавете буркани бутон-> Изберете всички буркани от lib / Краставица папка и lib / Пролет папка. Това ще добави всички буркани с краставици, пролетни буркани и JSON-прост буркан към пътя на изграждане на вашия проект.
Структурата на вашия проект ще бъде показана по следния начин в Eclipse Package Explorer.
Структура на пакета на тестовия проект
# 3) Файл на характеристиките
Сега нека изградим нашия файл с функции DemoFeature.feature притежаващ функцията като Извършване на CRUD операции в услуга на служители.
В нашия пример използвах един манекен http://dummy.restapiexample.com/api примерна REST услуга.
Този функционален файл описва сценариите за извършване на CRUD операции, т.е.за покриване на CRUD (Създаване-Четене-Актуализиране-Изтриване).
- Нека първо определим Feature, в нашия случай това е Тестване на 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
как да играя mkv файл на windows
# 4) Прилагане на дефиниция на стъпки
За стъпките на характеристиките, използвани в горните сценарии, трябва да напишете програмни реализации, в този случай това е Java.
Определението на стъпка е метод, написан на Java с израз. Той свързва своя метод с една или няколко стъпки. Така че, когато Cucumber изпълнява стъпките, описани в сценарий на файла с характеристиките, той първо търси съвпадение дефиниция на стъпка да изпълни.
Например, когато дефиницията на стъпка за Добавяне на служител с помощта на 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 ('^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 ' . За да научите повече за методите Rest Template, можете да се обърнете към урока.
По този начин дефиницията на вашата стъпка ще изглежда по следния начин.
StepDefinition.java
Можете да приложите дефинициите на стъпките за останалите сценарии Актуализиране, четене и изтриване на служител по същия начин.
# 5) Изпълнение на тестовете
Сега приключихме нашата задача за разработване на сценарий и стъпка, така че нека стартираме тестовете си. За това трябва да напишем клас JUnit runner.
publicclassRunner { }
Тук трябва да добавите следните пояснения над името на класа:
@RunWith (Cucumber.class): За да стартирате като пробен клас на бегач за Краставица.
@CucumberOptions: Тук указвате местоположението на файла с функции и местоположението на файла с дефиниция на стъпка за рамката на Cucumber, която да се разгледа по време на изпълнение.
features='' glue=''
Приставка: Това се използва за определяне на различни опции за форматиране на отчета, който се генерира като изход.
Следователно вашият клас бегачи ще изглежда така.
TestRunner.java
Просто щракнете с десния бутон върху TestRunner.java и изберете опцията ‘ Изпълнете като JUnit Test “ . Това ще покаже резултата от тестовото изпълнение, както следва.
Изход на раздела 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 като език за програмиране.
- Избрахме Cucumber като тестова рамка за създаване на тестов пакет по тестовия начин Behavior Driven Development.
- За изпращане на действителни HTTP заявки към сървъра използвахме клас Spring Spring RestTemplate.
- За да консумираме тези API, направихме инсталацията на добавката Cucumber, изтеглихме файловете на jar от зависимостите на Cucumber, пролетни буркани и JSON-прост буркан за API на парсер.
- Създадохме файла Feature, за да опишем сценарии на обикновен английски, файл с дефиниция на стъпка, за да картографира стъпки и клас JUnit Runner за стартиране на файла Feature.
- Накрая изпълнихме класа Test Runner и видяхме резултата на конзолата в по-представителен и четим HTML формат.
Накратко, тази статия обяснява как да започнете с автоматизацията на REST API Test с краставица. Обхванахме настройката на нашата рамка за автоматизация на тестовете от инсталирането на целия основен софтуер, настройката на проекта, разработването на TestScript до изпълнението на теста и преглеждането на генерирани отчети.
Това е достатъчно за всяко QA за автоматизация, за да започне работа с тестовата рамка за автоматизация. Но ако някой иска да разбере подробно как функционира вътрешно Краставицата, как работи езикът Корнишон, тогава може да се изследва на Краставица.
Надявам се, че сте готови да започнете с тестването на REST API в BDD стил с краставица !!
Препоръчително четене
- 10 най-добри инструмента за тестване на API през 2021 г. (SOAP и REST API инструменти за тестване)
- Най-добри инструменти за тестване на софтуер 2021 г. (Инструменти за автоматизация на QA теста)
- REST API Тестване с Spring RestTemplate и TestNG
- Изтегляне на eBook за тестване на Primer
- Топ 20 на най-важните въпроси и отговори за интервю за API тестване
- SaaS тестване: Предизвикателства, инструменти и подход на тестване
- Улесняване на тестването на API с Katalon Studio
- Автоматизирано тестване с помощта на инструмент за краставици и селен - Урок № 30