Använda SoapUI med Selenium för webbtjänsttestning
⚡ Smart sammanfattning
SoapUI med Selenium låter en svit kontrollera en webbtjänst och webbläsaren som konsumerar den. Groovy är bron, eftersom SoapUI kör Groovy inbyggt och Groovy når varje Java Selenium fartyg.
SoapUI är den mest populära öppna källkoden funktionstestning verktyg för API-testning. Det ger komplett testtäckning och stöder alla standardprotokoll och teknologier.
Vad är SOAP?
TVÅL är ett enkelt XML-baserat protokoll. Det tillåter applikationer att utbyta information via HTTP. Det använder webbtjänster Description Language (WSDL) för kommunikation, och andra applikationer kan interagera med webbservice genom det WSDL-gränssnittet.
SOAP vs REST webbtjänster i SoapUI
SoapUI började som en SOAP-klient, och namnet säger det fortfarande, men den testar även REST-slutpunkter. Att veta vilken stil man pekar på avgör hur testet byggs upp.
| Aspect | TVÅL | REST |
|---|---|---|
| medtract | En WSDL-fil beskriver varje operation, så SoapUI kan generera förfrågningar automatiskt. | Vanligtvis en OpenAPI- eller Swagger-definition, eller ingen formell kontract alls. |
| Meddelandeformat | Endast XML-kuvert. | Vanligtvis JSON, även om XML och andra format är tillåtna. |
| Johtin | Oftast HTTP, men SOAP är transportoberoende. | HTTP, med metoden och URL bär avsikten. |
| Påståenden i SoapUI | XPath och XQuery matchar mot svarskuvertet. | JSONPath- och skriptintyg matchar nyttolasten. |
| Typisk användning | Bank, telekom och andra affärertract-tunga företagsintegrationer. | Offentliga och mobilanpassade tjänster där nyttolasten förblir lätt. |
Genomgången nedan använder en SOAP-vädertjänst, men samma runnerklass kör ett REST-testfall utan någon ändring av Java koda.
Vad är SOAPUI?
SOAPUI är ett verktyg för testning av webbtjänster med öppen källkod och plattformsoberoende funktioner. SOAPUI-Pro-utgåvan har extra funktioner för företag som arbetar med kritiska webbtjänster. Webbtjänster spelar en viktig roll i internetapplikationer.
⚠️ Produktnamnsinformation: SmartBear har upphört SoapUI Pro som en fristående produkt och sammanfogade den, tillsammans med LoadUI Pro och ServiceV Pro, till ReadyAPIGratisutgåvan behåller SoapUI namn och släpps fortfarande aktivt. Stegen nedan fungerar i båda, och befintliga SoapUI projekt öppna i ReadyAPI.
Vad är Selenium?
Selenium är inte ett enda program utan en familj av verktyg för att styra en webbläsare på samma sätt som en person skulle göra. Två medlemmar är viktiga här:
- Selenium — ett testverktyg som automatiserar webbläsare på många plattformar.
- Selenium webbdrivrutin — den gör direkta anrop till webbläsarna och använder varje webbläsares inbyggda stöd för automatisering.
Varför kombinera SoapUI och Selenium i ett test
Att kontrollera tjänsten och att kontrollera skärmen är vanligtvis två separata jobb som hanteras av två separata sviter, vilket är anledningen till att en defekt i skarven mellan dem tenderar att överleva båda. Att köra dem tillsammans stänger den luckan.
- Bevisa tur- och returresan. En bokning som skickats i webbläsaren ska visas i servicesvaret. Endast ett kombinerat test kan bekräfta båda halvorna.
- Ställ in tillstånd snabbt. Att skapa en kund via API:et tar en sekund; att skapa ett till tolv formulärfält tar en minut och misslyckas oftare.
- Lokalisera ett fel. När användargränssnittet visar fel totalsumma, meddelar API-kontrollen i samma körning omedelbart om det är tjänsten eller sidan som är felet.
- Återanvänd en datamängd. Postnummer- och stadsparen i exemplet nedan matar tjänsteanropet och kan lika gärna mata webbläsarens assertioner.
- Skär bort dubbletterad täckning. Valideringsregler som redan har bevisats på servicelagret behöver inte ett test av långsam webbläsare vardera.
Avvägningen är ett tyngre test: två verktyg, två uppsättningar beroenden och en längre period. Behåll kombinerade tester för de få resor som verkligen korsar gränsen, och låt resten vara rena. API eller rena webbläsarkontroller.
Selenium med SoapUI
Det enklaste och enklaste sättet att integrera Selenium med SoapUI är att använda Groovy, Vilket SoapUI stöder i stor utsträckning.
Groovy är ett objektorienterat skriptspråk som inkluderar alla Java bibliotek, så alla Java nyckelord och funktion kan användas i en Groovy skriptet direkt. Det körs på JVM (Java virtuell maskin), vilket är det som möjliggör en Groovy kliva in SoapUI och en Java Selenium test för att dela samma klasser.
Förutsättningar för användning Selenium med SoapUI
Installera följande innan du skriver någon kod:
⚠️ Versionsnotering: Groovy 5.0 är den nuvarande stabila utgåvan och kräver JDK 11 eller senare, så installera JDK först och låt Groovy versionen följer den. Selenium läggs till en Java projekt som en Maven eller Gradle beroende snarare än som en nedladdad mapp, och SoapUI jar måste sitta på samma klassväg som ditt test — det är den enda punkten där de flesta första försöken misslyckas.
Ring SoapUI Testfallslöpare i Selenium
Koden nedan anropar en SoapUI testfall. Den anger egenskaperna för en stad och motsvarande postnummer, och när den körs hämtar den värdet för varje stad och postnummer, och rapporterar sedan antalet fel för varje par som inte matchar. Denna kod körs i Selenium.
Obs: usePropertyFileFlag=true används här istället för en statisk egenskapsfil för att lagra postnummer och stad. Postnummer och stad skickas dynamiskt vid körning av metoden setProjectProperties().
Instruktioner för att köra koden:
- Börja SoapUI.
- Starta ett nytt testfall.
- Lägg till en ny Groovy steg.
- Kopiera och klistra in exempelkoden i steget.
- Klicka på Spela.
- Du kan se Firefox uppstart och navigering till GoogleEfter det kan du se SoapUI loggposter.
- Koden körs med hjälp av JUnit.
Code Exempelvis
@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 anteckningar: Detta kodavsnitt återges exakt som det publicerades och är ett fragment snarare än en kompilerbar klass. Innan det byggs måste du deklarera iteratorn som erhållits från set.iterator(), korrekt medan (iterator,harNästa)) till medan (iterator.hasNext()) och entry.getkey() till entry.getKey(), skriv annoteringen med stor bokstav som @När, ta bort det bortfallande tecknet i början av stegtexten och använd Sträng snarare än sträng i Set-deklarationen. Originaltexten behålls så att det publicerade exemplet förblir intakt.
Konsolvyn låter dig titta på alla testfalls körs. Du hittar en lista över postnummer och städer som hämtats och skickats till SoapUI Testfall 1.
Visa SoapUI Loggfil
Loggfiler registrerar varje åtgärd som sker i ett operativsystem eller program. För att visa SoapUI loggfilen, gå till huvudkatalogen där du hittar en fil med namnet soapui.log.
In SoapUI, loggfilen finns i bin-mappen i installationskatalogen, till exempel C:\Program Files\SmartBear\soapUI-Pro-4.0.1\bin. På en aktuell installation skiljer sig versionsmappen, och en ReadyAPI installationen skriver till sin egen bin-mapp istället.
När du öppnar den här loggfilen genom att klicka på den kommer den att se ut som på skärmdumpen nedan.
Var SoapUI och Selenium Integrationen bryts ofta
Nästan alla fel vid denna tidpunkt är ett ledningsproblem snarare än ett testproblem. Det är dessa som ska kontrolleras först.
| Symptom | Trolig orsak | Vad man ska kontrollera |
|---|---|---|
| NoClassDefFoundError eller ClassNotFoundException på SoapUITestCaseRunner | Ocuco-landskapet SoapUI jar finns inte på testklassvägen. | Lägg till SoapUI beroende till byggfilen, eller peka klassvägen mot burken i SoapUI lib-mappen. En saknad burk dyker upp som en vanlig Selenium undantag i konsolen. |
| Projektfilen kan inte hittas | setProjectFile() matchar en relativ sökväg mot arbetskatalogen, vilket skiljer sig mellan en IDE och ett byggverktyg. | Kör från projektroten, eller skicka en absolut sökväg. |
| Testsvit eller testfall hittades inte | Namnen i setTestSuite() och setTestCase() måste matcha projektet exakt. | Kopiera namnen direkt från SoapUI projektträd; de är skiftlägeskänsliga. |
| Fastigheten når aldrig fram till begäran | setProjectProperties() kördes efter run(), eller så refererar inte begäran till egenskapen. | Ställ in varje egenskap före run() och använd egenskapens platshållarsyntax i begäran. |
| Webbläsaren startar inte | Drivrutinen och den installerade webbläsaren är olika huvudversioner. | Låt Selenium Manager löser drivrutinen eller matchar drivrutinen med webbläsarversionen. |
| En funktion fungerar i IDE:n men inte från löparen | Steget är beroende av en Pro-funktion, till exempel en datakälla. | Bekräfta licensen eller återskapa steget med motsvarigheter med öppen källkod. |
När löparen avslutas utan problem och soapui.log visar de förväntade posterna, fungerar integrationen och kan vikas in i en bredare version. automatiseringstestning på.



