Tutorial de testare a serviciilor web cu exemplu

โšก Rezumat inteligent

Testarea serviciilor web valideazฤƒ funcศ›ionalitatea, fiabilitatea, performanศ›a ศ™i securitatea unei API care permite aplicaศ›iilor sฤƒ facฤƒ schimb de date, utilizรขnd protocoale SOAP sau REST, o descriere WSDL ศ™i instrumente precum SoapUI sau personalizat Java cod.

  • ๐ŸŒ Serviciu web: Un serviciu web permite douฤƒ aplicaศ›ii sฤƒ facฤƒ schimb de date printr-o reศ›ea.
  • ๐Ÿงช Ce verificฤƒ: Testarea verificฤƒ funcศ›ionalitatea, fiabilitatea, performanศ›a ศ™i securitatea.
  • ๐Ÿ“จ SOAP ศ™i REST: SOAP foloseศ™te plicuri XML; REST foloseศ™te HTTP simplu ศ™i URLs.
  • ๐Ÿ“„ WSDL: Un fiศ™ier WSDL este un fiศ™ier XML care descrie operaศ›iunile oferite de un serviciu SOAP.
  • ๐Ÿ› ๏ธ Instrumente ศ™i Code: Testele folosesc instrumente precum SoapUI sau personalizat Java cu Apache Axis2.
  • ๐Ÿค– Asistenศ›ฤƒ AI: Inteligenศ›a artificialฤƒ genereazฤƒ cazuri de testare API ศ™i valideazฤƒ automat rฤƒspunsurile.

Tutorial de testare a serviciilor web

Ce este WebService?

Serviciile web sunt mecanismul sau mijlocul de comunicare prin care douฤƒ aplicaศ›ii/maศ™ini vor face schimb de date, indiferent de arhitectura subliniatฤƒ ศ™i de tehnologie.

Ce este testarea serviciului web?

Testarea serviciilor web este un tip de testare software care valideazฤƒ serviciile Web. Scopul Testฤƒrii Serviciilor Web este de a verifica funcศ›ionalitatea, fiabilitatea, performanศ›a ศ™i securitatea unui API (Interfaศ›a Programului de Aplicaศ›ie). Testarea serviciului web este similarฤƒ cu testarea unitarฤƒ รฎn unele cazuri. Puteศ›i testa manual un serviciu web sau puteศ›i crea propriul cod de automatizare sau puteศ›i utiliza un instrument de automatizare disponibil, cum ar fi Postman.

De ce este nevoie de WebService?

รŽn general, aplicaศ›iile software sunt dezvoltate pentru a fi consumate de fiinศ›ele umane, รฎn cazul รฎn care o persoanฤƒ trimite o solicitare unui serviciu de software care, la rรขndul sฤƒu, returneazฤƒ un rฤƒspuns รฎn format care poate fi citit de om.

รŽn epoca modernฤƒ a tehnologiei, dacฤƒ doriศ›i sฤƒ construiศ›i o aplicaศ›ie software, nu trebuie sฤƒ construiศ›i totul de la zero. Existฤƒ o mulศ›ime de servicii gata fฤƒcute disponibile pe care le puteศ›i conecta la aplicaศ›ia dvs. ศ™i puteศ›i รฎncepe sฤƒ furnizaศ›i acele servicii รฎn aplicaศ›ia dvs.

De exemplu, doriศ›i sฤƒ afiศ™aศ›i informaศ›ii despre prognoza meteo de care nu aveศ›i nevoie pentru a colecta, procesa ศ™i reda datele รฎn aplicaศ›ia dvs. Puteศ›i cumpฤƒra serviciile de la persoane care deja s-au consacrat รฎn prelucrarea ศ™i publicarea unor astfel de date.

Serviciile web ne permit sฤƒ facem acest tip de implementฤƒri.

Ca exemplu, luaศ›i รฎn considerare urmฤƒtorul WebService

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

Oferฤƒ valoare acศ›iunilor unei companii.

Sฤƒ aflฤƒm preศ›ul acศ›iunii pentru Google (Simbol: GOOG)

Testarea serviciului web

Rฤƒspunsul XML oferฤƒ preศ›ul acศ›iunilor.

Testarea serviciului web

Acest serviciu web poate fi apelat de o aplicaศ›ie software folosind protocolul SOAP sau HTTP.

Protocoale de servicii web

Serviciile web pot fi implementate รฎn moduri diferite, dar urmฤƒtoarele douฤƒ sunt abordฤƒrile populare de implementare.

  1. SOAP (Protocol simplu de acces la obiecte)
  2. REST (Arhitectura de transfer de stat reprezentativ)

SOAP

SOAP este un protocol standard definit de Standardul W3C pentru trimiterea ศ™i primirea cererilor ศ™i rฤƒspunsurilor de servicii web.

SOAP foloseศ™te Format XML pentru trimiterea ศ™i primirea cererii ศ™i, prin urmare, datele sunt date independente de platformฤƒ. Mesajele SOAP sunt schimbate รฎntre aplicaศ›iile furnizorului ศ™i aplicaศ›ia care primeศ™te รฎn plicurile SOAP.

Deoarece SOAP foloseศ™te protocolul simplu de transport http, mesajele sale nu sunt blocate de firewall-uri.

REST

REST รฎnseamnฤƒ REprezentational State Transfer (Transfer de Stฤƒri Reprezentaศ›ionale); este o arhitecturฤƒ care ruleazฤƒ รฎn general pe HTTP. Stilul REST pune accentul pe interacศ›iunile dintre clienศ›i ศ™i servicii, care sunt รฎmbunฤƒtฤƒศ›ite printr-un numฤƒr limitat de operaศ›iuni. REST este o alternativฤƒ la SOAP (Simple Object Access Protocol) ศ™i รฎn loc sฤƒ utilizeze XML pentru solicitฤƒri, REST foloseศ™te protocol simplu... URL รฎn unele cazuri. Spre deosebire de SOAP, aplicaศ›iile RESTFUL utilizeazฤƒ antete HTTP รฎncorporate pentru a transporta meta-informaศ›ii.

Existฤƒ diverse coduri pe care REST le foloseศ™te pentru a determina dacฤƒ utilizatorul are sau nu acces la API, precum codul 200 sau 201 indicฤƒ o interacศ›iune reuศ™itฤƒ cu corpul rฤƒspunsului, รฎn timp ce 400 indicฤƒ o solicitare greศ™itฤƒ sau URI-ul cererii nu se potriveศ™te cu API-urile din sistem. Toศ›i parametrii de solicitare API ศ™i parametrii metodei pot fi trimiศ™i prin oricare POST or GET variabile.

Rest API acceptฤƒ atรขt formatul XML, cรขt ศ™i JSON pentru testarea WebServices API. Este de obicei preferat pentru Mobil ศ™i aplicaศ›ii web, deoarece face ca aplicaศ›ia sฤƒ funcศ›ioneze mai rapid ศ™i mai uศ™or

wsdl

WSDL (Servicii web Description Language) este un limbaj bazat pe XML care va fi folosit pentru a descrie serviciile oferite de un serviciu web.

WSDL descrie toate operaศ›iunile oferite de serviciul web particular รฎn format XML. De asemenea, defineศ™te cum pot fi apelate serviciile, adicฤƒ ce valoare de intrare trebuie sฤƒ furnizฤƒm ศ™i care va fi formatul rฤƒspunsului pe care รฎl va genera pentru fiecare tip de serviciu.

Cum se testeazฤƒ un serviciu web?

Pentru a testa serviciul web, puteศ›i

  1. Testaศ›i manual
  2. Creeazฤƒ-ศ›i propria automatizare Code
  3. Foloseศ™te un instrument de automatizare standard, cum ar fi SoapUI.

Testarea automatizฤƒrii serviciilor web implicฤƒ urmฤƒtorii paศ™i โ€“

  1. รŽnศ›elegeศ›i fiศ™ierul WSDL
  2. Determinaศ›i operaศ›iunile pe care le oferฤƒ un anumit serviciu web
  3. Determinaศ›i formatul cererii XML pe care trebuie sฤƒ-l trimitem
  4. Determinaศ›i formatul XML de rฤƒspuns
  5. Utilizarea unui instrument sau cod de scriere pentru a trimite cererea ศ™i a valida rฤƒspunsul

Sฤƒ presupunem cฤƒ vrem sฤƒ testฤƒm serviciul web care oferฤƒ Facilitatea de conversie a monedei. Va fi ratele de conversie curente รฎntre moneda diferitelor ศ›ฤƒri. Acest serviciu รฎl putem folosi รฎn aplicaศ›iile noastre pentru a converti valorile dintr-o monedฤƒ รฎn cealaltฤƒ monedฤƒ.

Acum sฤƒ ne uitฤƒm la paศ™ii de mai sus

Pasul 1 pรขnฤƒ la 4: รŽnศ›elegerea WSDL ศ™i determinarea operaศ›iunilor ศ™i formatelor XML

Monedฤƒ Convertor Fiศ™ierul WSDL poate fi vฤƒzut @ (http://www.webservicex.net/CurrencyConvertor.asmx?wsdl) care va oferi informaศ›iile despre Moneda Convertor metodele de servicii web pe care le va suporta, parametrul pe care trebuie sฤƒ-l transmitem ศ™i tipul de parametri... etc.

WSDL ศ™i determinarea operaศ›iunilor ศ™i formatelor XML

WSDL ศ™i determinarea operaศ›iunilor ศ™i formatelor XML

Pasul 5: Utilizarea unui instrument sau cod de scriere pentru a trimite cererea ศ™i a valida rฤƒspunsul

Existฤƒ numeroase instrumente de testare WebService disponibile pentru testarea serviciilor web SOAP. SoapUI este una dintre cele populare instrument API care ne va ajuta sฤƒ testฤƒm serviciile web SOAP. De fapt, puteศ›i utiliza orice limbaj de programare care este capabil sฤƒ trimitฤƒ cererea XML cฤƒtre aplicaศ›ia furnizorului de servicii web prin intermediul http ศ™i capabil sฤƒ analizeze ศ™i sฤƒ valideze rฤƒspunsul XML รฎn raport cu rezultatul aศ™teptat. รŽn acest tutorial de testare a serviciilor web, vom testa serviciul web

  1. Utilizarea Java
  2. Utilizarea SoapUI

PARTEA 1) Testarea serviciului web folosind API-ul Apache Axis2 (Java).

รŽn general, serviciul web preia cererea ศ™i trimite rฤƒspunsul รฎn format XML.

Proiectul Apache Axis2 API este un Java implementare API, care va fi folosit pentru a crea serviciile Web atรขt pentru partea server (furnizor de servicii), cรขt ศ™i pentru partea client (consumator de servicii).

Axis2 este capabil sฤƒ trimitฤƒ mesaje SOAP ศ™i sฤƒ primeascฤƒ ศ™i sฤƒ proceseze mesajele SOAP. Putem scrie un mic Java program folosind API-ul pentru a crea serviciul web. Axis2 va genera WSDL din Java program care va fi folosit pentru a comunica serviciile oferite de serviciul web. Putem folosi aceeaศ™i Axฤƒ2 pentru a genera Java clasa (stub) din fiศ™ierul WSDL pe care รฎl putem folosi ca program client pentru a genera cererea de serviciu web, pentru a trimite cererea la punctul final al serviciului ศ™i pentru a procesa rฤƒspunsul.

  1. Practic vom crea un simplu Java program รฎn care vom instanศ›ia clasa stub.
  2. Folosind stub-ul vom invoca metoda de solicitare prin transmiterea tuturor informaศ›iilor necesare.
  3. Programul Stub va converti cererea รฎn format de cerere XML ศ™i รฎi va trimite punctul final al serviciului care va citi cererea ศ™i va procesa cererea ศ™i trimite rฤƒspunsul รฎn format XML.
  4. Rฤƒspunsul XML va fi convertit รฎn Java clasฤƒ cu stub ศ™i a revenit la programul propriu-zis.

Sฤƒ ne uitฤƒm la paศ™ii de mai sus รฎn detaliu

Pasul a) Descฤƒrcaศ›i API-ul axis2 @ https://axis.apache.org/axis2/Java/core/download.cgi & Setaศ›i variabila de mediu โ€žAXIS2_HOMEโ€

Testarea serviciului web utilizรขnd API-ul Apache Axis2 (Java)

Pasul b) Creaศ›i un folder pentru a pฤƒstra toate artefactele generate

Ex: C:\Axis\Projects\CurrencyConverter

Pasul c) Deschideศ›i promptul de comandฤƒ ศ™i navigaศ›i la structura folderului รฎn care doriศ›i sฤƒ generaศ›i artefactele ศ™i rulaศ›i urmฤƒtoarea comandฤƒ care va genera stub-urile

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

Testarea serviciului web utilizรขnd API-ul Apache Axis2 (Java)

Pasul d) Odatฤƒ ce comanda este executatฤƒ cu succes, veศ›i vedea folderul cu fiศ™ierele necesare.

Testarea serviciului web utilizรขnd API-ul Apache Axis2 (Java)

Pasul e) รŽn urmฤƒtorul pas al acestui tutorial de testare a serviciilor web, trebuie sฤƒ creฤƒm programul client, prin care vom trimite cererea realฤƒ folosind stub-urile generate. Deschide eclipsa ศ™i creeazฤƒ noua Java proiect ศ™i selectaศ›i folderul pe care l-am creat mai sus.

Testarea serviciului web utilizรขnd API-ul Apache Axis2 (Java)

Pasul f) Adฤƒugaศ›i toate borcanele legate de axa 2 la calea de construire a proiectului, care va fi acolo รฎn folderul lib al folderului software axis2

(de exemplu: C:\Axis\axis2-1.6.2\lib)

Testarea serviciului web utilizรขnd API-ul Apache Axis2 (Java)

Pasul g) โ€‹โ€‹Creaศ›i un nou Java clasa (ex: Client.Java) ศ™i instanศ›iaศ›i obiectul stub. Folosind obiectul stub putem apela toate metodele acceptate ale serviciului web particular.

Testarea serviciului web utilizรขnd API-ul Apache Axis2 (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();
      }
    }
}

PARTEA 2) Cum se testeazฤƒ folosind SoapUI Serviciu web

In SoapUI

  1. Accesaศ›i Fiศ™ier > Proiect nou Soap
  2. Introduceศ›i numele proiectului ศ™i locaศ›ia URI-ului WSDL
  3. Faceศ›i clic pe OK

Testare folosind SoapUI Serviciu web

  1. Extindeศ›i prima solicitare ศ™i faceศ›i dublu clic pe โ€žSolicitare1โ€. Acesta va afiศ™a cererea SOAP รฎn format XML.
  2. Introduceศ›i De la Moneda ศ™i Cฤƒtre Moneda
  3. Faceศ›i clic pe butonul de trimitere
  4. XML de rฤƒspuns va fi afiศ™at รฎn panoul din dreapta.

Testare folosind SoapUI Serviciu web

Dupฤƒ cum puteศ›i concluziona, utilizarea instrumentelor de testare WebService, cum ar fi SoapUI accelereazฤƒ efortul de testare a automatizฤƒrii serviciilor web. Prin urmare, SoapUi va fi punctul central al รฎnvฤƒศ›ฤƒrii noastre รฎn tutorialele urmฤƒtoare.

รŽntrebฤƒri frecvente

Un serviciu web este definit de W3C ศ™i schimbฤƒ date folosind XML cu un standard WSDL, de exemplu SOAP. O API web este mai amplฤƒ: poate schimba XML, JSON sau date simple fฤƒrฤƒ un standard fix, de exemplu REST, ศ™i poate comprima datele.

Instrumentele comune de testare a serviciilor web ศ™i a API-urilor includ SoapUI ศ™i ReadyAPI pentru SOAP ศ™i REST, Postman pentru REST, Apache JMeter pentru testarea รฎncฤƒrcฤƒrii ศ™i REST Assured pentru bazate pe cod Java teste. SoapUI este utilizat pe scarฤƒ largฤƒ pentru serviciile SOAP.

Testarea unitarฤƒ verificฤƒ o singurฤƒ funcศ›ie รฎn mod izolat, de obicei de cฤƒtre dezvoltator. Testarea API verificฤƒ comportamentul unui serviciu prin intermediul interfeศ›ei sale, inclusiv cereri, rฤƒspunsuri, coduri de stare ศ™i date, รฎn toate componentele ศ™i adesea fฤƒrฤƒ cod sursฤƒ.

Inteligenศ›a artificialฤƒ citeศ™te o specificaศ›ie WSDL sau OpenAPI pentru a genera cereri ศ™i aserศ›iuni, creeazฤƒ date de testare realiste ศ™i semnaleazฤƒ rฤƒspunsurile anormale. Auto-repararea prin รฎnvฤƒศ›are automatฤƒ menศ›ine testele reuศ™ite atunci cรขnd sarcinile utile se modificฤƒ, reducรขnd รฎntreศ›inerea manualฤƒ a testelor serviciilor web.

Da. Inteligenศ›a artificialฤƒ poate analiza o definiศ›ie de serviciu, poate produce sarcini utile de solicitare valide ศ™i nevalide, poate prezice condiศ›ii limitฤƒ ศ™i poate propune aserศ›iuni. Aceastฤƒ generare automatฤƒ รฎmbunฤƒtฤƒศ›eศ™te acoperirea ศ™i reduce efortul manual de scriere a cazurilor de testare SOAP sau REST.

Rezumaศ›i aceastฤƒ postare cu: