gebruik SoapUI with Selenium voor het testen van webservices

โšก Slimme samenvatting

SoapUI with Selenium Hiermee kan รฉรฉn suite een webservice en de browser die deze gebruikt, controleren. Groovy is de brug, omdat SoapUI loopt Groovy van nature en Groovy bereikt elke Java Selenium schepen.

  • ๐Ÿ”˜ Twee gereedschappen, twee lagen: SoapUI test het SOAP- of REST-eindpunt, terwijl Selenium WebDriver stuurt de browser aan die de applicatie aanroept.
  • โ˜‘๏ธ Groovy is de lijm: SoapUI ondersteunt Groovy uitgebreid, en Groovy draagt โ€‹โ€‹het geheel Java bibliotheekset, dus Selenium De code blijft ongewijzigd.
  • โœ… Hardloperklasse: SoapUITestCaseRunner opent een projectbestand, selecteert een testsuite en testcase en voert deze uit. Java.
  • ๐Ÿงช Dynamische gegevens: setProjectProperties() geeft waarden zoals stad en postcode door tijdens de uitvoering in plaats van vanuit een statisch eigenschappenbestand.
  • ๏ธ Vereisten: De Groovy SDK, een JDK, Selenium en SoapUI Alle installaties moeten vรณรณr de eerste keer opstarten voltooid zijn.
  • ๐Ÿ“Š Bewijsspoor: Elke actie wordt vastgelegd in het bestand soapui.log in de map bin van de installatiemap.

gebruik SoapUI with Selenium voor het testen van webservices via Groovy

SoapUI is de populairste open source functioneel testen instrument API-testen. Het biedt compleet test dekking en ondersteunt alle standaardprotocollen en technologieรซn.

Wat is SOAP?

SOAP HTTP is een eenvoudig, op XML gebaseerd protocol. Het stelt applicaties in staat om informatie uit te wisselen via HTTP. Het maakt gebruik van webservices. Description Language (WSDL) voor communicatie, en andere applicaties kunnen ermee interageren. webservices via die WSDL-interface.

SOAP versus REST-webservices in SoapUI

SoapUI Het begon als een SOAP-client, en de naam suggereert dat nog steeds, maar het test ook REST-endpoints. Weten naar welk type endpoint je verwijst, bepaalt hoe de test wordt opgebouwd.

Aspect SOAP REST
mettract Een WSDL-bestand beschrijft elke bewerking, dus SoapUI Kan automatisch verzoeken genereren. Meestal een OpenAPI- of Swagger-definitie, of geen formele definitie.tract helemaal niet.
Bericht formaat Alleen XML-envelop. Meestal wordt JSON gebruikt, hoewel XML en andere formaten ook zijn toegestaan.
Transport Meestal wordt HTTP gebruikt, maar SOAP is transportonafhankelijk. HTTP, met de methode en URL het overbrengen van de intentie.
Beweringen in SoapUI XPath en XQuery worden vergeleken met de response envelope. JSONPath en scriptasserties worden vergeleken met de payload.
Typisch gebruik Bankwezen, telecommunicatie en andere bedrijventracIntegraties met veel t-componenten voor grote bedrijven. Publieksgerichte en mobielgerichte diensten waarbij de payload licht blijft.

De onderstaande stappen maken gebruik van een SOAP-weerservice, maar dezelfde runner-klasse voert een REST-testcase uit zonder enige wijziging. Java code.

Wat is SOAPUI?

SOAPUI SOAPUI is een open-source, platformonafhankelijke tool voor het testen van webservices. De SOAPUI-Pro-editie biedt extra functionaliteit voor bedrijven die met kritieke webservices werken. Webservices spelen een belangrijke rol in internettoepassingen.

โš ๏ธ Opmerking over de productnaam: SmartBear is niet meer verkrijgbaar. SoapUI Pro als een op zichzelf staand product en hebben het, samen met LoadUI Pro en ServiceV Pro, samengevoegd tot รฉรฉn product. ReadyAPIDe gratis editie behoudt de SoapUI naam en wordt nog steeds actief uitgebracht. De onderstaande stappen werken in beide versies, en bestaande versies. SoapUI projecten open in ReadyAPI.

Wat is Selenium?

Selenium is niet รฉรฉn programma, maar een verzameling hulpmiddelen om een โ€‹โ€‹browser te bedienen zoals een mens dat zou doen. Twee onderdelen zijn hier van belang:

  • Selenium โ€” een testtool die browsers op meerdere platformen automatiseert.
  • Selenium webdriver โ€” het maakt rechtstreekse aanroepen naar de browsers en gebruikt daarbij de ingebouwde ondersteuning voor automatisering van elke browser.

Waarom combineren? SoapUI en Selenium in รฉรฉn test

Het controleren van de service en het controleren van het scherm zijn doorgaans twee aparte taken die door twee aparte softwarepakketten worden uitgevoerd. Daarom blijft een fout in de overgang tussen beide vaak onopgemerkt. Door ze samen uit te voeren, wordt die kloof gedicht.

  • Bewijs de heen- en terugreis. Een boeking die via de browser is ingediend, moet in het antwoord van de service verschijnen. Alleen een gecombineerde test kan beide aspecten controleren.
  • Stel de status snel in. Het aanmaken van een klant via de API duurt een seconde; het aanmaken van een klant via twaalf formuliervelden duurt een minuut en mislukt vaker.
  • Lokaliseer een storing. Als de gebruikersinterface een onjuist totaalbedrag weergeeft, laat de API-assertie in dezelfde run direct zien of de fout bij de service of de pagina ligt.
  • Hergebruik รฉรฉn dataset. De postcode- en plaatsnaamcombinaties in het onderstaande voorbeeld worden gebruikt voor de serviceaanroep en zouden eveneens als input kunnen dienen voor de browserasserties.
  • Verwijder dubbele dekking. Validatieregels die al op serviceniveau zijn getest, hoeven niet telkens opnieuw in een trage browser te worden getest.

De keerzijde is een zwaardere test: twee tools, twee sets afhankelijkheden en een langere looptijd. Bewaar gecombineerde tests voor de handvol trajecten die de grens daadwerkelijk overschrijden, en laat de rest ongewijzigd. API of puur browsercontroles.

Selenium with SoapUI

De eenvoudigste en gemakkelijkste manier om te integreren Selenium with SoapUI is het gebruik Groovy, welke SoapUI Biedt uitgebreide ondersteuning.

Groovy is een objectgeoriรซnteerde scripttaal die alle Java bibliotheken, dus elke Java trefwoord en functie kunnen worden gebruikt in een Groovy Het script wordt direct uitgevoerd. Het draait op de JVM (Java virtuele machine), wat het mogelijk maakt om Groovy stap naar binnen SoapUI en Java Selenium Test om dezelfde klassen te delen.

Vereisten voor gebruik Selenium with SoapUI

Installeer het volgende voordat u code schrijft:

โš ๏ธ Versie-opmerking: Groovy Versie 5.0 is de huidige stabiele release en vereist JDK 11 of hoger, dus installeer eerst de JDK en laat de installatie starten. Groovy versie volgt. Selenium wordt toegevoegd aan een Java project als een Maven of Gradle afhankelijkheid in plaats van als een gedownloade map, en de SoapUI Het JAR-bestand moet zich in hetzelfde classpath bevinden als je test; dat ene punt is waar de meeste eerste pogingen mislukken.

Bel de SoapUI Testcase-runner in Selenium

De onderstaande code roept een SoapUI Testcase. Deze stelt de eigenschappen in voor een stad en de bijbehorende postcode. Bij uitvoering haalt de code de waarde op voor elke stad en postcode en rapporteert vervolgens het aantal fouten voor elk paar dat niet overeenkomt. Deze code wordt uitgevoerd in Selenium.

Let op: usePropertyFileFlag=true wordt hier gebruikt in plaats van een statisch eigenschappenbestand voor het opslaan van de postcode en plaats. De postcode en plaats worden dynamisch doorgegeven tijdens de uitvoering door de setProjectProperties()-methode.

Instructies voor het uitvoeren van de code:

  1. Beginnen SoapUI.
  2. Start een nieuwe testcase.
  3. Voeg een nieuwe Groovy stap.
  4. Kopieer en plak de voorbeeldcode in de stap.
  5. Klik op Spelen.
  6. U kunt zien Firefox opstarten en navigeren naar GoogleDaarna kun je de SoapUI logboekvermeldingen.
  7. De code wordt uitgevoerd met JUnit.

Code Voorbeeld

@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 Opmerkingen: Dit codefragment is exact overgenomen zoals gepubliceerd en is een fragment in plaats van een compileerbare klasse. Voordat het compileert, moet u de iterator declareren die u van [de betreffende code] hebt verkregen. set.iterator(), corrigeren terwijl (iterator, heeftVolgende) naar terwijl (iterator.hasNext()) en entry.getkey() naar entry.getKey(), schrijf de annotatie met een hoofdletter als @WanneerVerwijder het overtollige teken aan het begin van de staptekst en gebruik Draad dan snaar in de Set-declaratie. De originele tekst blijft behouden, zodat het gepubliceerde voorbeeld intact blijft.

De consoleweergave geeft je een overzicht van alles. testcases uitgevoerd. Je vindt een lijst met de opgehaalde postcodes en steden die zijn doorgegeven aan SoapUI Testgeval 1.

Bekijk SoapUI Logbestand

Logbestanden registreren elke actie die plaatsvindt in een besturingssysteem of softwaretoepassing. Om de logbestanden te bekijken... SoapUI Om het logbestand te vinden, ga naar de hoofdmap. Daar ziet u een bestand met de naam soapui.log.

SoapUI Installatiemapweergave met het soapui.log-bestand zichtbaar

In SoapUIHet logbestand bevindt zich in de map 'bin' binnen de installatiemap, bijvoorbeeld C:\Program Files\SmartBear\soapUI-Pro-4.0.1\bin. Bij een recente installatie kan de map voor deze versie verschillen. ReadyAPI De installatie schrijft in plaats daarvan naar een eigen bin-map.

bin-map van de SoapUI installatiemap waar het logbestand wordt opgeslagen

Wanneer u dit logbestand opent door erop te klikken, ziet het er ongeveer zo uit als in de onderstaande schermafbeelding.

Inhoud van het soapui.log-bestand met de vastgelegde testrun-items

Waar SoapUI en Selenium Integratie leidt vaak tot problemen.

Vrijwel elke storing op dit punt is een bedradingsprobleem in plaats van een testprobleem. Deze problemen moet je dus als eerste controleren.

Symptoom waarschijnlijke oorzaak Wat te controleren
NoClassDefFoundError of ClassNotFoundException op SoapUITestCaseRunner De SoapUI Het jar-bestand bevindt zich niet in het testclasspath. Voeg de SoapUI afhankelijkheid van het buildbestand, of wijs het classpath naar de jar in de SoapUI lib-map. Een ontbrekende jar verschijnt als een gewone jar. Selenium uitzondering in de console.
Het projectbestand kan niet worden gevonden. setProjectFile() lost een relatief pad op ten opzichte van de werkmap, wat verschilt tussen een IDE en een buildtool. Voer het commando uit vanuit de projectmap of geef een absoluut pad op.
Testsuite of testcase niet gevonden De namen in setTestSuite() en setTestCase() moeten exact overeenkomen met het project. Kopieer de namen rechtstreeks uit de SoapUI projectstructuur; ze zijn hoofdlettergevoelig.
Het pand bereikt het verzoek nooit. setProjectProperties() werd uitgevoerd na run(), of het verzoek verwijst niet naar de eigenschap. Stel alle eigenschappen in vรณรณr run() en gebruik de syntax voor eigenschapsplaceholders in het verzoek.
De browser start niet op. Het stuurprogramma en de geรฏnstalleerde browser hebben verschillende hoofdversies. Laat Selenium De manager lost het probleem met het stuurprogramma op, of koppelt het stuurprogramma aan de browserversie.
Een bepaalde functionaliteit werkt wel in de IDE, maar niet vanuit de runner. Deze stap is afhankelijk van een functie die alleen beschikbaar is in de Pro-versie, zoals een gegevensbron. Controleer de licentie of voer de stap opnieuw uit met open-source alternatieven.

Zodra de runner correct is afgesloten en soapui.log de verwachte vermeldingen bevat, werkt de integratie en kan deze worden opgenomen in een bredere implementatie. automatisering testen op.

Veelgestelde vragen

De open-source editie draait Groovy stappen en stelt de testcase-runner beschikbaar, zodat de integratie zelf geen licentie nodig heeft. Pro of ReadyAPI Functies zoals gegevensbronnen en de datagestuurde wizard zijn de onderdelen die zonder een dergelijke tool niet zullen werken.

Ja, en het is het spiegelbeeld van deze handleiding. A Groovy Deze stap kan rechtstreeks een WebDriver instantieren, mits de Selenium potten worden geplaatst in de SoapUI lib-map zodat het script ze kan vinden.

SoapUI wordt uitgevoerd Groovy rechtstreeks in een scriptstap, zonder compilatiecyclus, en Groovy bereikt elke Java klasse bevindt zich al op het classpath. Eenvoudig Java heeft een bouwstap nodig, daarom Groovy Winst voor korte integratiecode.

Wikkel het in als een JUnit or TestNG test en laat Maven of Gradle Roep het aan, precies zoals in het voorbeeld. Op de agent moet de browser headless draaien, en de SoapUI Het projectbestand moet tegelijk met de testcode worden gecommit.

Assistenten zijn handig om een โ€‹โ€‹kleine set plaats- en postcodecombinaties uit te breiden naar een bredere dekking, en om responsvelden te vinden die niet door een bewering worden gecontroleerd. De gegenereerde waarden moeten nog steeds daadwerkelijk worden gecontroleerd, omdat een plausibele postcode niet per se een geldige postcode is.

Binnen bepaalde grenzen is dat mogelijk. De copiloot regelt het. Groovy syntaxis en veelvoorkomende Java Het klinkt goed, maar het heeft weinig kennis van de SoapUI Scripting-objecten zoals testRunner, context en log vereisen daarom een โ€‹โ€‹grondige beoordeling van de suggesties.

Sla ze op als omgevingsvariabelen of in een secrets manager en lees ze tijdens de uitvoering in de projecteigenschappen, hetzelfde mechanisme dat setProjectProperties() hier gebruikt. Een gecommit projectbestand met een wachtwoord in platte tekst is een potentieel beveiligingslek.

Houd controles op protocolniveau โ€” status, schema, XPath op de envelop โ€” binnenin. SoapUI, waar de gereedschappen ervoor gemaakt zijn. Bevestig in de Selenium Test alleen wat de browser zelf moet weergeven, zodat een fout wijst op รฉรฉn laag.

Vat dit bericht samen met: