Wat is SOA-testen? Tutorial met voorbeeld

Inhoudsopgave:

Anonim

Wat is SOA-testen?

SOA-testen (Service Oriented Architecture) is het testen van de SOA-architectuurstijl waarin de applicatiecomponenten zijn ontworpen om te communiceren via communicatieprotocollen, doorgaans via een netwerk.

In deze tutorial leer je-

  • Wat is SOA?
  • Wat is service?
  • SOA-testen
  • Strategie voor SOA-testen
  • SOA-testmethoden
  • Uitdagingen bij SOA-testen
  • SOA-testtools
  • Gebruiksscenario's voor SOA-testen

Wat is SOA?

SOA is een methode om bedrijfstoepassingen en -processen te integreren om aan de bedrijfsbehoeften te voldoen.

In Software Engineering biedt SOA flexibiliteit en flexibiliteit voor bedrijfsprocessen. De wijzigingen in het proces of de applicatie kunnen worden gericht op een bepaald onderdeel zonder het hele systeem te beïnvloeden.

De softwareontwikkelaars in SOA ontwikkelen of kopen stukjes programma's die SERVICES worden genoemd.

Wat is service?

  • Services kunnen een functionele eenheid van een applicatie of bedrijfsproces zijn, die kan worden hergebruikt of herhaald door een andere applicatie of proces.

    (In de bovenstaande afbeelding is Payment Gateway bijvoorbeeld een service die door elke e-commercesite kan worden hergebruikt. Telkens wanneer een betaling moet worden gedaan, belt / vraagt ​​de e-commercesite de Payment Gateway-service aan. Nadat de betaling is gedaan op een gateway, wordt er een reactie naar de e-commerce website gestuurd)

  • Services zijn eenvoudig te monteren en componenten kunnen eenvoudig opnieuw worden geconfigureerd.
  • Diensten zijn te vergelijken met bouwstenen. Ze kunnen elke gewenste applicatie bouwen. Toevoegen en verwijderen uit de applicatie of het bedrijfsproces is eenvoudig.
  • Services worden meer gedefinieerd door de zakelijke functie die ze uitvoeren dan als stukjes code.

Webservices

Webservices zijn onafhankelijke applicatiecomponenten die via internet beschikbaar zijn.

Ze kunnen worden gepubliceerd, gevonden en kunnen op internet worden gebruikt. Ze kunnen communiceren via internet.

  1. De serviceprovider publiceert de service op internet.
  2. De client zoekt naar een bepaalde webservice in het webserviceregister
  3. Er wordt een URL en de WSDL voor de vereiste webservice geretourneerd.

    >> Met behulp van de WSDL en de URL verloopt de communicatie tussen de serviceprovider en de aanvrager via SOAP-berichten. ​

  4. Wanneer een consument een webservice belt, wordt er een HTTP-verbinding met de provider tot stand gebracht.

    Er wordt een SOAP-bericht gemaakt om de provider te instrueren om de vereiste webservicelogica op te roepen.

  5. Het antwoord dat van de provider wordt ontvangen, is een SOAP-bericht dat wordt ingesloten in het HTTP-antwoord. Dit HTTP-antwoord is het gegevensformaat dat begrijpelijk is voor de consumententoepassing.

Voorbeeld

Een startpagina van een website en een zoekmachine geeft het dagelijkse weerbericht weer. In plaats van het weerberichtgedeelte helemaal te coderen, kan een weerberichtdienst worden gekocht bij een verkoper en in de pagina's worden geïntegreerd.

SOA-testen

SOA bestaat uit verschillende technologieën. Applicaties die zijn gebouwd met SOA hebben verschillende services die losjes zijn gekoppeld.

SOA-testen moeten zich concentreren op 3 systeemlagen

Services-laag

Deze laag bestaat uit de services, services die worden weergegeven door een systeem dat is afgeleid van bedrijfsfuncties.

Bijvoorbeeld -

Overweeg een Wellness-website die bestaat uit

  1. Gewichtstracker
  2. Bloedsuiker Tracker
  3. Bloeddruk Tracker

Trackers tonen de respectievelijke gegevens en de datum waarop ze zijn ingevoerd. Servicelaag bestaat uit de services die de respectieve gegevens uit de database halen.

  • Gewicht Tracker-service
  • Blood Sugar Tracker-service
  • Bloeddruk Tracker-service
  • Aanmeldingsservice

Proceslaag

Proceslaag bestaat uit de processen, een verzameling services die deel uitmaken van een enkele functionaliteit.

De processen kunnen een onderdeel zijn van de gebruikersinterface (bijvoorbeeld - een zoekmachine), een onderdeel van een ETL-tool (om gegevens uit de database te halen).

De belangrijkste focus in deze laag zal liggen op gebruikersinterfaces en processen.

De gebruikersinterface van de gewichtstracker en de integratie ervan met de database is de primaire focus.

De onderstaande functies komen in aanmerking

  1. Nieuwe gegevens toevoegen
  2. Bestaande gegevens bewerken
  3. Nieuwe tracker maken
  4. Gegevens verwijderen

Consumentenlaag

Deze laag bestaat voornamelijk uit gebruikersinterfaces.

Op basis van de laag wordt het testen van een SOA-applicatie verdeeld over drie niveaus.

  1. Service Level
  2. Interface niveau
  3. Einde tot eindniveau
  • De Top Down-benadering wordt gebruikt voor het ontwerpen van tests.
  • De bottom-up benadering wordt gebruikt voor testuitvoering.

Strategie voor SOA-testen

Testplanningsaanpak,

  • De volledige architectuur van de applicatie moet worden begrepen door de SOA-testers.
  • De applicatie moet worden opgesplitst in onafhankelijke services (service, die hun eigen verzoek- en antwoordstructuur heeft en niet afhankelijk is van een andere service om een ​​reactie te vormen).
  • De applicatiestructuur moet worden gereorganiseerd in drie componenten: data, services en front-end applicaties.
  • Alle componenten moeten zorgvuldig worden geanalyseerd en bedrijfsscenario's moeten worden uitgetekend.
  • De bedrijfsscenario's moeten worden geclassificeerd als algemene scenario's en toepassingsspecifieke scenario's.
  • Er moet een traceerbaarheidsmatrix worden opgesteld en alle testcases moeten worden herleid tot bedrijfsscenario's.

Testuitvoeringsaanpak

  • Elk servicecomponent moet worden getest.
  • Integratie Het testen van de servicecomponenten moet worden uitgevoerd om de gegevensstroom door de services en de gegevensintegriteit te valideren.
  • Systeemtesten van het complete model moeten worden uitgevoerd om de gegevensstroom tussen front-end applicatie en database te valideren.
  • Prestatietests moeten worden uitgevoerd voor fijnafstemming en optimale prestaties.

SOA-testmethoden

1) Op gegevens gebaseerd testen op basis van bedrijfsscenario's,

  • Diverse bedrijfsaspecten met betrekking tot het systeem moeten worden geanalyseerd.
  • Scenario's moeten worden ontwikkeld op basis van de integratie van
    • Diverse webservices van de applicatie
    • Webservices en applicatie.
  • Het instellen van gegevens moet gebeuren op basis van de bovenstaande scenario's.
  • De gegevens moeten zo worden opgezet dat ze ook end-to-end-scenario's dekken.

2) Stompjes

  • Er worden dummy-interfaces gemaakt om services te testen.
  • Via deze interfaces kunnen verschillende inputs worden geleverd en de outputs kunnen worden gevalideerd.
  • Wanneer een applicatie een interface naar een externe service gebruikt die niet wordt getest (service van een derde partij), kan een stub worden gemaakt tijdens Integratietesten.

3) Regressietesten

  • Regressietesten op de applicatie moeten worden uitgevoerd als er meerdere releases zijn om de stabiliteit en beschikbaarheid van de systemen te garanderen.
  • Er wordt een uitgebreide regressietestsuite gemaakt voor de services die een belangrijk onderdeel van de applicatie vormen.
  • Deze testsuite kan in meerdere releases van het project worden hergebruikt.

4) Testen op serviceniveau

Service Level Testing omvat het testen van de component op functionaliteit, beveiliging, prestaties en interoperabiliteit.

Elke service moet eerst onafhankelijk worden getest.

5) Functioneel testen

Functionele tests moeten worden uitgevoerd op elke service aan

  • Zorg ervoor dat de service op elk verzoek het juiste antwoord geeft.
  • Juiste fouten worden ontvangen voor verzoeken met ongeldige gegevens, slechte gegevens, enz.
  • Controleer voor elk verzoek en elke reactie voor elke bewerking die de service in runtime moet uitvoeren.
  • Valideer de foutmeldingen wanneer er een fout optreedt op server-, client- of netwerkniveau.
  • Bevestig dat de ontvangen reacties de juiste indeling hebben.
  • Bevestig dat de ontvangen gegevens op het antwoord overeenkomen met de gevraagde gegevens.

6) Beveiligingstests

Het testen van de beveiliging van de webservice is een belangrijk aspect tijdens het testen van het serviceniveau van de SOA-applicatie; dit zorgt voor de veiligheid van de applicatie.

De volgende factoren moeten tijdens het testen worden behandeld:

  • De industriestandaard die is gedefinieerd door WS-Security-tests, moet worden nageleefd door de webservice.
  • Beveiligingsmaatregelen zouden feilloos moeten werken.
  • Versleuteling van gegevens en digitale handtekeningen op de documenten
  • Authenticatie en authorisatie
  • SQL Injection, Malware, XSS, CSRF, andere kwetsbaarheden moeten op de XML worden getest.
  • Denial of Service-aanvallen

7) Prestatietests

Prestatietests van de service moeten worden uitgevoerd, aangezien de services herbruikbaar zijn en mogelijk meerdere applicaties dezelfde service gebruiken.

Bij het testen wordt rekening gehouden met de volgende factoren:

  • 8) Prestaties en functionaliteit van de dienst moeten onder zware belasting worden getest.
  • De prestaties van de service moeten worden vergeleken tijdens het individueel werken en binnen de applicatie waaraan deze is gekoppeld.
  • Er moet een belastingtest van de service worden uitgevoerd
    • om de reactietijd te verifiëren
    • om te controleren op knelpunten
    • om het gebruik van CPU en geheugen te verifiëren
    • om schaalbaarheid te voorspellen

9) Testen op het integratieniveau

  • Het testen van serviceniveaus zorgt ervoor dat alleen de services afzonderlijk goed werken, het is geen garantie voor de werking van de gekoppelde componenten.
  • Integratietesten worden voornamelijk gedaan met de nadruk op de interfaces.
  • Deze fase omvat alle mogelijke bedrijfsscenario's.
  • Het niet-functionele testen van de applicatie moet in deze fase nog een keer worden gedaan. Beveiliging, naleving en prestatietests zorgen voor de beschikbaarheid en stabiliteit van het systeem in alle aspecten.
  • De communicatie- en netwerkprotocollen moeten worden getest om de consistentie van de datacommunicatie tussen de services te valideren.

10) End-to-end testen

Deze fase zorgt ervoor dat de applicatie zowel functioneel als niet-functioneel voldoet aan de business eisen.

De onderstaande items worden tijdens de end-to-end-test getest

  • Alle services werken zoals verwacht na integratie
  • Afhandeling van uitzonderingen
  • Gebruikersinterface van de applicatie
  • Juiste gegevensstroom door alle componenten
  • Bedrijfsproces

Uitdagingen bij SOA-testen

  • Gebrek aan interfaces voor services
  • Het testproces omvat meerdere systemen, waardoor er complexe gegevensbehoeften ontstaan
  • De applicatie is een verzameling van verschillende componenten die de neiging hebben om te veranderen. De behoefte aan regressietesten komt vaker voor.
  • Vanwege de meerlaagse architectuur is het moeilijk om defecten te isoleren.
  • Aangezien de service in verschillende interfaces zal worden gebruikt, is het moeilijk de belasting te voorspellen, waardoor het plannen van prestatietests omslachtig wordt.
  • SOA is een verzameling heterogene technologieën. Voor het testen van een SOA-applicatie zijn mensen met verschillende vaardigheden nodig, wat op zijn beurt de kosten voor planning en uitvoering verhoogt.
  • Omdat de applicatie een integratie is van meerdere services, heeft beveiligingstesten zijn eigen problemen. Validatie van authenticatie en autorisatie is vrij moeilijk.

SOA-testtools

Er zijn veel SOA-testtools op de markt om testers te helpen bij het testen van SOA-applicaties. Hier zijn enkele van de populaire SOA-testtools :

1) SOAP-gebruikersinterface

"SOAP UI" is een open source functionele testtool voor services en API-tests.

  • Desktop applicatie
  • Ondersteunt meerdere protocollen - SOAP, REST, HTTP, JMS, AMF, JDBC
  • Webservices kunnen worden ontwikkeld, gecontroleerd en ingeroepen.
  • Kan ook worden gebruikt voor belastingtests, automatiseringstests en beveiligingstests
  • Stubs kunnen worden gemaakt door MockServices
  • Webserviceverzoeken en -tests kunnen automatisch worden gegenereerd via de webserviceclient.
  • Beschikken over ingebouwde rapportagetools
  • Ontwikkeld door SmartBear

2) iTKO LISA

"LISA" is een productsuite die een functionele testoplossing biedt voor gedistribueerde systemen zoals SOA.

  • Kan ook worden gebruikt voor regressie, integratie, belasting en prestatietests.
  • Ontwikkeld door iTKO (CA Technologies)
  • Kan worden gebruikt om tests te ontwerpen en uit te voeren.

3) HP-servicetest

"Service Test" is een functionele testtool die zowel UI- als shared services-testen ondersteunt

  • Zowel functionele als prestatietests van services kunnen worden gedaan door een enkel script.
  • Geïntegreerd met HP QC.
  • De enorme hoeveelheid service en gegevens kan worden beheerd.
  • Ondersteunt interoperabiliteitstests door JEE-, AXIS- en DotNet-clientomgevingen te simuleren.
  • Ontwikkeld door HP.

4) Parasoft SOA-test

SOA Test is een suite met test- en analysetools die is ontwikkeld voor het testen van API- en API-applicaties.

  • Ondersteunt webservices, REST, JSON, MQ, JMS, TIBCO, HTTP, XML-technologieën.
  • Functioneel, eenheid, integratie, regressie, beveiliging, interoperabiliteit, compliance en prestatietests zijn mogelijk.
  • Stubs kunnen worden gemaakt met Parasoft Virtualize, die intelligent zijn dan SOAP UI.
  • Ontwikkeld door ParaSoft

Gebruiksscenario's voor SOA-testen

Overweeg een e-commerce website, die de onderstaande functies en subfuncties bevat:

Orderverwerking

FASE 1

In de eerste fase van SOA-testen, dwz Test Strategiefase, wordt de applicatie opgesplitst in Services en bedrijfsfuncties.

Laten we hieronder eens kijken naar de Services in de applicatie.

  • Maak een bestelling
  • Controleer de klantstatus
  • Wijzig de bestelstatus
  • Controleer de bestelstatus
  • Controleer inventaris

Zakelijke functies zijn hetzelfde als de functies van de website.

Opmerking: het teststrategiedocument bevat de lijst van de service en de functies die moeten worden getest.

FASE 2

Test Planning-fase. Voor elk niveau worden testcases geschreven.

  1. Einde tot eindniveau. De testcases worden geschreven voor elke business use case en flow.

    Hieronder staan ​​voorbeelden van testcases

    • Maak een bestelling met de actieve gebruiker.
    • Maak een bestelling met een inactieve gebruiker.
    • Maak een bestelling aan met het beschikbare product met bestelhoeveelheid
    • Maak een bestelling aan met het beschikbare product met bestelhoeveelheid> beschikbare hoeveelheid.
    • Maak een bestelling met meerdere artikelen
    • Annuleer een bestelling volledig.
    • Bestelling gedeeltelijk annuleren.
  2. Integratieniveau. Testcases zijn geschreven voor integratie van database en gebruikersinterface.

    Hieronder staan ​​voorbeelden van testcases.

    • Maak een nieuwe bestelling met een enkel artikel. Controleer of de bestelling is aangemaakt in de database.
    • Maak een nieuwe bestelling met een enkel artikel. Controleer of de voor de bestelling berekende prijs correct is.
    • Maak een nieuwe bestelling met een enkel artikel. Controleer of de hoeveelheid van het beschikbare product kleiner is dan het bestelbedrag.
    • Controleer of de status van de bestelling die in de gebruikersinterface wordt weergegeven, dezelfde is als die in de database.
    • Annuleer de bestelling en controleer of de status van de bestelling is gewijzigd in de database.
    • Controleer bij de eerste betaling of de betalingsgegevens die in de gebruikersinterface zijn ingevoerd, in de database zijn opgeslagen.
    • Controleer voor het retourneren van betalingen of de betalingsgegevens in de database worden weergegeven in de gebruikersinterface.
  3. Service Level. Elke service wordt getest op alle gegevenscondities.

Hieronder staan ​​een aantal voorbeelden.

Nee. Bestel Details Bestelvoorwaarde
1 Order creëren. Aantal artikelen = 1 Aantal op bestelling
2 Order creëren. Aantal artikelen> 1 Aantal in bestelling
3 Creëer ordernummer van artikelen = 1 Hoeveelheid op bestelling> Hoeveelheid op database
4 Controleer de bestelstatus Status op database = Actief
5 Controleer de bestelstatus Status op 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

Testuitvoering maakt gebruik van een bottom-up benadering, dat wil zeggen dat eerst het serviceniveau wordt getest, vervolgens het integratieniveau en als laatste end-to-end-testen.

1) Serviceniveau

Laten we overwegen dat de Soapui-tool wordt overwogen voor het testen van de applicatie.

De WSDL en URL worden gebladerd in het testvenster van SOAP.

Het verzoek voor elke service wordt weergegeven in het verzoekvenster.

Door de gegevens aan te passen aan de hand van de testcases op het serviceniveau, worden verzoeken aangemaakt voor elke testcase.

Testgeval

Verzoek

Verwachte reactie

Order creëren. Aantal artikelen = 1 Hoeveelheid op bestelling

x2 2

o3251 Succesvol

Maak order nr. Aantal artikelen> 1Hoeveelheid in bestelling

y11 y2 3

o3251 Succesvol

Maak order nr. Aantal artikelen = 1 Hoeveelheid op bestelling> Hoeveelheid op db

x23 200

null Mislukt

Controleer Order statusStatus op database = Actief

o9876

Active Succesvol

Controleer Order statusStatus op database = Verzonden

o9656

Verzonden Succesvol

Controleer de status van de bestelling Order id = ongeldig

y5686

null Mislukt

Controleer de beschikbaarheid van het product Hoeveelheid product> 0

d34

34yes Succesvol

Controleer productbeschikbaarheid Hoeveelheid product = 0

y34

0no Succesvol

Controleer productbeschikbaarheid Product-id = ongeldig

sder

Mislukt

2) Integratieniveau

De testgevallen op het integratieniveau worden uitgevoerd op de gebruikersinterface en database.

  • Maak een bestelling met een enkel artikel -
  • Een gebruiker opent de website.
  • Gaat een bestelling plaatsen.
  • Selecteert een geldig product en aantal en slaat de bestelling op.
  • Er moet een bericht worden weergegeven dat de bestelling is geplaatst.
  • Een gebruiker opent de database en controleert of de details van de bestelling dezelfde zijn als die op de website zijn ingevoerd.
3) Einde tot eindniveau

De bedrijfsstromen en use cases worden uitgevoerd op de gebruikersinterface.

  • Maak een bestelling met meerdere items -
  • Een gebruiker opent een website.
  • Gaat een bestelling plaatsen.
  • Bij vragen over een geldig product en aantal worden ze toegevoegd aan de winkelwagen.
  • Andere geldige producten worden toegevoegd met geldige hoeveelheden en de bestelling wordt opgeslagen. De betaling gaat via een nieuwe betaalmethode en de bestelling is geplaatst.
  • Er moet een bericht worden weergegeven met de tekst "Bestelling succesvol geplaatst".
  • Een tester moet valideren dat de hele stroom wordt uitgevoerd zonder de gegevens scheef te trekken.

Gevolgtrekking:

Door de juiste strategie voor testen, middelen, tools en compliance te schetsen om een ​​goede service te bieden, kan SOA-testen een volledig en perfect geteste applicatie opleveren.