Testhandledning för webbtjänster: Hur testar man? Lär dig med exempel

Vad är WebService?

Webbtjänster är mekanismen eller mediet för kommunikation genom vilken två applikationer/maskiner kommer att utbyta data oavsett deras understrukna arkitektur och teknik.

Vad är webbtjänsttestning?

Testning av webbtjänster är en typ av mjukvarutestning som validerar webbtjänster. Syftet med Web Services Testing är att kontrollera funktionalitet, tillförlitlighet, prestanda och säkerhet hos ett API (Application Program Interface). Webbtjänsttestning liknar i vissa fall enhetstestning. Du kan testa en webbtjänst manuellt eller skapa din egen automationskod eller använda ett standardautomatiseringsverktyg som Postman.

Varför behövs WebService?

I allmänhet är mjukvaruapplikationer utvecklade för att konsumeras av människor, där en person skickar en förfrågan till en mjukvarutjänst som i sin tur returnerar ett svar i läsbart format.

I den moderna teknikens era om du vill bygga en mjukvaruapplikation behöver du inte bygga allt från grunden. Det finns massor av färdiga tjänster tillgängliga som du kan koppla in i din applikation och du kan börja tillhandahålla dessa tjänster i din applikation.

Till exempel vill du visa väderprognosinformation som du inte behöver samla in, bearbeta och återge data i din applikation. Du kan köpa tjänsterna från personer som redan är väletablerade i att bearbeta och publicera sådan typ av data.

Webbtjänster tillåter oss att göra den här typen av implementeringar.

Som ett exempel, överväg följande webbtjänst

http://www.webservicex.net/stockquote.asmx?op=GetQuote

Det ger aktievärdet för ett företag.

Låt oss hitta aktiekursen för Google (Symbol: GOOG)

Webbtjänsttestning

Svaret XML ger aktiekursen.

Webbtjänsttestning

Denna webbtjänst kan anropas av en programvara som använder SOAP eller HTTP-protokoll.

Web Service Protocols

Webbtjänster kan implementeras på olika sätt, men följande två är de populära implementeringsmetoderna.

  1. SOAP (Simple Object Access Protocol)
  2. REST (Representational State Transfer Architecture)

TVÅL

SOAP är ett standardprotokoll som definieras av W3C-standarden för att skicka och ta emot webbtjänstförfrågningar och svar.

SOAP använder XML-format för att skicka och ta emot begäran och därför är data plattformsoberoende data. SOAP-meddelanden utbyts mellan leverantörens applikationer och den mottagande applikationen inom SOAP-kuverten.

Eftersom SOAP använder det enkla http-transportprotokollet, blockeras inte dess meddelanden av brandväggarna.

REST

REST betyder representativ statsöverföring; det är en arkitektur som vanligtvis körs över HTTP. REST-stilen betonar interaktionen mellan kunder och tjänster, som förstärks genom att ha ett begränsat antal operationer. REST är ett alternativ till SOAP (Simple Object Access Protocol) och istället för att använda XML för begäran använder REST enkel URL i vissa fall. Till skillnad från SOAP använder RESTFUL-applikationer HTTP inbyggda headers för att bära metainformation.

Det finns olika koder som REST använder för att avgöra om användaren har tillgång till API eller inte som kod 200 eller 201 indikerar framgångsrik interaktion med svarskropp medan 400 indikerar en dålig begäran eller begäran URI inte matchar API:erna i systemet. Alla API-begäranparametrar och metodparametrar kan skickas via antingen POST or variabler.

Rest API stöder både XML- och JSON-format för WebServices API-testning. Det är vanligtvis att föredra för Mobil och webbappar eftersom det gör att appar fungerar snabbare och smidigare

wsdl

WSDL (webbtjänster Description Language) är ett XML-baserat språk som kommer att användas för att beskriva tjänsterna som erbjuds av en webbtjänst.

WSDL beskriver alla operationer som erbjuds av den specifika webbtjänsten i XML-format. Den definierar också hur tjänsterna kan anropas, det vill säga vilket ingångsvärde vi har att tillhandahålla och vilket format det kommer att vara på svaret det kommer att generera för varje typ av tjänst.

Hur testar man en webbtjänst?

För att testa webbtjänst kan du

  1. Testa manuellt
  2. Skapa din egen automationskod
  3. Använd ett automatiseringsverktyg från hyllan som SoapUI.

Web Services Automation Testing involverar följande steg –

  1. Förstå WSDL-filen
  2. Bestäm operationerna som en viss webbtjänst tillhandahåller
  3. Bestäm XML-förfrågningsformatet som vi behöver skicka
  4. Bestäm XML-formatet för svaret
  5. Använda ett verktyg eller skriva kod för att skicka förfrågan och validera svaret

Anta att vi vill testa webbtjänst som tillhandahåller valutaomvandlingsfacilitet. Det kommer de aktuella omräkningskurserna mellan de olika ländernas valuta. Denna tjänst kan vi använda i våra applikationer för att konvertera värden från en valuta till en annan valuta.

Låt oss nu titta på ovanstående steg

Steg 1 till 4: Förstå WSDL och bestämma operationer och XML-format

Valuta Convertor WSDL-fil kan ses @ (http://www.webservicex.net/CurrencyConvertor.asmx?wsdl) som ger information om valutan Convertor webbtjänstmetoder som den kommer att stödja, parametern som vi behöver passera och typen av parametrar... etc.

WSDL och bestämmande operationer och XML-format

WSDL och bestämmande operationer och XML-format

Steg 5: Använda ett verktyg eller skriva kod för att skicka förfrågan och validera svaret

Det finns massor av WebService Test-verktyg tillgängliga för att testa SOAP webbtjänst. SoapUI är en av de populära API-verktyg som kommer att hjälpa oss att testa SOAP-webbtjänster. Faktum är att du kan använda vilket programmeringsspråk som helst som kan skicka XML-förfrågan till webbtjänstleverantörens applikation över http och kan analysera och validera svars-XML mot det förväntade resultatet. I den här självstudien för testning av webbtjänster kommer vi att testa webbtjänsten

  1. Använda Java
  2. Använder SoapUI

DEL 1) WebService-testning med Apache Axis2 API (Java).

I allmänhet tar webbtjänsten begäran och skickar svaret i XML-format.

Apache Axis2 API-projekt är ett Java implementerings-API, som kommer att användas för att skapa webbtjänsterna för både serversidan (tjänsteleverantör) och klientsidan (tjänstekonsument).

Axis2 kan skicka SOAP-meddelanden och tar emot och bearbetar SOAP-meddelanden. Vi kan skriva en liten Java program som använder API:et för att skapa webbtjänsten. Axis2 kommer att generera WSDL från Java program som kommer att användas för att kommunicera de tjänster som erbjuds av webbtjänsten. Vi kan använda samma Axis2 för att generera Java class (stub) från WSDL-filen som vi kan använda som ett klientprogram för att generera webbtjänstbegäran, skicka begäran till tjänstens slutpunkt och bearbeta svaret.

  1. I grund och botten kommer vi att skapa en enkel Java program där vi kommer att instansiera stubbklassen.
  2. Med hjälp av stubben kommer vi att anropa förfrågningsmetoden genom att skicka all nödvändig information.
  3. Stub-programmet kommer att konvertera den begäran till XML-begäranformat och skickar den till tjänstens slutpunkt som läser begäran och bearbetar begäran och skickar svaret i XML-format.
  4. XML-svaret kommer att konverteras till Java klass för stubb och återvände till själva programmet.

Låt oss titta på ovanstående steg i detalj

Steg a) Ladda ner axis2 API @ https://axis.apache.org/axis2/Java/core/download.cgi & Ställ in miljövariabeln 'AXIS2_HOME'

WebService Testing med Apache Axis2 API (Java)

Steg b) Skapa en mapp för att behålla alla genererade artefakter

Ex: C:\Axis\Projects\CurrencyConverter

Steg c) Öppna kommandotolken och navigera till mappstrukturen där du vill generera artefakterna och kör följande kommando som genererar stubbarna

%AXIS2_HOME%\bin\WSDL2Java -uri http://www.webservicex.net/CurrencyConvertor.asmx?wsdl -p org.apache.axis2.currencyconvertor -d adb –s

WebService Testing med Apache Axis2 API (Java)

Steg d) När kommandot har körts kommer du att se mappen med nödvändiga filer.

WebService Testing med Apache Axis2 API (Java)

Steg e)I nästa steg i denna testhandledning för webbtjänster måste vi skapa klientprogrammet, genom vilket vi skickar den faktiska begäran med hjälp av de genererade stubbarna. Öppna förmörkelsen och skapa den nya Java projekt och välj mappen som vi har skapat ovan.

WebService Testing med Apache Axis2 API (Java)

Steg f) Lägg till alla axis2-relaterade jars till projektbyggningsvägen, som kommer att finnas där i lib-mappen i axis2-mappen

(till exempel: C:\Axis\axis2-1.6.2\lib)

WebService Testing med Apache Axis2 API (Java)

Steg g) Skapa en ny Java klass (ex: klient.Java) och instansiera stubbobjekt. Med hjälp av stubbobjektet kan vi anropa alla de metoder som stöds för den specifika webbtjänsten.

WebService Testing med Apache Axis2 API (Java)

Client.Java Program
package org.apache.axis2.currencyconvertor;
import org.apache.axis2.currencyconvertor.CurrencyConvertorStub.ConversionRate;
import org.apache.axis2.currencyconvertor.CurrencyConvertorStub.ConversionRateResponse;
import org.apache.axis2.currencyconvertor.CurrencyConvertorStub.Currency;

public class Client {
 public static void main(Java.lang.String args[]) {

  try {

       //Create the stub object by passing the service end point url
       CurrencyConvertorStub stub = new CurrencyConvertorStub("http://www.webservicex.net/CurrencyConvertor.asmx");
       //ConversionRate is the class which we have to use mention the from and to currency
       //ConversionRate object will be the parameter for the conversionRate operation
       ConversionRate conversionRate = new ConversionRate();
       conversionRate.setFromCurrency(Currency.USD);
       conversionRate.setToCurrency(Currency.INR);

       //Create the ConversionRateResponse object, which is going to be used to catch the response
       //call the conversionRate service using the stub object
       ConversionRateResponse conversionRateResponse = stub.conversionRate(conversionRate);

       //We can use the conversionRateResponse object to retrieve the response of the ConversionRate Service
       System.out.println("Conversion Rate from INR to USD : " + conversionRateResponse.getConversionRateResult());

       } catch (Exception e) {
       e.printStackTrace();
      }
    }
}

DEL 2) Hur man testar med SoapUI Web Service

I SoapUI

  1. Gå till Arkiv > Nytt tvålprojekt
  2. Ange projektets namn och WSDL URI-platsen
  3. klicka på OK

Testa med SoapUI Web Service

  1. Expandera den första begäran och dubbelklicka på 'Request1'. Den kommer att visa SOAP-begäran i XML-format.
  2. Ange Från Valuta och Till Valuta
  3. Klicka på knappen Skicka
  4. Svars-XML kommer att visas på höger sida.

Testa med SoapUI Web Service

Som du kanske kan dra slutsatsen, påskyndar användningen av WebService Test-verktyg som SoapUI din Web Services Automation Testing-ansträngning. Därför kommer SoapUi att vara fokus för vårt lärande i de efterföljande handledningarna.

Sammanfattning

  • Programvaruapplikationer kommunicerar och utbyter data med varandra med hjälp av en webbtjänst
  • SOAP och REST är två populära protokoll för att skapa en webbtjänst
  • SOAP stöder XML-baserat datautbyte
  • REST stödjer XML, Json eller utbyte av data i enkel URL för WebServices API-testning.
  • WSDL är ett XML-baserat språk som kommer att användas för att beskriva tjänsterna som erbjuds av en webbtjänst. SOAP definieras med WSDL.
  • För att testa WebService kan du
    • Skapa din egen kod. Använd till exempel Axis2 API för Java
    • Använd WebService Test Automation-verktyg som SoapUI
  • Automationsverktyg som SoapUI kommer att sätta fart på dina webbtjänster Automationstestning, kommer att kräva mindre kodningsansträngning jämfört med att skapa din egen kod med Axis2 API

Vanliga Frågor

Webbtjänst Web API
Definierat av W3C är all kommunikation och datautbyte baserat på XML Web API-kommunikation och datautbyte kan vara XML, JSON eller vanlig data
Den har definierade standarder – WSDL Ingen definierad standard
Du kan inte komprimera data men du kan komprimera HTML-begäran Du kan komprimera data
Exempel: TVÅL Exempel: REST

Läs mer om Web API-testning

Denna testhandledning för webbtjänster är möjlig med bidrag från Mr. Narender Reddy Nukala