See õpetus on sissejuhatus API testimisse, kasutades Karate raamistikku. Tutvuge Karate testiskripti struktuuriga ja esimese testiskripti koostamise sammudega:

API on akronüüm, mis tähendab rakendusprogrammeerimisliidest. Lihtsustatult võib seda määratleda kui tarkvara vahendajat, mis võimaldab rakenduste vahelist suhtlust.

Me vajame API testimist, sest:

  • Tulemused avaldatakse kiiremini, seega ei pea enam ootama, et näha, kas API töötab hästi.
  • Tänu kiiremale reageerimisele muutub ka nende APIde kasutuselevõtt kiiremaks, mis võimaldab seega kiiret valmimisaega.
  • Varajane vea tuvastamine, isegi enne rakenduse kasutajaliidese loomist, võimaldab meil riske vähendada ja vigu parandada.
  • Suuremahuline tarnimine võimalik lühema aja jooksul.

Selleks, et töötada API testimisega, on meil turul saadaval erinevad tööriistad nagu Postman, Mocha ja Chai. Need on näidanud häid tulemusi ja tõhusat kasutamist API-de testimiseks, kuid need on tugevalt koodist mõjutatud. Nende kasutamiseks peab olema tehniliselt tugev ja tundma programmeerimiskeeli.

Karate Framework lahendab selle probleemi oma eelnevate tarkvaravahendite puhul suurepäraselt.

Mis on karate raamistik

Karate? Räägime karate'st. Kas see on see Jaapanist pärit? Mis te arvate? Võib olla, et suur Bruce Lee oli selle oma vabal ajal välja töötanud.

Kuigi me tahaksime süveneda karate huvitavatesse juurtesse, räägime esialgu hoopis Karate tööriist mis on välja töötatud Peter Thomas , üks suurepärastest vahenditest, mis tuleb API testijate appi.

Karate raamistik järgib programmi kirjutamisel Cucumberi stiili, mis järgib BDD lähenemist. Süntaks on lihtne mõista ka mitteprogrammeerijatele. Ja see raamistik on ainus API testimise vahend, mis on ühendanud API automatiseerimise ja jõudlustestimise ühte iseseisvasse vahendisse.

See annab kasutajatele võimaluse täita testjuhtumeid paralleelselt ja teostada JSON & amp; XML kontrolle.

Selle teabe põhjal saab järeldada teatud põhipunkte, et mõista üksikasjalikumalt karatevahendit:

  • Karate on TDD asemel BDD testimisraamistik.
  • See funktsioon on loodud nii, et see oleks lihtne ka mitteprogrammeerijatele. See funktsioon muudab mängu, sest võimaldab rohkem kasutamist ja juurdepääsu paljudele inimestele, sõltumata nende tehnilisest taustast või võimekusest.
  • See kasutab testi kirjutamiseks Cucumberi funktsioonifaili ja Gherkins'i keelt, mis on väga lihtne mõista.

Kõik need funktsioonid teevad sellest ühe soodsaima automatiseerimisvahendi, mis on tänapäeval saadaval.

Karate ajalugu Raamistik

Loodud ' Peter Thomas' 2017. aastal, selle tarkvara eesmärk on teha testimisfunktsioonid kõigile kergesti kättesaadavaks. See on kirjutatud Java keeles ja enamik inimesi eeldas, et ka selle failid on samas keeles, kuid õnneks see nii ei ole.

Pigem kasutab see Gherkins-faile, mis tuleneb selle seosest Cucumberi raamistikuga. Automaatikatarkvara on Cucumberi laiendus, seega pärib Gherkins-faili kasutamise oma töös. Suur erinevus nende kahe vahel on see, et Karate ei kasuta testimisel Java't, Cucumber aga küll.

See on just see põhjus, miks see sobib ka mitteprogrammeerijatele, kuna Gherkins'i süntaks on väga loetav ja põhjalik. See on põhjus, miks Karate on kõige sobivam ja soovitatav automatiseeritud API testimise maailma sisenemiseks.

Järgnevalt on esitatud mõned Karate Testing Frameworki funktsioonid:

  • Kasutab lihtsasti mõistetavat kurkitsakeelt.
  • See ei nõua tehnilisi programmeerimisalaseid teadmisi nagu Java.
  • See põhineb populaarsetel Cucumber standarditel.
  • Lihtne luua raamistik.
  • Paralleelne testimine on põhifunktsionaalsus, mida pakub Karate ise, seega ei pea me sõltuma Maven, Gradle jne.
  • Kasutajaliides testi silumiseks.
  • Funktsioonifaili kutsumine teisest failist.
  • Toetab andmete juhi testimist, mis on ehitatud ettevõttesiseselt, seega ei ole vaja sõltuda välistest raamistikest.
  • Sisseehitatud Native Rest Reports. Lisaks saab seda integreerida Cucumberiga, et saavutada parem UI Reports ja suurem selgus.
  • Pakub ettevõttesisest tuge erinevate testimiskeskkondade (QA, Stage, Prod, Pre-Prod) konfiguratsiooni vahetamiseks.
  • CI/CD-integratsiooni sujuv tugi, mis võib olla kasulik.
  • Võimaldab käsitleda erinevaid HTTP-kõnesid:
    • Web Socket tugi
    • SOAP päring
    • HTTP
    • Brauseri küpsiste käsitlemine
    • HTTPS
    • HTML-vormi andmed
    • XML päring

Karate Vs Rest-Assured võrdlemine

Puhkus kindlustatud : See on Java-põhine raamatukogu REST-teenuste testimiseks. See kasutab koodiridade kirjutamiseks Java keelt. See aitab testida arvukaid päringukategooriaid, mille tulemuseks on erinevate äriloogika kombinatsioonide kontrollimine.

Karate raamistik : Cucumber/Gherkins-põhine tööriist, mida kasutatakse SOAP- ja REST-teenuste testimiseks.

Järgnevas tabelis on loetletud mõned silmapaistvamad erinevused Rest-Assured & Karate Framework:

S.nr Alus Karate raamistik REST-garanteeritud
1 Keel Selles kasutatakse kurkide ja kornišonite kombinatsiooni. See kasutab Java keelt
2 Kood Suurus Tavaliselt on koodirida vähem, kuna see järgib Cucumber'i sarnast struktuuri. Koodirida on rohkem, kuna see hõlmab Java keele kasutamist.
3 Vajalikud tehnilised teadmised Mitte- programmeerijad saavad hõlpsasti kirjutada Gherkins koodi Java koodi kirjutamiseks on vajalikud tehnilised teadmised
4 Andmepõhine testimine Vajadus kasutada TestNG-d või samaväärset, et toetada sama. Andmete testimise toetamiseks saab kasutada ettevõttesiseseid märgiseid.
5 Kas see pakub SOAP-kõne toetust Jah, see annab See on seotud ainult REST päringuga
6 Paralleelne testimine Jah, paralleelset testimist on lihtne toetada ka paralleelse aruande genereerimisega. Mitte suurel määral. Kuigi inimesed on seda proovinud teha, on ebaõnnestumiste arv suurem kui õnnestumiste arv.
7 Aruandlus See pakub majasisest aruandlust, seega ei pea see sõltuma välistest pluginatest. Saame selle isegi integreerida Cucumberi aruandluspluginiga parema kasutajaliidese jaoks. Vajadus olla sõltuvuses välistest pluginatest nagu Junit, TestNG
8 CSV tugi väliste andmete jaoks Jah, alates Karate 0.9.0 Ei, tuleb kasutada Java koodi või raamatukogu
9 Veebi kasutajaliidese automatiseerimine Jah, alates Karate 0.9.5 on võimalik veebi kasutajaliidese automatiseerimine. Ei, seda ei toetata
10 Näide GET Antud parameeter val1 = 'nimi1'

Ja parameeter val2 = 'nimi2'

Ja tee 'somelocation'

Kui meetod saab

Siis sisaldab vaste 'OKAY'.

given().

param("val1", "name1").

param("val2", "name2").

when().

get("/some\location").

then().

body(containsString("OKAY"));

Seega, nagu eespool toodud erinevused näitavad, võib kindlalt väita, et karate on üks lihtsamaid asju, mida igaüks saab teha.

Karate raamistikuga töötamiseks vajalikud tööriistad

Nüüd, kui me oleme oma põhiteadmised Karate raamistiku kohta omandanud, vaatleme Karate keskkonna loomiseks vajalikke protsesse ja vahendeid.

#1) Eclipse

Eclipse on integreeritud arenduskeskkond, mida kasutatakse arvutiprogrammeerimise valdkonnas. Seda kasutatakse peamiselt Java programmeerimiseks. Nagu varem mainitud, on Karate kirjutatud Java keeles, seega on mõistlikum, miks Eclipse on API testimise tarkvara jaoks mõeldud IDE. Teine põhjus on see, et see on avatud lähtekoodiga tööriist, ja see on üsna tugev põhjus selle tööriista valimiseks.

Märkus: Me võiksime kasutada isegi IntelliJ, Visual Studio ja teisi erinevaid turul saadaolevaid redaktoreid.

#2) Maven

See on build-automaatika, mida kasutatakse peamiselt Java-projektide ehitamiseks. See on üks võimalus Karate-keskkonna loomiseks ja koodi kirjutamiseks. Eclipse'i seadistamiseks koos Maven'i nõuetega saate Maven'i paigaldamiseks klõpsata siin.

Kasutage Mavenis töötades Maven-sõltuvusi, mis aitaksid teil toetada Karate raamistikku.

Järgmisi sõltuvusi kasutatakse koos Maveniga pom.xmlis.

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

Märkus: Viimased versioonid võivad olla saadaval Maven'i repositooriumis.

#3) Gradle

Gradle on alternatiiv Mavenile ja seda saab kasutada võrdselt. Neil on oma sarnasused ja erinevused, kuid neid saab võrdselt kasutada meie Karate koodide keskkonna loomisel.

Seda on lihtsam kasutada, see on paindlik ja seda on soovitatav kasutada siis, kui meie rakendusel on mõningaid modulariseerimise ja haldamise nõudeid koos hulga pistikprogrammidega. Gradle'i seadistuskood näeks välja umbes nii,

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

Märkus: Sa võid kasutada kas MAVEN või GRADLE.

#4) Java keskkonna seadistamine teie süsteemis

Karate raamistiku skriptidega alustamiseks on vaja seadistada JDK ja JRE keskkond.

Karate testi käsikirja struktuur

Karate testiskript on tuntud selle poolest, et tal on laiendus ".feature". See omadus on päritud Cucumberilt. Samamoodi on lubatud ka failide organiseerimine Java-konventsiooni järgi. Te võite oma faile vabalt organiseerida vastavalt Java pakettide konventsioonidele.

Maven'i suunised aga juhivad, et mitte-Java failide salvestamine toimub eraldi. Need tehakse eraldi src/test/ressursid Ja Java-faile hoitakse all src/main/java .

Kuid Karate raamistiku loojate arvates on nad kindlalt veendunud, et me hoiame nii Java kui ka mitte-Java faile kõrvuti. Nende arvates on *.java ja *.feature faile palju lihtsam otsida, kui neid hoitakse koos, mitte järgida Maven'i standardset struktuuri.

Seda saab hõlpsasti teha pom.xml-i muutmisega järgmiselt (Maven'i jaoks):

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

Järgnevalt on esitatud Karate raamistiku üldine ülesehitus:

Nüüd, kuna see Karate Framework kasutab Runner faili, mida on vaja ka Cucumberis funktsioonifailide käivitamiseks, siis enamus kirjutatust järgib Cucumberi standardeid.

Kuid erinevalt Cucumberist ei nõua sammud Karates selget määratlust, mis omakorda suurendab paindlikkust ja lihtsust. Me ei pea lisama lisaliimi, mida me tavaliselt peame lisama, kui me järgime Cucumberi raamistikku.

Klass "Runner" kannab enamasti nime "Runner". TestRunner.java.

Seejärel võtab fail TestRunner.java kuju:

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

Ja rääkides .feature fail sisaldab kõiki testimisstsenaariume, mida tuleb testida, et veenduda, et API töötab vastavalt oodatud nõuetele.

Üldine *.feature fail näeb välja umbes nii nagu allpool näidatud:

 Funktsioon: kasutaja andmete hankimine Stsenaarium: kasutaja andmete hankimise kõne testimine Antud url '//reqres.in/api/users/2' Kui meetod GET Siis olek 200 

Esimese põhilise karate testi skripti loomine

See osa aitab teil alustada oma esimese testiskripti loomisega, mis aitab teil teisendada APIsid Karate raamistiku kujul.

Enne kui kirjutame põhilised Karate testiskriptid, installige oma masinasse järgmised rekvisiidid:

  • Eclipse IDE
  • Maven. Määra sobiv Maven'i tee.
  • JDK & JRE. Määrake sobiv tee.

Vaatame samm-sammult lähenemist:

#1) Loo uus MAVEN Projekt Eclipse'i redaktoris

  • Avatud Eclipse
  • Klõpsake File. Valige New Project (Uus projekt).

  • Valige Maven Project

  • Valige tööruumi asukoht.
  • Valige arhetüüp (tavaliselt valime " Maven-archetype-quickstart 1.1 " lihtsate Maven-projektide puhul).
  • Andke grupi ID &; Artefakti ID (meie näites kasutasime järgmisi väärtusi).
    • Rühma ID : Karate
    • Artefakti ID: KarateTestScriptsSample
  • Klõpsake seadistamise lõpetamiseks nuppu Finish (Lõpeta).

#2) Kui see on loodud, siis näete nüüd Project Explorer'i aknas järgmist struktuuri.

#3) Lisage kõik oma sõltuvused.

Meie kõige esimene samm, pärast seadistamist me olema lisada kõik sõltuvused mis on täitmiseks vajalikud. Hoiame kõik sildid POM.xml all (eeldades, et olete juba teadlik POM.xml kasutamisest).

  • Avage POM.xml ja kopeerige allolev kood sõltuvuse sildi alla ning salvestage fail.
 com.intuit.karate karate-apache 0.9.5 test com.intuit.karate karate-junit4 0.9.5 test 

Klõpsake siin allikas.

#4) Lase ajurünnaku stsenaarium, mida me kavatseme testida selles Karate Basic Test Script.

Stsenaarium:

Me testime selle URLi abil API-d.

Teekond: api/users/2

Meetod: GET

Ja me peame kinnitama , kas taotlus tagastab Edu kood (200) või mitte.

Lihtsamalt öeldes, me lihtsalt testime näidis API-d, et näha, kas seda täidetakse edukalt või mitte.

Märkus: Me võtame testimiseks kättesaadava API näidise. Sa võid valida mis tahes PATHi või viidata oma API-le.

Klõpsake siin allikas.

#5) Nüüd oleks meie järgmine samm luua .feature faili.

Nagu sissejuhatavas osas käsitleti, on .feature fail on omadus, mis on päritud Cucumberilt. Selles failis kirjutame välja teststsenaariumid, mida tuleb API testimise läbiviimiseks käivitada.

  • Mine kausta src/test/java teie projektis.

  • Tehke sellel paremklõps ja looge uus fail - userDetails.feature. Seejärel klõpsake nuppu Finish (Lõpeta).

Nüüd näete kausta all järgmist faili src/test/java

The Rohelist värvi ikoon sarnaneb .feature fi le Cucumberis, mille me just lõime.

  • Kui fail on loodud, kirjutame nüüd oma teststsenaariumid, mida arutatakse järgmises osas.

#6) Kuna meil on stsenaarium ja tühi . funktsioon fail valmis, alustame nüüd oma esimese skriptiga. Alustame kodeerimist

Kirjutage järgmine koodirida userDetails.feature faili alla, mille me lõime etapis #5:

 Funktsioon: kasutaja andmete hankimine Stsenaarium: kasutaja andmete hankimise kõne testimine Antud url '//reqres.in/api/users/2' Kui meetod GET Siis olek 200 

Proovime mõista komponente, mis on kirjutatud ülaltoodud failis:

  • Funktsioon: Võtmesõna selgitab testitava funktsiooni nime.
  • Taust: See on valikuline osa, mida käsitletakse kui eeltingimusi käsitlevat osa. Seda saab kasutada, et määratleda, mida kõike on vaja API testimiseks. See sisaldab HEADER, URL &; PARAM valikud.
  • Stsenaarium: Iga funktsioonifail, mida te näete, sisaldab vähemalt ühte funktsiooni (kuigi see võib anda mitu stsenaariumid). See on katsejuhtumi kirjeldus.
  • Antud: See on samm, mis tuleb sooritada enne mis tahes muu testimise sammu sooritamist. See on kohustuslik toiming, mis tuleb sooritada.
  • Millal: See määrab kindlaks tingimuse, mis peab olema täidetud, et järgmine katsesamm sooritada.
  • Siis: See ütleb meile, et mis peaks juhtuma juhul, kui tingimus mainitud Kui on rahuldatud.

Märkus: Kõik ülalnimetatud märksõnad on pärit Gherkins keelest. Need on standardne viis testiskriptide kirjutamiseks Cucumber'i abil.

Ja veel mõned funktsioonifailis kasutatud sõnad on järgmised:

  • 200: See on staatuse/vastuse kood, mida me ootame (kliki siia staatuskoodide nimekirja jaoks).
  • GET: See on API meetod nagu POST, PUT jne.

Loodame, et see selgitus oli teile kergesti arusaadav. Nüüd on teil võimalik seostada seda, mis täpselt on kirjutatud ülaltoodud failis.

Nüüd peame looma TestRunner.java faili

Nagu ülaltoodud punktis selgitatud, vajab Cucumber Runner faili, mis oleks vajalik selleks, et käivitada .feature faili, mis sisaldab testimisstsenaariume.

  • Mine kausta src/test/java teie projektis

  • Tehke sellel paremklõps ja looge uus Java fail: TestRunner.java
  • Kui fail on loodud, asetage selle alla järgmised koodiread:
 import org.junit.runner.RunWith; import com.intuit.karate.junit4.Karate; @RunWith(Karate.class) public class TestRunner { } 
  • Test Runner on fail, mida nüüd käivitatakse, et täita soovitud stsenaarium, mis on kirjutatud sammu #5 all.

#7) Nüüd oleme valmis mõlema failiga TestRunner.Java ja userDeatils.feature. Ainus ülesanne, mis meile jääb, on Käivita käsikiri.

  • Minge faili TestRunner.java juurde ja tehke failil paremklõps, nagu on näidatud alloleval pildil.

  • Vali Run As -> Junit Test
  • Nüüd, kui see on valitud, hakkate täheldama, et testjuhtum on nüüd käivitunud.
  • Oodake, kuni testskript käivitub. Kui see on tehtud, näete oma aknas midagi sellist, nagu on näidatud alloleval pildil.

  • Lõpuks võime öelda, et oleme edukalt loonud oma esimese põhilise Testskript kasutades Karate raamistik.

#8) Lõpuks annab Karate raamistik ka HTML-aruande esitluse teostatud täitmise kohta.

  • Mine sihtkausta -> surefire-reports-> Siin näete oma HTML-aruannet, mida saate avada.

** Soovitame teil avada sama veebilehe ka Chrome'i brauseriga, et see oleks parem.

  • Teile kuvatakse järgmine HTML-aruanne, mis kujutab järgmist Stsenaariumid & Test mis on teostatud nimetatud stsenaariumi puhul:

Kokkuvõte

Selles õpetuses oleme arutanud API testimist, erinevaid turul saadaolevaid testimisvahendeid ja seda, kuidas Karate Framework on parem valik võrreldes oma kolleegidega.

Järgisime samm-sammult lähenemisviisi, et luua oma esimene põhiline testiskript. Alustasime põhilise Maven projekt Eclipse IDE-s luua .feature-faili, mis sisaldab kogu testimisstsenaariumi ja Runner-faili .feature-failis mainitud testjuhtumi täitmiseks.

Mitme etapi lõpus näeme testi tulemuste täitmise aruannet.

Loodame, et see õpetus oli algajatele kasulik, et õppida, kuidas luua oma esimene testiskript, kasutades Karate raamistikku ja teostada API testimist. See üksikasjalik samm-sammult lähenemine on suurepärane võimalus käivitada ja teostada erinevaid teste API-l.

Järgmine>>

Keri üles