Wat is SOA-testen? Tutorial met voorbeeld
⚡ Slimme samenvatting
SOA-testen valideren een servicegerichte architectuur. ArchiEen architectuur waarin losjes gekoppelde services berichten uitwisselen via een netwerk, waarbij elke service afzonderlijk, de integraties daartussen en de volledige bedrijfsstroom van begin tot eind worden gecontroleerd.

Wat is SOA-testen?
SOA (Servicegericht Architecture) Testen Het testen betreft de SOA-architectuurstijl, waarbij de applicatiecomponenten zijn ontworpen om te communiceren via communicatieprotocollen, doorgaans via een netwerk.
Wat is SOA?
SOA is een methode om bedrijfsapplicaties en -processen met elkaar te integreren om aan de bedrijfsbehoeften te voldoen.
In Software EngineeringSOA biedt wendbaarheid en flexibiliteit aan bedrijfsprocessen. Een wijziging in een proces of applicatie kan worden doorgevoerd in een specifiek onderdeel zonder het hele systeem te beïnvloeden.
Softwareontwikkelaars die met SOA werken, ontwikkelen of kopen delen van programma's die SOA worden genoemd. diensten.
Wat is Dienstverlening?
Het onderstaande diagram toont een betaalgateway die als service wordt aangeboden en door meerdere e-commercewebsites kan worden aangeroepen.
- Een service kan een functionele eenheid zijn van een applicatie of een bedrijfsproces, die door elke andere applicatie of elk ander proces kan worden hergebruikt of herhaald. (In de afbeelding hierboven is bijvoorbeeld de betaalgateway een service die door elke e-commercewebsite kan worden hergebruikt. Wanneer er een betaling moet worden gedaan, roept de e-commercewebsite de betaalgateway aan. Nadat de betaling via de gateway is voltooid, wordt een reactie teruggestuurd naar de e-commercewebsite.)
- Services zijn eenvoudig te monteren en eenvoudig te herconfigureren van componenten.
- Services kunnen worden vergeleken met bouwstenen. Ze kunnen elke gewenste applicatie bouwen, en het toevoegen of verwijderen ervan uit de applicatie of het bedrijfsproces is eenvoudig.
- Diensten worden meer gedefinieerd door de bedrijfsfunctie die ze vervullen dan door stukjes code.
Web Services
De meeste SOA-services worden als webservices aangeboden, dus het is verstandig om de werking van een webservice-aanroep uit te werken voordat de testlagen worden beschreven.
Web services Dit zijn onafhankelijke applicatiecomponenten die via het web beschikbaar zijn.
Ze kunnen online worden gepubliceerd, gevonden en gebruikt, en ze communiceren via internet. De onderstaande reeks laat zien hoe een aanbieder, een register en een gebruiker met elkaar interageren.
- De Dienstverlener publiceert de dienst op internet.
- De client zoekt naar een specifieke webservice in het webserviceregister.
- A URL en wsdl De vereiste webservice wordt geretourneerd. Met behulp van de WSDL en de URLDe communicatie tussen de dienstverlener en de aanvrager verloopt via SOAP-berichten.
- Wanneer een gebruiker een webservice aanroept, wordt er een HTTP-verbinding met de provider tot stand gebracht.
- Er wordt een SOAP-bericht aangemaakt om de provider te instrueren de benodigde webservicelogica aan te roepen.
- Het antwoord dat van de provider wordt ontvangen, is een SOAP-bericht dat is ingebed in het HTTP-antwoord. Dit HTTP-antwoord is het gegevensformaat dat de ontvangende applicatie kan begrijpen.
Voorbeeld
De onderstaande schermafbeelding toont een weerbericht dat afkomstig is van een externe dienst en is ingesloten in de homepage van een zoekmachine.
De homepage van een website en een zoekmachine tonen een dagelijks weerbericht. In plaats van de sectie met het weerbericht helemaal zelf te coderen, kan een weerberichtservice van een leverancier worden aangeschaft en in de pagina's worden geïntegreerd.
SOA-testlagen
SOA bestaat uit verschillende technologieën, en applicaties die met SOA zijn gebouwd, hebben verschillende services die losjes met elkaar verbonden zijn. Het onderstaande diagram geeft de drie lagen weer die een testplan moet omvatten.
SOA-testen moeten zich richten op 3 systeemlagen.
Dienstenlaag
Deze laag bestaat uit de diensten die door een systeem worden aangeboden, afgeleid van bedrijfsfuncties.
Neem bijvoorbeeld een wellnesswebsite die bestaat uit:
- Gewicht Tracker
- Bloed suiker Tracker
- Bloeddruk Tracker
TracDe kers tonen de betreffende gegevens en de datum waarop ze zijn ingevoerd. De servicelaag bestaat uit de services die de betreffende gegevens uit de database ophalen:
- Gewicht Tracker service
- Bloed suiker Tracker service
- Bloeddruk Tracker service
- Login-service
Proceslaag
De proceslaag bestaat uit de processen, de verzameling services die deel uitmaken van één enkele functionaliteit.
De processen kunnen deel uitmaken van een gebruikersinterface (bijvoorbeeld een zoekmachine) of van een ETL-tool die gegevens uit de database ophaalt.
De nadruk in deze laag ligt vooral op gebruikersinterfaces en -processen. De gebruikersinterface van het gewicht tracDe focus ligt primair op ker en de integratie ervan met de database.
De volgende functies worden in overweging genomen:
- Nieuwe gegevens toevoegen
- Bestaande gegevens bewerken
- Een nieuw tracker
- Gegevens verwijderen
Consumentenlaag
Deze laag bestaat hoofdzakelijk uit gebruikersinterfaces, zoals de onderstaande afbeelding laat zien.
Op basis van deze lagen is het testen van een SOA-applicatie verdeeld over drie niveaus:
- Service Level
- Interface niveau
- Eind-tot-eindniveau
De twee werkwijzen verschillen: voor het ontwerpen van tests wordt een top-down benadering gebruikt, terwijl voor de uitvoering van tests een bottom-up benadering wordt gehanteerd.
Strategie voor SOA-testen
Testplanningsaanpak
- De SOA-testers moeten de volledige architectuur van de applicatie begrijpen.
- De applicatie moet worden opgesplitst in onafhankelijke services (een service met een eigen aanvraag- en antwoordstructuur die niet afhankelijk is van een andere service om een antwoord te genereren).
- De applicatiestructuur moet worden gereorganiseerd in drie componenten: data, services en front-end applicaties.
- Alle onderdelen moeten zorgvuldig worden geanalyseerd en er moeten bedrijfsscenario's worden uitgewerkt.
- De bedrijfsscenario's moeten worden onderverdeeld in algemene scenario's en toepassingsspecifieke scenario's.
- A Tracgeschiktheidsmatrix moet worden voorbereid, en alle testgevallen moeten zijn tracafgestemd op zakelijke scenario's.
Testuitvoeringsaanpak
- Elk serviceonderdeel moet worden getest.
- Integratietesten van de servicecomponenten moet worden gedaan om de gegevensstroom door de services en de gegevensintegriteit te valideren.
- Systeem testen Een volledige modelanalyse is nodig om de gegevensstroom tussen de front-end applicatie en de database te valideren.
- Performance Testing moet worden gedaan voor fijnafstemming en optimale prestaties.
SOA-testmethoden
1) Testen op basis van data, gestuurd door bedrijfsscenario's
- Diverse zakelijke aspecten die verband houden met het systeem moeten worden geanalyseerd.
- Scenario's moeten worden ontwikkeld op basis van de integratie van de verschillende webdiensten van de applicatie, en van webdiensten met de applicatie.
- De gegevensconfiguratie moet worden uitgevoerd op basis van de bovenstaande scenario's.
- De data-configuratie moet ook alle mogelijke scenario's omvatten.
2) Stompen
- Dummy-interfaces worden gemaakt om services te testen.
- Via deze interfaces kunnen verschillende inputs worden geleverd en de outputs kunnen worden gevalideerd.
- Wanneer een applicatie een interface gebruikt naar een externe service die niet wordt getest (een service van een derde partij), kan er tijdens de integratietest een stub worden aangemaakt.
3) Regressietesten
- Regressie Testing Updates aan de applicatie moeten worden uitgevoerd wanneer er meerdere releases zijn, om de stabiliteit en beschikbaarheid van de systemen te waarborgen.
- Er zal een uitgebreide regressietestsuite worden gecreëerd die de diensten omvat die een belangrijk onderdeel van de applicatie vormen.
- Deze testsuite kan in meerdere releases van het project worden hergebruikt.
4) Testen van het serviceniveau
Servicetesten omvatten het testen van de functionaliteit, beveiliging, prestaties en interoperabiliteit van de component. Elke service moet eerst afzonderlijk worden getest.
5) Functioneel testen
Functioneel testen Dit moet bij elke servicebeurt worden gedaan om:
- Zorg ervoor dat de dienst op elk verzoek het juiste antwoord geeft.
- Zorg ervoor dat de juiste foutmeldingen worden ontvangen voor verzoeken met ongeldige of onjuiste gegevens.
- Controleer elk verzoek en antwoord voor elke bewerking die de service tijdens de uitvoering moet uitvoeren.
- Valideer de foutmeldingen wanneer er een fout optreedt op server-, client- of netwerkniveau.
- Controleer of de ontvangen antwoorden de juiste indeling hebben.
- Controleer of de gegevens in het antwoord overeenkomen met de gevraagde gegevens.
6) Beveiligingstesten
Beveiligingstesten van de webservice zijn een belangrijk aspect tijdens de serviceleveltesten van de SOA-applicatie, omdat ze de veiligheid van de applicatie waarborgen.
Tijdens het testen moeten de volgende factoren in acht worden genomen:
- De door WS-Security gedefinieerde industriestandaard moet door de webservice worden nageleefd.
- Beveiligingsmaatregelen moeten feilloos werken.
- Versleuteling van gegevens en digitale handtekeningen op de documenten.
- Authenticatie en autorisatie.
- SQL-injectie, malware, XSS, CSRF en andere kwetsbaarheden zullen worden getest op de XML.
- Denial-of-service-aanvallen.
7) Prestatietesten
Prestatietesten van de service zijn noodzakelijk omdat services herbruikbaar zijn en meerdere applicaties mogelijk dezelfde service gebruiken.
Tijdens het testen wordt rekening gehouden met de volgende factoren:
- Prestaties en functionaliteit van de dienst moeten onder zware belasting worden getest.
- De prestaties van de service moeten worden vergeleken wanneer deze afzonderlijk werkt en wanneer deze is gekoppeld aan de applicatie.
- Load testen De service moet worden getest om de responstijd te controleren, knelpunten op te sporen, het CPU- en geheugengebruik te verifiëren en de schaalbaarheid te voorspellen.
8) Testen op integratieniveau
- Servicetesten zorgen ervoor dat de services afzonderlijk naar behoren werken; ze garanderen niet dat de gekoppelde componenten ook naar behoren functioneren.
- Integratietesten worden uitgevoerd met de nadruk op de interfaces.
- Deze fase omvat alle mogelijke bedrijfsscenario's.
- In deze fase moeten de niet-functionele aspecten van de applicatie nogmaals worden getest. Beveiligings-, compliance- en prestatietests garanderen de beschikbaarheid en stabiliteit van het systeem in alle opzichten.
- De communicatie- en netwerkprotocollen moeten worden getest om de consistentie van de datacommunicatie tussen de diensten te valideren.
9) End-to-end-testen
Deze fase zorgt ervoor dat de applicatie zowel functioneel als niet-functioneel aan de bedrijfsvereisten voldoet.
De onderstaande items worden gegarandeerd getest tijdens end-to-end testen:
- Alle services werken zoals verwacht na integratie
- Afhandeling van uitzonderingen
- Gebruikersinterface van de applicatie
- Een goede gegevensstroom door alle componenten
- Bedrijfsproces
Uitdagingen bij SOA-testen
Het toepassen van deze methoden is zelden eenvoudig, en de onderstaande problemen doen zich bij vrijwel elk SOA-programma opnieuw voor.
- Gebrek aan interfaces voor diensten.
- Het testproces omvat meerdere systemen, wat complexe datavereisten met zich meebrengt.
- De applicatie bestaat uit een verzameling van verschillende componenten die vaak veranderen, waardoor regressietesten vaker nodig zijn.
- Door de meerlaagse architectuur is het moeilijk om defecten te isoleren.
- Omdat een service door verschillende interfaces wordt gebruikt, is de belasting moeilijk te voorspellen, wat het plannen van prestatietests omslachtig maakt.
- SOA is een verzameling van heterogene technologieën. Het testen van een SOA-applicatie vereist mensen met verschillende vaardigheden, wat op zijn beurt de plannings- en uitvoeringskosten verhoogt.
- Omdat de applicatie meerdere services integreert, brengt het testen van de beveiliging de nodige problemen met zich mee. Het valideren van authenticatie en autorisatie is lastig.
SOA-testtools
Er zijn veel SOA-testtools op de markt die testers helpen bij het testen van SOA-applicaties. Hieronder vindt u een aantal populaire SOA-testtools.
1) SoapUI
SoapUI is een open-source tool voor functionele testen van services en API-testen.
- Desktop applicatie
- Ondersteunt meerdere protocollen: SOAP, REST, HTTP, JMS, AMF, JDBC
- Webdiensten kunnen worden ontwikkeld, geïnspecteerd en aangeroepen.
- Kan ook gebruikt worden voor belastingstests. Automatisering testenen beveiligingstests
- Stubs kunnen worden gemaakt door MockServices
- Webserviceverzoeken en -tests kunnen automatisch worden gegenereerd via de webserviceclient.
- Beschikt over ingebouwde rapportagetools.
- Ontwikkeld door SmartBear, dat zowel de open source SoapUI distributie en de commerciële ReadyAPI editie
2) Broadcom Service Virtualization (voorheen iTKO LISA)
LISA is een productsuite die een functionele testoplossing biedt voor gedistribueerde systemen zoals SOA. Het product is overgenomen door iTKO en CA Technologies en wordt tegenwoordig verkocht onder de naam Broadcom Service Virtualization.
- Kan ook worden gebruikt voor regressie-, integratie-, belasting- en prestatietests.
- Kan worden gebruikt voor het ontwerpen en uitvoeren van tests.
3) UFT Eén (voorheen HP Service Test)
Service Test is een tool voor functioneel testen die zowel UI-testen als testen van gedeelde services ondersteunt. De API-testfunctionaliteit is geïntegreerd in Unified Functional Testing, dat nu wordt verkocht door OpenText as UFT Een.
- Zowel functionele als prestatietests van services kunnen met één enkel script worden uitgevoerd.
- Geïntegreerd met Quality Center, nu verkocht als OpenText ALM / Kwaliteitscentrum.
- Een enorme hoeveelheid diensten en gegevens kan worden beheerd.
- Ondersteunt interoperabiliteitstests door JEE-, AXIS- en DotNet-clientomgevingen te simuleren.
4) Parasoft SOAtest
Parasoft SOAtest is een suite van test- en analysetools die is ontwikkeld voor het testen van API's en API-gestuurde applicaties.
- Ondersteunt webservices, REST, JSON, MQ, JMS, TIBCO, HTTP en XML-technologieën.
- Functionele, unit-, integratie-, regressie-, beveiligings-, interoperabiliteits-, compliance- en prestatietests zijn mogelijk.
- Stubs kunnen worden gemaakt met behulp van Parasoft Virtualiserendie beter in staat zijn dan SoapUI Mockservices.
Gebruiksscenario's voor SOA-testen
Het onderstaande uitgewerkte voorbeeld past de bovenstaande strategie, methoden en tools stap voor stap toe op één e-commercewebsite.
Neem bijvoorbeeld een e-commerce website met de onderstaande functies en subfuncties.
Orderverwerking
Onderstaande grafiek verdeelt de orderverwerking in de subfuncties die uiteindelijk diensten worden.
FASE 1
In de eerste fase van SOA-testen, de teststrategiefase, wordt de applicatie opgedeeld in services en bedrijfsfuncties.
Laten we de onderstaande diensten in de applicatie eens bekijken.
- Maak een bestelling
- Controleer de klantstatus
- Bestelstatus wijzigen
- Controleer de bestelstatus
- Controleer inventaris
De bedrijfsfuncties zijn hetzelfde als de functies van de website.
Let op: het teststrategiedocument bevat een lijst met de services en functies die getest moeten worden.
FASE 2
Dit is de testplanningsfase. Test gevallen zijn voor elk niveau geschreven.
Van begin tot eind. De testgevallen worden geschreven voor elk bedrijfsgebruiksscenario en elke workflow. Hieronder volgen voorbeelden van testgevallen.
- Een bestelling plaatsen met een actieve gebruiker.
- Maak een bestelling aan met een inactieve gebruiker.
- Maak een bestelling aan met een beschikbaar product, waarbij de bestelhoeveelheid kleiner is dan de beschikbare hoeveelheid.
- Maak een bestelling aan met een beschikbaar product, waarbij de bestelhoeveelheid groter is dan de beschikbare hoeveelheid.
- Maak een bestelling aan met meerdere artikelen.
- Een bestelling volledig annuleren.
- Een bestelling gedeeltelijk annuleren.
Integratieniveau. Testcases worden geschreven voor de integratie van de database en de gebruikersinterface. Hieronder volgen enkele voorbeeldtestcases.
- Maak een nieuwe bestelling aan met één artikel. Controleer of de bestelling in de database is aangemaakt.
- Maak een nieuwe bestelling aan met één artikel. Controleer of de berekende prijs voor de bestelling correct is.
- Maak een nieuwe bestelling aan met één artikel. Controleer of de beschikbare hoeveelheid van het product is verminderd met het bestelbedrag.
- Controleer of de status van de bestelling die in de gebruikersinterface wordt weergegeven, overeenkomt met de status in de database.
- Annuleer de bestelling en controleer of de status van de bestelling in de database is gewijzigd.
- Controleer bij een eerste betaling of de in de gebruikersinterface ingevoerde betaalgegevens in de database zijn opgeslagen.
- Controleer bij het retourneren van betalingen of de betalingsgegevens in de database worden weergegeven in de gebruikersinterface.
Serviceniveau. Elke service wordt getest op alle datacondities. Hieronder volgen enkele voorbeelden.
| Nee. | Bestel Details | Bestelconditie |
|---|---|---|
| 1 | Orde creëren. Aantal artikelen = 1 | Aantal op bestelling < Aantal op database |
| 2 | Orde creëren. Aantal artikelen > 1 | Aantal in bestelling < Aantal in database |
| 3 | Orde creëren. Aantal artikelen = 1 | Aantal op bestelling > Aantal in database |
| 4 | Controleer de bestelstatus | Status op database = Actief |
| 5 | Controleer de bestelstatus | Status in database = Verzonden |
| 6 | Controleer de bestelstatus | Status op database = Geannuleerd |
| 7 | Controleer de bestelstatus | Bestellings-ID = Ongeldig |
| 8 | Controleer de beschikbaarheid van het product | Hoeveelheid product >0 |
| 9 | Controleer de beschikbaarheid van het product | Hoeveelheid product =0 |
| 10 | Controleer de beschikbaarheid van het product | Product-ID = ongeldig |
FASE 3 — Testuitvoering
De testuitvoering volgt een bottom-up benadering: eerst wordt er getest op serviceniveau, vervolgens op integratieniveau en tot slot wordt er end-to-end getest.
1) Serviceniveau
Laten we eens aannemen dat de SoapUI De tool wordt gebruikt om de applicatie te testen. De WSDL en URL worden in het testvenster weergegeven SoapUIEn het verzoek voor elke service wordt weergegeven in het aanvraagvenster. Door de gegevens aan te passen aan de hand van de testgevallen op serviceniveau, worden voor elk testgeval aanvragen aangemaakt.
| Testgeval | Aanvraag | Verwachte reactie |
|---|---|---|
| Bestelling aanmaken. Aantal artikelen = 1, Aantal in bestelling < Aantal in database | x2 2 | o3251 Succesvol |
| Bestelling aanmaken. Aantal artikelen > 1, hoeveelheid in bestelling < hoeveelheid in database. | j1 1 j2 3 | o3251 Succesvol |
| Bestelling aanmaken. Aantal artikelen = 1, hoeveelheid in bestelling > hoeveelheid in database. | x23 200 | nul Mislukt |
| Controleer de orderstatus. Status in de database = Actief | o9876 | Actief Succesvol |
| Controleer de orderstatus. Status in de database = Verzonden | o9656 | Verzonden Succesvol |
| Controleer de orderstatus. Order-ID = Ongeldig | y5686 | null Niet succesvol |
| Controleer de productbeschikbaarheid. Aantal producten > 0 | d34 | 34 Ja Succesvol |
| Controleer de beschikbaarheid van het product. Aantal producten = 0 | j34 | 0 Nee Succesvol |
| Controleer de beschikbaarheid van het product. Product-ID = ongeldig | sder | Mislukt |
2) Integratieniveau
De integratietests worden uitgevoerd op de gebruikersinterface en de database. Maak een bestelling aan met één artikel:
- Een gebruiker opent de website.
- De gebruiker gaat een bestelling plaatsen.
- De gebruiker selecteert een geldig product en aantal en slaat de bestelling op.
- Er zou een bericht moeten verschijnen dat de bestelling succesvol is geplaatst.
- De gebruiker opent de database en controleert of de ordergegevens overeenkomen met de gegevens die op de website zijn ingevoerd.
3) Eind-tot-eindniveau
De bedrijfsprocessen en use cases worden uitgevoerd via de gebruikersinterface. Een bestelling aanmaken met meerdere artikelen:
- Een gebruiker opent de website.
- De gebruiker gaat een bestelling plaatsen.
- De gebruiker zoekt naar een geldig product en de gewenste hoeveelheid en voegt deze toe aan het winkelmandje.
- Andere geldige producten worden met de juiste aantallen toegevoegd en de bestelling wordt opgeslagen. De betaling wordt via een nieuwe betaalmethode uitgevoerd en de bestelling wordt geplaatst.
- Er zou een bericht moeten verschijnen met de tekst “Bestelling succesvol geplaatst”.
- Een tester moet controleren of het hele proces correct verloopt zonder dat de gegevens vertekenen.







