Sobes.tech
Junior

Co je SOAP a jak se používá při testování?

sobes.tech AI

Odpověď od AI

SOAP (Simple Object Access Protocol) je protokol pro výměnu strukturovaných informací v distribuovaném prostředí. Používá se k volání metod vzdálených služeb přes HTTP(S), SMTP nebo jiné protokoly. SOAP zprávy jsou reprezentovány ve formátu XML.

Komponenty SOAP zprávy:

  • Obálka (Envelope): Kořenový prvek, který definuje zprávu a používaný jmenný prostor.
  • Hlavička (Header): Nepovinný prvek pro meta informace (autentifikace, transakce).
  • Tělo (Body): Obsahuje data volání nebo odpovědi služby.
  • Chyba (Fault): Nepovinný prvek v těle, používaný při chybách.

Jak se používá při testování:

  1. Funkční testování:

    • Testování RESTful API prostřednictvím odesílání SOAP požadavků a analýzy odpovědí.
    • Kontrola správnosti obchodní logiky a zpracování dat.
    • Použití nástrojů jako SoapUI, ReadyAPI, Postman (s podporou SOAP).
  2. Automatizace testování:

    • Psaní skriptů pro automatické volání SOAP služeb a validaci odpovědí.
    • Integrace s testovacími rámcemi (JUnit, TestNG, Pytest).
    • Parsování XML odpovědí pro extrakci dat a kontroly.
  3. Zátěžové a stresové testování:

    • Modelování velkého množství současných požadavků na SOAP službu pro hodnocení výkonu a stability.
    • Nástroje: JMeter, LoadRunner.
  4. Testování bezpečnosti:

    • Kontrola zranitelností manipulací s SOAP požadavky.
    • Testování autentifikace a autorizace.

Příklad SOAP požadavku (částečný):

<!-- Obálka -->
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                  xmlns:web="http://www.webservicex.net">
   <!-- Hlavička -->
   <soapenv:Header/>
   <!-- Tělo -->
   <soapenv:Body>
      <web:GetCitiesByCountry>
         <!-- Název země -->
         <web:CountryName>USA</web:CountryName>
      </web:GetCitiesByCountry>
   </soapenv:Body>
</soapenv:Envelope>

Příklad parsování odpovědi s použitím C# a LINQ to XML:

// Předpokládá se, že 'responseXml' obsahuje XML odpověď SOAP
XDocument doc = XDocument.Parse(responseXml);

// Jmenné prostory pro správné hledání prvků
XNamespace soapEnv = "http://schemas.xmlsoap.org/soap/envelope/";
XNamespace web = "http://www.webservicex.net";

// Vyhledání a získání dat z odpovědi
var cities = doc.Descendants(soapEnv + "Body")
                .Descendants(web + "GetCitiesByCountryResponse")
                .Descendants(web + "GetCitiesByCountryResult")
                .ToList(); // Nebo jiný způsob zpracování výsledků

// Příklad kontroly: ujistit se, že seznam není prázdný
Assert.IsTrue(cities.Any(), "Seznam měst by neměl být prázdný.");