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.
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:
- Beginnen SoapUI.
- Start een nieuwe testcase.
- Voeg een nieuwe Groovy stap.
- Kopieer en plak de voorbeeldcode in de stap.
- Klik op Spelen.
- U kunt zien Firefox opstarten en navigeren naar GoogleDaarna kun je de SoapUI logboekvermeldingen.
- 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.
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.
Wanneer u dit logbestand opent door erop te klikken, ziet het er ongeveer zo uit als in de onderstaande schermafbeelding.
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.



