Ved brug af SoapUI med Selenium til webservicetest
โก Smart opsummering
SoapUI med Selenium lader รฉn suite tjekke en webtjeneste og den browser, der forbruger den. Groovy er broen, fordi SoapUI lรธber Groovy indfรธdt og Groovy nรฅr hver Java bibliotek Selenium skibe.
SoapUI er den mest populรฆre open source funktionstest vรฆrktรธj til API-test. Det giver komplet test dรฆkning og understรธtter alle standardprotokoller og teknologier.
Hvad er SOAP?
SOAP er en simpel XML-baseret protokol. Den tillader applikationer at udveksle information via HTTP. Den bruger webtjenester Description Language (WSDL) til kommunikation, og andre applikationer kan interagere med webservices gennem den WSDL-grรฆnseflade.
SOAP vs. REST webtjenester i SoapUI
SoapUI startede som en SOAP-klient, og navnet siger det stadig, men den tester ogsรฅ REST-slutpunkter. At vide, hvilken stil man peger pรฅ, afgรธr, hvordan testen er bygget op.
| Aspect | SOAP | REST |
|---|---|---|
| medtract | En WSDL-fil beskriver alle operationer, sรฅ SoapUI kan generere anmodninger automatisk. | Normalt en OpenAPI- eller Swagger-definition, eller ingen formel tilladelsetracslet ikke. |
| Beskedformat | Kun XML-konvolut. | Normalt JSON, selvom XML og andre formater er tilladt. |
| Transport | Oftest HTTP, men SOAP er transportuafhรฆngig. | HTTP, med metoden og URL bรฆrer intentionen. |
| Pรฅstande i SoapUI | XPath og XQuery matcher svarkuverten. | JSONPath- og script-pรฅstande matcher nyttelasten. |
| Typisk brug | Bankvirksomhed, telekommunikation og andre handlertract-tunge virksomhedsintegrationer. | Offentlige og mobilrettede tjenester, hvor nyttelasten forbliver let. |
Gennemgangen nedenfor bruger en SOAP-vejrtjeneste, men den samme runnerklasse kรธrer en REST-testcase uden nogen รฆndringer af Java kode.
Hvad er SOAPUI?
SOAPUI er et open source-vรฆrktรธj til test af webtjenester pรฅ tvรฆrs af platforme. SOAPUI-Pro-udgaven har ekstra funktionalitet til virksomheder, der beskรฆftiger sig med kritiske webtjenester. Webtjenester spiller en betydelig rolle i internetapplikationer.
โ ๏ธ Bemรฆrkning om produktnavn: SmartBear udgรฅet SoapUI om som et selvstรฆndigt produkt og fusionerede det, sammen med LoadUI Pro og ServiceV Pro, ind i ReadyAPIDen gratis udgave holder SoapUI navn og udgives stadig aktivt. Trinene nedenfor fungerer i begge, og eksisterende SoapUI projekter รฅbne i ReadyAPI.
Hvad er Selenium?
Selenium er ikke รฉt program, men en familie af vรฆrktรธjer til at styre en browser, som en person ville gรธre. To medlemmer er vigtige her:
- Selenium โ et testvรฆrktรธj, der automatiserer browsere pรฅ tvรฆrs af mange platforme.
- Selenium webdriver โ den foretager direkte kald til browserne ved hjรฆlp af hver browsers native understรธttelse af automatisering.
Hvorfor kombinere SoapUI og Selenium i รฉn test
Kontrol af tjenesten og kontrol af skรฆrmen er normalt to separate opgaver, der hรฅndteres af to separate suiter, hvilket er grunden til, at en defekt i samlingen mellem dem har tendens til at overleve begge. At kรธre dem sammen lukker dette hul.
- Bevis rundrejsen. En booking, der er indsendt i browseren, bรธr vises i servicesvaret. Kun en kombineret test kan bekrรฆfte begge halvdele.
- Opsรฆt tilstand hurtigt. Det tager et sekund at oprette en kunde via API'en; det tager et minut at oprette et til tolv formularfelter og mislykkes oftere.
- Lokaliser en fejl. Nรฅr brugergrรฆnsefladen viser den forkerte total, fortรฆller API-pรฅstanden dig i samme kรธrsel med det samme, om det er tjenesten eller siden, der er skyld i problemet.
- Genbrug รฉt datasรฆt. Postnummer- og byparrene i eksemplet nedenfor fรธder servicekaldet og kan ligeledes fรธde browserens assertions.
- Skรฆr ned pรฅ duplikatdรฆkning. Valideringsregler, der allerede er bevist pรฅ servicelaget, behรธver ikke en test af en langsom browser hver isรฆr.
Afvejningen er en tungere test: to vรฆrktรธjer, to sรฆt afhรฆngigheder og en lรฆngere periode. Behold kombinerede tests for de fรฅ rejser, der virkelig krydser grรฆnsen, og lad resten vรฆre rene. API eller rene browsertjek.
Selenium med SoapUI
Den enkleste og nemmeste mรฅde at integrere pรฅ Selenium med SoapUI er at bruge Groovy, Hvilket SoapUI stรธtter i vid udstrรฆkning.
Groovy er et objektorienteret scriptsprog, der inkluderer alle Java biblioteker, sรฅ alle Java nรธgleord og funktion kan bruges i en Groovy scriptet direkte. Det kรธrer pรฅ JVM'en (Java virtuel maskine), hvilket er det, der tillader en Groovy trรฆde ind SoapUI og en Java Selenium test for at dele de samme klasser.
Forudsรฆtninger for brug Selenium med SoapUI
Installer fรธlgende, fรธr du skriver kode:
โ ๏ธ Versionsnotat: Groovy 5.0 er den nuvรฆrende stabile udgivelse og krรฆver JDK 11 eller nyere, sรฅ installer JDK fรธrst og lad Groovy version fรธlg den. Selenium er tilfรธjet til en Java projekt som en Maven eller Gradle afhรฆngighed snarere end som en downloadet mappe, og SoapUI jar skal sidde pรฅ samme klassesti som din test โ det er pรฅ det ene punkt, hvor de fleste fรธrste forsรธg mislykkes.
Ring til SoapUI Testcase-lรธber i Selenium
Koden nedenfor kalder en SoapUI testcase. Den angiver egenskaberne for en by og dens tilsvarende postnummer, og nรฅr den udfรธres, henter den vรฆrdien af โโhver by og postnummer og rapporterer derefter antallet af fejl for hvert par, der ikke matcher. Denne kode kรธrer i Selenium.
Bemรฆrk: usePropertyFileFlag=true bruges her i stedet for en statisk egenskabsfil til lagring af postnummer og by. Postnummer og by sendes dynamisk under kรธrsel af setProjectProperties()-metoden.
Instruktioner til at kรธre koden:
- Start op SoapUI.
- Start en ny testcase.
- Tilfรธj en ny Groovy trin.
- Kopier og indsรฆt eksempelkoden i trinnet.
- Klik pรฅ Spil.
- Du kan se Firefox opstart og navigation til GoogleDerefter kan du se SoapUI logposter.
- Koden kรธrer ved hjรฆlp af JUnit.
Code Eksempel
@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 noter: Dette kodestykke er gengivet prรฆcis som det er udgivet og er et fragment snarere end en kompilerbar klasse. Fรธr det kan bygges, skal du deklarere den iterator, der er hentet fra sรฆt.iterator(), korrekt mens (iterator,harNรฆste)) til mens (iterator.hasNext()) og entry.getkey() til entry.getKey(), skriv annotationen med stort begyndelsestegn som @Hvornรฅr, fjern det vildfarne tegn i starten af โโtrinteksten, og brug String snarere end streng i Set-deklarationen. Den originale tekst bevares, sรฅ det publicerede eksempel forbliver intakt.
Konsolvisningen giver dig mulighed for at se alle test sags udfรธrt. Du finder en liste over de postnumre og byer, der er hentet og sendt til SoapUI Testtilfรฆlde 1.
Se SoapUI Logfil
Logfiler registrerer alle handlinger, der sker i et operativsystem eller softwareapplikation. For at se SoapUI logfilen, gรฅ til hovedmappen, hvor du vil se en fil med navnet soapui.log.
In SoapUI, logfilen er placeret i bin-mappen i installationsmappen, for eksempel C:\Program Files\SmartBear\soapUI-Pro-4.0.1\bin. Pรฅ en aktuel installation er versionsmappen anderledes, og en ReadyAPI installationen skriver i stedet til sin egen bin-mappe.
Nรฅr du รฅbner denne logfil ved at klikke pรฅ den, vil den ligne skรฆrmbilledet nedenfor.
Hvor SoapUI og Selenium Integration bryder ofte sammen
Nรฆsten alle fejl pรฅ dette tidspunkt er et ledningsproblem snarere end et testproblem. Det er disse, der skal kontrolleres fรธrst.
| Symptom | Sandsynlig รฅrsag | Hvad skal man kontrollere |
|---|---|---|
| NoClassDefFoundError eller ClassNotFoundException pรฅ SoapUITestCaseRunner | SoapUI jar er ikke pรฅ testklassestien. | Tilsรฆt SoapUI afhรฆngighed til byggefilen, eller peg klassestien pรฅ jar-filen i SoapUI lib-mappen. En manglende jar dukker op som en almindelig Selenium undtagelse i konsollen. |
| Projektfilen kan ikke findes | setProjectFile() lรธser en relativ sti i forhold til arbejdsmappen, hvilket er forskelligt mellem et IDE og et byggevรฆrktรธj. | Kรธr fra projektroden, eller send en absolut sti. |
| Testsuite eller testcase ikke fundet | Navnene i setTestSuite() og setTestCase() skal stemme nรธjagtigt overens med projektet. | Kopier navnene direkte fra SoapUI projekttrรฆ; de skelner mellem store og smรฅ bogstaver. |
| Ejendommen nรฅr aldrig frem til anmodningen | setProjectProperties() kรธrte efter run(), eller anmodningen refererer ikke til egenskaben. | Angiv alle egenskaber fรธr run(), og brug egenskabens pladsholdersyntaks i anmodningen. |
| Browseren starter ikke | Driveren og den installerede browser er forskellige stรธrre versioner. | Lade Selenium Manager lรธser driveren, eller matcher driveren med browser-buildet. |
| En funktion virker i IDE'en, men ikke fra runneren | Trinnet er afhรฆngig af en Pro-kun-funktion, sรฅsom en datakilde. | Bekrรฆft licensen, eller genopbyg trinnet med tilsvarende open source-versioner. |
Nรฅr runneren afsluttes uden problemer, og soapui.log viser de forventede poster, fungerer integrationen og kan foldes ind i en bredere automatiseringstest pรฅ.



