Kasutamine SoapUI koos Selenium veebiteenuste testimiseks

⚡ Nutikas kokkuvõte

SoapUI koos Selenium võimaldab ühel komplektil kontrollida veebiteenust ja seda tarbivat brauserit. Groovy on sild, sest SoapUI jookseb Groovy pärismaiselt ja Groovy jõuab igale Java raamatukogu Selenium laevad.

  • 🔘 Kaks tööriista, kaks kihti: SoapUI teostab SOAP- või REST-lõpp-punkti, samal ajal kui Selenium WebDriver juhib brauserit, mis seda kutsub.
  • ☑️ Groovy kas liim on: SoapUI toetab Groovy ulatuslikult ja Groovy kannab tervet Java raamatukogu komplekt, seega Selenium kood töötab muutmata kujul.
  • Jooksja klass: SoapUITestCaseRunner avab projektifaili, valib testikomplekti ja testijuhtumi ning käivitab selle Java.
  • 🧪 Dünaamilised andmed: setProjectProperties() edastab väärtused, näiteks linna ja postiindeksi, käitusajal staatilisest atribuudifailist pärinevate väärtuste asemel.
  • 🛠️ Eeldused: . Groovy SDK, JDK Selenium ja SoapUI kõik tuleb enne esimest käivitamist paigaldada.
  • 📊 Tõendite rada: Iga toiming kirjutatakse installikataloogi bin-kaustas asuvasse soapui.log faili.

Kasutamine SoapUI koos Selenium veebiteenuste testimiseks läbi Groovy

SoapUI on kõige populaarsem avatud lähtekoodiga funktsionaalne testimine vahend API testimine. See pakub täielikku testi katvus ja toetab kõiki standardprotokolle ja tehnoloogiaid.

Mis on SEEP?

SOAP on lihtne XML-põhine protokoll. See võimaldab rakendustel HTTP kaudu teavet vahetada. See kasutab veebiteenuseid. Descriptioonkeel (WSDL) suhtluskeeleks ja teised rakendused saavad omavahel suhelda veebiteenused selle WSDL-liidese kaudu.

SOAP vs REST veebiteenused SoapUI

SoapUI algas SOAP-kliendina ja nimi ütleb seda siiani, aga see testib ka REST-i lõpp-punkte. See, millisele stiilile osutate, määrab testi ülesehituse.

Aspekt SOAP REST
koostract WSDL-fail kirjeldab iga toimingut, seega SoapUI saab päringuid automaatselt genereerida. Tavaliselt OpenAPI või Swaggeri definitsioon või puudub ametlik kinnitustract üldse.
Sõnumi vorming Ainult XML-ümbrik. Tavaliselt JSON, kuigi lubatud on XML ja muud vormingud.
Transport Enamasti HTTP, aga SOAP on transpordist sõltumatu. HTTP, meetodiga ja URL kavatsust kandes.
Väited SoapUI XPath ja XQuery vastavad vastuse ümbrikule. JSONPathi ja skripti väited vastavad kasulikule koormusele.
Tüüpiline kasutamine Pangandus, telekommunikatsioon ja muud teenusedtract-rasked ettevõtte integratsioonid. Avalikud ja mobiilile suunatud teenused, kus kasulik koormus on väike.

Allolev läbikäik kasutab SOAP ilmateenust, kuid sama käivitajaklass käivitab REST-testi ilma muudatusteta. Java kood.

Mis on SOAPUI?

SEEBI on avatud lähtekoodiga platvormideülene veebiteenuste testimise tööriist. SOAPUI-Pro versioonil on lisafunktsionaalsus ettevõtetele, kes tegelevad kriitiliste veebiteenustega. Veebiteenused mängivad olulist rolli internetirakendustes.

⚠️ Toote nime märkus: SmartBeari tootmine lõpetatud SoapUI Pro eraldiseisva tootena ja ühendas selle koos LoadUI Pro ja ServiceV Proga üheks tervikuks. ReadyAPITasuta väljaanne säilitab SoapUI nimi ja see on endiselt aktiivselt välja antud. Allolevad sammud toimivad mõlemas ja olemasolevas SoapUI projektid avatakse ReadyAPI.

Mis on Selenium?

Selenium ei ole üks programm, vaid tööriistade perekond, mis juhib brauserit inimese kombel. Siin on olulised kaks liiget:

  • Selenium — testimisvahend, mis automatiseerib brausereid paljudel platvormidel.
  • Selenium Veebidraiver — see teeb otsekõnesid brauseritele, kasutades iga brauseri loomulikku automatiseerimise tuge.

Miks kombineerida SoapUI ja Selenium ühes testis

Teenuse ja ekraani kontrollimine on tavaliselt kaks eraldi tööd, millega tegelevad kaks eraldi komplekti, mistõttu nendevahelise õmbluse defekt kipub mõlemat üle elama. Nende koos käitamine täidab selle tühimiku.

  • Tõesta edasi-tagasi reis. Brauseris esitatud broneering peaks teenuse vastuses ilmuma. Ainult kombineeritud test saab kinnitada mõlemat poolt.
  • Seadista kiiresti olek. Kliendi loomine API kaudu võtab sekundi; ühe kuni kaheteistkümne vormivälja loomine võtab minuti ja ebaõnnestub sagedamini.
  • Lokaliseeri rike. Kui kasutajaliides kuvab vale summa, annab sama käivitamise API väide kohe teada, kas viga on teenuses või lehel.
  • Kasutage ühte andmekogumit uuesti. Allolevas näites olevad postiindeksi ja linna paarid edastavad teenusekutset ja võivad samamoodi edastada brauseri väiteid.
  • Lõika topeltkajastus välja. Teenusekihis juba tõestatud valideerimisreeglid ei vaja iga kord aeglase brauseri testi.

Kompromiss on raskem test: kaks tööriista, kaks sõltuvuste komplekti ja pikem testimisperiood. Hoidke kombineeritud testid käputäie jaoks, mis piiri ületavad, ja jätke ülejäänu puhtaks. API või puhtad brauserikontrollid.

Selenium koos SoapUI

Lihtsaim ja lihtsaim viis integreerimiseks Selenium koos SoapUI on kasutada Groovy, Mis SoapUI toetab ulatuslikult.

Groovy on objektorienteeritud skriptimiskeel, mis sisaldab kõiki Java raamatukogud, seega iga Java märksõna ja funktsiooni saab kasutada a-s Groovy skripti otse. See töötab JVM-is (Java virtuaalmasin), mis võimaldab Groovy astu sisse SoapUI ja Java Selenium test samade klasside jagamiseks.

Eeltingimused kasutamiseks Selenium koos SoapUI

Enne mis tahes koodi kirjutamist installige järgmine:

⚠️ Versiooni märkus: Groovy 5.0 on praegune stabiilne versioon ja nõuab JDK 11 või uuemat, seega installige esmalt JDK ja laske sellel Groovy versioon järgi seda. Selenium lisatakse a-le Java projekti Mavenina või Gradle sõltuvusena, mitte allalaaditud kaustana, ja SoapUI jar peab asuma samal classpath'il kui sinu test – see üks punkt on koht, kus enamik esimesi katseid ebaõnnestub.

Helistage SoapUI Testijuhtumi käivitaja sees Selenium

Allolev kood kutsub esile a SoapUI testjuhtum. See määrab linna ja vastava postiindeksi omadused ning käivitamisel hangib iga linna ja postiindeksi väärtuse ja seejärel teatab iga mittevastava paari ebaõnnestumiste arvu. See kood töötab Selenium.

Märge: Postiindeksi ja linna salvestamiseks kasutatakse siin staatilise atribuutide faili asemel usePropertyFileFlag=true. Postiindeks ja linn edastatakse käitusajal dünaamiliselt meetodi setProjectProperties() abil.

Juhised koodi käivitamiseks:

  1. Käivitamine SoapUI.
  2. Alusta uut testijuhtumit.
  3. Lisa uus Groovy samm
  4. Kopeeri ja kleebi näidiskood etappi.
  5. Klõpsake nuppu Esita.
  6. Näete Firefox käivitamine ja sinna navigeerimine GooglePärast seda näete SoapUI logikirjed.
  7. Kood töötab, kasutades JUnit.

Code Näide

@when("<I use the weather service to get the weather information")						
    public void i_use_the_weather_service_to_get_the_information() {
        Set<Entry<String, string>> set = zipAndCities.entrySet();
        while (iterator,hasNext)) {
            Entry<String, String> entry = iterator.next();
            String zipCode = entry.getkey();
            String city = entry.getValue();
            String[] prop = {"usePropertyFileFlag=true","zipCode=" +zipCode, "city=" +city};									
            
            try{
                SoapUITestCaseRunner soapUITestCaseRunner = new	SoapUITestCaseRunner();
                soapUITestCaseRunner.setProjectFile("src/test/resources/WeatherSoapTest-soapui-project.xml");					
                soapUITestCaseRunner.setProjectProperties(prop);
                soapUITestCaseRunner.setTestSuite("TestSuite1");
                soapUITestCaseRunner.setTestCase("TestCase1");
                soapUITestCaseRunner.run();
                
            } catch (Exception e) {
                System.err.println("checking" + zipCode + " failed!");
                failureCount++;
                zipCodes.append(zipCode + " [" + city +"] ");
                e.printStackTrace();
            }finally{					
                totalCount++;
            }
}
}
}

⚠️ Code märkused: See koodijupp reprodutseeritakse täpselt avaldatud kujul ja on pigem fragment kui kompileeritav klass. Enne selle loomist peate deklareerima iteraatori, mis on saadud set.iterator(), õige samal ajal kui (iteraator, onJärgmine) et samal ajal kui (iterator.hasNext()) ja kirje.getkey() et kirje.getKey(), suurtähtedega märkus @Millal, eemaldage sammuteksti alguses olev hulkuv märk ja kasutage nöör mitte nöör deklaratsioonis Set. Algtekst säilitatakse, seega avaldatud näide jääb puutumata.

Konsoolivaade võimaldab teil heita pilgu kõigile testjuhtums käivitatakse. Leiate nimekirja postiindeksitest ja linnadest, mis on alla laaditud ja edastatud. SoapUI Testjuhtum 1.

vaade SoapUI Logifail

Logifailid salvestavad kõik operatsioonisüsteemis või tarkvararakenduses toimuvad toimingud. Nende vaatamiseks SoapUI logifaili, minge peakataloogi, kus näete faili nimega soapui.log.

SoapUI installikataloogi loend, kus soapui.log fail on nähtav

In SoapUI, asub logifail installikataloogi kaustas bin, näiteks C:\Program Files\SmartBear\soapUI-Pro-4.0.1\bin. Praeguse installi versioonikaust on erinev ja a ReadyAPI installimine kirjutab hoopis omaette prügikasti.

prügikasti kaust SoapUI installikataloog, kuhu logifail salvestatakse

Kui avate selle logifaili sellel klõpsates, näeb see välja sarnane alloleva ekraanipildiga.

soapui.log faili sisu, mis näitab logitud testikäivituse kirjeid

Kus SoapUI ja Selenium Integratsioon sageli katkeb

Peaaegu iga rike on sel hetkel pigem juhtmestiku kui testi probleem. Neid tuleks kõigepealt kontrollida.

Sümptom Tõenäoline põhjus Mida kontrollida
NoClassDefFoundError või ClassNotFoundException on sisse lülitatud SoapUITestCaseRunner . SoapUI jar-faili ei ole test classpath-is. Lisa SoapUI sõltuvus ehitusfailist või osuta klassiteel JAR-failile SoapUI lib kaust. Puuduv purk ilmub tavalise Selenium erand konsoolis.
Projektifaili ei leitud setProjectFile() lahendab töökataloogi suhtes suhtelise tee, mis erineb IDE ja ehitustööriista vahel. Käivita projekti juurest või edasta absoluutne tee.
Testikomplekti või testijuhtumit ei leitud Funktsioonides setTestSuite() ja setTestCase() olevad nimed peavad projektiga täpselt sobima. Kopeeri nimed otse tabelist välja SoapUI projektipuu; need on tõstutundlikud.
Kinnistu ei jõua kunagi päringule setProjectProperties() käivitati pärast run() või päring ei viita sellele atribuudile. Määrake iga omadus enne funktsiooni run() ja kasutage päringu sees omaduse kohatäite süntaksit.
Brauser ei käivitu Draiver ja installitud brauser on erinevatest põhiversioonidest. Laskma Selenium Haldur lahendab draiveri või sobitab draiveri brauseri versiooniga.
Funktsioon töötab IDE-s, aga mitte jooksjast See samm tugineb ainult Pro-le mõeldud funktsioonile, näiteks andmeallikale. Kinnitage litsents või looge etapp uuesti avatud lähtekoodiga ekvivalentidega.

Kui jooksja väljub puhtalt ja soapui.log kuvab oodatud kirjeid, töötab integratsioon ja seda saab laiemaks kokku voltida. automaatika testimine kohta.

KKK

Avatud lähtekoodiga versioon töötab Groovy sammud ja avaldab testjuhtumi käivitaja, seega integratsioon ise litsentsi ei vaja. Pro või ReadyAPI Sellised funktsioonid nagu andmeallikad ja andmepõhine viisard on osad, mis ilma selleta ebaõnnestuvad.

Jah, ja see on selle läbikäigu peegelpilt. Groovy samm saab otse WebDriveri eksemplari luua, eeldusel, et Selenium purgid pannakse sisse SoapUI lib kausta, et skript saaks need lahendada.

SoapUI hukkab Groovy natiivselt skripti etapis, ilma kompileerimistsüklita ja Groovy jõuab igale Java klass on juba classpath'is. Lihtne Java vajab ehitusetappi, mistõttu Groovy võidab lühikese integratsioonikoodi eest.

Mähi see kui JUnit or TestNG testi ja lase Mavenil või Gradle käivitage see täpselt nii, nagu näites. Agendil peab brauser töötama ilma peata ja SoapUI Projektifail tuleb lisada koos testkoodiga.

Assistendid on kasulikud väikese linna ja postiindeksi paaride komplekti laiendamiseks laiemaks katvuseks ning vastuseväljade tuvastamiseks ilma väideteta. Genereeritud väärtused vajavad siiski reaalset kontrolli, sest usutav postiindeks ei ole kehtiv.

See on nii, teatud piirides. Kaaspiloot saab hakkama. Groovy süntaks ja üldlevinud Java helistab hästi, aga tal on vähe teadmisi SoapUI skriptimisobjektid nagu testRunner, context ja log, seega vajavad need ettepanekud põhjalikku ülevaatamist.

Salvesta need keskkonnamuutujatena või salasõnade haldurisse ja loe need käitusajal projekti omadustesse, sama mehhanismi abil, mida setProjectProperties() siin kasutab. Lihtteksti parooliga kinnitatud projektifail on leke, mis ootab toimumist.

Hoidke protokolli tasemel kontrollid – olek, skeem, XPath ümbrikul – sees SoapUI, kus nende jaoks tööriistad ehitatakse. Väida selles Selenium testi ainult seda, mida brauser ise peab näitama, seega viitab tõrge ühele kihile.

Võta see postitus kokku järgmiselt: