Korištenje SoapUI sa Selenium za testiranje web usluga

⚡ Pametni sažetak

SoapUI sa Selenium omogućuje jednom paketu provjeru web servisa i preglednika koji ga koristi. Groovy je most, jer SoapUI pokreće Groovy izvorno i Groovy doseže svaki Java knjižnica Selenium brodovi.

  • 🔘 Dva alata, dva sloja: SoapUI izvršava SOAP ili REST krajnju točku, dok Selenium WebDriver upravlja preglednikom koji ga poziva.
  • ☑️ Groovy je ljepilo: SoapUI podržava Groovy opširno, i Groovy nosi cijelu Java bibliotečki set, tako Selenium kod se izvršava nepromijenjen.
  • ✅ Klasa trkača: SoapUITestCaseRunner otvara datoteku projekta, odabire skup testova i testni slučaj te ga izvršava iz Java.
  • 🧪 Dinamički podaci: setProjectProperties() prosljeđuje vrijednosti poput grada i poštanskog broja tijekom izvođenja umjesto iz statičke datoteke svojstava.
  • 🛠️ Preduvjeti: The Groovy SDK, JDK, Selenium i SoapUI sve se mora instalirati prije prvog pokretanja.
  • 📊 Trag dokaza: Svaka radnja se zapisuje u soapui.log u mapi bin instalacijskog direktorija.

Korištenje SoapUI sa Selenium za testiranje web usluga putem Groovy

SoapUI je najpopularniji otvoreni kod funkcionalno ispitivanje alat za API testiranje. Pruža potpunu pokrivenost testom te podržava sve standardne protokole i tehnologije.

Što je SOAP?

SOAP je jednostavan protokol temeljen na XML-u. Omogućuje aplikacijama razmjenu informacija putem HTTP-a. Koristi web servise Descriptionski jezik (WSDL) za komunikaciju, a druge aplikacije mogu komunicirati s web usluge putem tog WSDL sučelja.

SOAP vs REST web servisi u SoapUI

SoapUI Započeo je kao SOAP klijent, i njegovo ime to i dalje govori, ali testira i REST krajnje točke. Poznavanje stila na koji pokazujete određuje kako će se test graditi.

Aspekt SOAP OSTALO
stract WSDL datoteka opisuje svaku operaciju, tako da SoapUI može automatski generirati zahtjeve. Obično OpenAPI ili Swagger definicija ili bez formalnog sporazumatract uopće.
Format poruke Samo XML omotnica. Obično JSON, iako su dopušteni XML i drugi formati.
prijevoz Najčešće HTTP, ali SOAP je neovisan o transportu. HTTP, s metodom i URL noseći namjeru.
Tvrdnje u SoapUI XPath i XQuery podudaraju se s ovojnicom odgovora. JSONPath i tvrdnje skripte podudaraju se s korisnim teretom.
Tipična upotreba Bankarstvo, telekomunikacije i ostale uslugetract-teške integracije poduzeća. Javne i mobilne usluge gdje korisni tereti ostaju lagani.

Donji vodič koristi SOAP uslugu vremenske prognoze, ali ista klasa trkača pokreće REST testni slučaj bez ikakvih promjena u Java kodirati.

Što je SOAPUI?

SOAPUI je alat za testiranje web usluga otvorenog koda za više platformi. SOAPUI-Pro izdanje ima dodatne funkcionalnosti za tvrtke koje se bave kritičnim web uslugama. Web usluge igraju značajnu ulogu u internetskim aplikacijama.

⚠️ Napomena o nazivu proizvoda: SmartBear ukinut SoapUI PRO kao samostalni proizvod i spojio ga, zajedno s LoadUI Pro i ServiceV Pro, u ReadyAPIBesplatno izdanje zadržava SoapUI ime i još uvijek je aktivno objavljeno. Koraci u nastavku funkcioniraju u oba slučaja, i postojećim SoapUI projekti otvoreni u ReadyAPI.

Što je Selenium?

Selenium nije jedan program već obitelj alata za upravljanje preglednikom onako kako bi to činila osoba. Ovdje su važna dva člana:

  • Selenium — alat za testiranje koji automatizira preglednike na mnogim platformama.
  • Selenium webdriver — upućuje izravne pozive preglednicima, koristeći izvornu podršku svakog preglednika za automatizaciju.

Zašto kombinirati SoapUI i Selenium u jednom testu

Provjera usluge i provjera zaslona obično su dva odvojena zadatka kojima se bave dva odvojena paketa, zbog čega nedostatak u spoju između njih obično preživi oba. Njihovo zajedničko pokretanje zatvara taj jaz.

  • Dokažite kružno putovanje. Rezervacija poslana u pregledniku trebala bi se pojaviti u odgovoru usluge. Samo kombinirani test može potvrditi obje polovice.
  • Brzo postavite stanje. Stvaranje kupca putem API-ja traje sekundu; stvaranje od jednog do dvanaest polja obrasca traje minutu i češće ne uspijeva.
  • Lokalizirajte kvar. Kada korisničko sučelje prikazuje pogrešan ukupan iznos, API tvrdnja u istom pokretanju odmah vam govori je li problem u usluzi ili stranici.
  • Ponovno upotrijebite jedan skup podataka. Parovi poštanskog broja i grada u donjem primjeru hrane poziv usluge i mogli bi jednako tako hraniti tvrdnje preglednika.
  • Izbrišite duplicirano pokrivanje. Pravila validacije koja su već dokazana na servisnom sloju ne zahtijevaju sporo testiranje preglednika.

Kompromis je teži test: dva alata, dva skupa ovisnosti i dulje trajanje. Zadržite kombinirane testove za nekoliko putovanja koja zaista prelaze granicu, a ostalo ostavite kao čiste... API ili čiste provjere preglednika.

Selenium sa SoapUI

Najjednostavniji i najlakši način integracije Selenium sa SoapUI je koristiti Groovy, Koji SoapUI opsežno podržava.

Groovy je objektno orijentirani skriptni jezik koji uključuje sve Java knjižnice, tako da svaki Java Ključna riječ i funkcija mogu se koristiti u Groovy skriptu izravno. Izvodi se na JVM-u (Java Virtualni stroj), što omogućuje Groovy uđi unutra SoapUI a Java Selenium test za dijeljenje istih klasa.

Preduvjeti za korištenje Selenium sa SoapUI

Instalirajte sljedeće prije pisanja bilo kakvog koda:

⚠️ Napomena o verziji: Groovy 5.0 je trenutno stabilno izdanje i zahtijeva JDK 11 ili noviji, stoga prvo instalirajte JDK, a zatim pustite Groovy verzija slijedi ga. Selenium dodaje se Java projekt kao Maven ili Gradle ovisnost, a ne kao preuzeta mapa, i SoapUI jar mora biti na istoj putanji klase kao i vaš test - ta jedna točka je mjesto gdje većina prvih pokušaja ne uspijeva.

Nazovite SoapUI Izvršitelj testnog slučaja u Selenium

Donji kod poziva SoapUI testni slučaj. Postavlja svojstva za grad i njegov odgovarajući poštanski broj, a kada se izvrši, dohvaća vrijednost svakog grada i poštanskog broja, a zatim izvještava o broju neuspjeha za svaki par koji se ne podudara. Ovaj kod se izvršava u Selenium.

Bilješka: Ovdje se umjesto statičke datoteke svojstava za pohranjivanje poštanskog broja i grada koristi usePropertyFileFlag=true. Poštanski broj i grad se dinamički prenose u vrijeme izvođenja metodom setProjectProperties().

Upute za pokretanje koda:

  1. Pokrenuti SoapUI.
  2. Započnite novi testni slučaj.
  3. Dodavanje novog Groovy korak.
  4. Kopirajte i zalijepite primjer koda u korak.
  5. Kliknite na Play.
  6. Možete vidjeti Firefox pokretanje i navigacija do GoogleNakon toga možete vidjeti SoapUI zapisi u dnevniku.
  7. Kod se izvršava pomoću JUnit.

Code Primjer

@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 note: Ovaj isječak je reproduciran točno onako kako je objavljen i fragment je, a ne kompajlirana klasa. Prije nego što se izgradi, morate deklarirati iterator dobiven iz set.iterator(), točno dok (iterator,imaSljedeće)) do dok (iterator.imaSljedeće()) i unos.dobi_ključ() do unos.uzmiKljuč(), napišite napomenu velikim slovom kao @Kada, uklonite zalutali znak na početku teksta koraka i upotrijebite Niz više nego niz u deklaraciji Set. Izvorni tekst se čuva kako bi objavljeni primjer ostao netaknut.

Prikaz konzole omogućuje vam pregled svih testni slučajs izvršeno. Naći ćete popis poštanskih brojeva i gradova koji su dohvaćeni i proslijeđeni u SoapUI Testni slučaj 1.

Pogled SoapUI Log datoteka

Datoteke zapisnika bilježe svaku radnju koja se dogodi u operativnom sustavu ili softverskoj aplikaciji. Za pregled SoapUI log datoteku, idite u glavni direktorij, gdje ćete vidjeti datoteku pod nazivom soapui.log.

SoapUI popis instalacijskog direktorija s vidljivom datotekom soapui.log

In SoapUI, datoteka zapisnika nalazi se u mapi bin unutar instalacijskog direktorija, na primjer C:\Program Files\SmartBear\soapUI-Pro-4.0.1\bin. Na trenutnoj instalaciji mapa verzije se razlikuje i ReadyAPI Instalacija umjesto toga zapisuje u vlastitu mapu "bin".

bin mapa od SoapUI instalacijski direktorij u kojem se pohranjuje datoteka zapisnika

Kada otvorite ovu datoteku dnevnika klikom na nju, izgledat će slično kao na slici ispod.

Sadržaj datoteke soapui.log koja prikazuje zapise o izvršavanju testa

Gdje SoapUI i Selenium Integracija često prekida

Gotovo svaki kvar u ovom trenutku je problem s ožičenjem, a ne problem s testiranjem. Ovo je prvo što treba provjeriti.

Simptom Vjerojatni uzrok Što provjeriti
NoClassDefFoundError ili ClassNotFoundException na SoapUITestCaseRunner The SoapUI jar nije na testnoj klasnoj putanji. Dodaj SoapUI ovisnost od datoteke za izgradnju ili usmjerite putanju klase na jar u SoapUI lib mapa. Nedostajuća jar datoteka pojavljuje se kao obična Selenium izuzetak u konzoli.
Datoteka projekta nije pronađena setProjectFile() razrješuje relativnu putanju prema radnom direktoriju, što se razlikuje između IDE-a i alata za izgradnju. Pokreni se iz korijena projekta ili proslijedi apsolutnu putanju.
Testni paket ili testni slučaj nije pronađen Imena u setTestSuite() i setTestCase() moraju točno odgovarati projektu. Prepišite imena direktno iz SoapUI stablo projekta; razlikuju velika i mala slova.
Nekretnina nikada ne ispunjava zahtjev Funkcija setProjectProperties() se pokrenula nakon funkcije run() ili zahtjev ne referencira svojstvo. Postavite svako svojstvo prije run() i koristite sintaksu rezerviranog mjesta za svojstvo unutar zahtjeva.
Preglednik se ne pokreće Upravljački program i instalirani preglednik su različitih glavnih verzija. Dopustite da vas Selenium Upravitelj rješava upravljački program ili ga usklađuje s verzijom preglednika.
Funkcija radi u IDE-u, ali ne i iz samog runnera. Korak se oslanja na značajku samo za Pro, kao što je izvor podataka. Potvrdite licencu ili ponovno izgradite korak s ekvivalentima otvorenog koda.

Nakon što trkač završi čisto i soapui.log prikaže očekivane unose, integracija radi i može se sklopiti u širi ispitivanje automatizacije o.

Pitanja i odgovori

Izdanje otvorenog koda radi Groovy korake i otkriva pokretač testnog slučaja, tako da sama integracija ne zahtijeva licencu. Pro ili ReadyAPI značajke poput izvora podataka i čarobnjaka vođenog podacima dijelovi su koji će propasti bez njega.

Da, i to je zrcalna slika ovog vodiča. A Groovy korak može izravno instancirati WebDriver, pod uvjetom da Selenium staklenke se stavljaju u SoapUI lib mapu kako bi ih skripta mogla riješiti.

SoapUI izvršava Groovy izvorno u koraku skripte, bez ciklusa kompajliranja i Groovy doseže svaki Java razred je već na putu klase. Običan Java potreban je korak izgradnje, zbog čega Groovy pobjede za kratki integracijski kod.

Zamotajte ga kao JUnit or TestNG testiraj i pusti Maven ili Gradle pozovite ga, točno kao što to čini primjer. Na agentu preglednik mora raditi bez headera, a SoapUI Datoteka projekta mora biti poslana zajedno s testnim kodom.

Asistenti su korisni za proširenje malog skupa parova gradova i poštanskih brojeva na širu pokrivenost i za uočavanje polja odgovora koja ne dodiruju tvrdnje. Generirane vrijednosti i dalje trebaju stvarnu provjeru jer vjerojatan poštanski broj nije valjan.

To je, unutar granica. Kopilot se nosi s tim. Groovy sintaksa i uobičajeno Java dobro zove, ali ima malo znanja o SoapUI skriptne objekte kao što su testRunner, context i log, pa te prijedloge treba pažljivo pregledati.

Pohranite ih kao varijable okruženja ili u upravitelj tajni i učitajte ih u svojstva projekta za vrijeme izvođenja, istim mehanizmom koji ovdje koristi setProjectProperties(). Potvrđena datoteka projekta s lozinkom u obliku običnog teksta je curenje koje samo čeka da se dogodi.

Provjere na razini protokola - status, shemu, XPath na omotnici - držite unutra SoapUI, gdje se alati izrađuju za njih. Tvrdite u Selenium testirajte samo ono što sam preglednik mora prikazati, tako da neuspjeh ukazuje na jedan sloj.

Sažmite ovu objavu uz: