Sobes.tech
Junior

SOAP nədir və testlərdə necə istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

SOAP (Sadə Obrazlara Asanlıq Protokolu) paylanmış mühitdə strukturlaşdırılmış məlumatların mübadiləsi üçün istifadə olunan protokoldur. Bu, HTTP(S), SMTP və ya digər protokollar vasitəsilə uzaq xidmətlərin metodlarını çağırmaq üçün istifadə olunur. SOAP mesajları XML formatında təqdim olunur.

SOAP mesajının komponentləri:

  • Envelope (Əhatə): Mesajı və istifadə olunan ad məkanını təyin edən əsas element.
  • Header (Başlıq): Meta-məlumatlar üçün könüllü element (təsdiqləmə, əməliyyatlar).
  • Body (Bədən): Xidmətin çağırış və ya cavab məlumatlarını ehtiva edir.
  • Fault (Xəta): Xətalar zamanı istifadə olunan könüllü element.

Testdə necə istifadə olunur:

  1. Funksional testlər:

    • SOAP sorğuları göndərərək RESTful API-ləri test etmək və cavabları analiz etmək.
    • Biznes məntiqini və məlumatların işlənməsini yoxlamaq.
    • SoapUI, ReadyAPI, Postman (SOAP dəstəyi ilə) kimi alətlərdən istifadə.
  2. Avtomatlaşdırma testləri:

    • SOAP xidmətlərini avtomatik çağırmaq və cavabları təsdiqləmək üçün skriptlər yazmaq.
    • Test çərçivələri ilə inteqrasiya (JUnit, TestNG, Pytest).
    • XML cavablarını analiz edərək məlumat çıxarma və yoxlamalar.
  3. Yük və stres testləri:

    • SOAP xidmətinə çoxsaylı eyni vaxtda sorğular modelləşdirmək və performansını və sabitliyini qiymətləndirmək.
    • Alətlər: JMeter, LoadRunner.
  4. Təhlükəsizlik testləri:

    • SOAP sorğularını manipulyasiya edərək zəiflikləri yoxlamaq.
    • Təsdiqləmə və icazə testləri.

SOAP sorğusunun nümunəsi (qismən):

<!-- Envelope -->
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                  xmlns:web="http://www.webservicex.net">
   <!-- Header -->
   <soapenv:Header/>
   <!-- Body -->
   <soapenv:Body>
      <web:GetCitiesByCountry>
         <!-- Ölkə adı -->
         <web:CountryName>USA</web:CountryName>
      </web:GetCitiesByCountry>
   </soapenv:Body>
</soapenv:Envelope>

C# və LINQ to XML istifadə edərək cavabın analizi nümunəsi:

// 'responseXml' XML cavabını ehtiva edir
XDocument doc = XDocument.Parse(responseXml);

// Elementləri düzgün tapmaq üçün ad məkanları
XNamespace soapEnv = "http://schemas.xmlsoap.org/soap/envelope/";
XNamespace web = "http://www.webservicex.net";

// Cavabdan məlumatları tapmaq və çıxarmaq
var cities = doc.Descendants(soapEnv + "Body")
                .Descendants(web + "GetCitiesByCountryResponse")
                .Descendants(web + "GetCitiesByCountryResult")
                .ToList(); // və ya başqa emal üsulu

// Nümunə: siyahının boş olmadığını yoxlamaq
Assert.IsTrue(cities.Any(), "Şəhər siyahısı boş olmamalıdır.");