SOAP

Простий протокол доступу до об'єктів

Занурюємося у світ SOAP – простий, але потужний протокол для обміну даними у додатках.

SOAP (Simple Object Access Protocol)

це протокол обміну структурованими повідомленнями між комп'ютерами у розподіленій мережі. Він використовується для взаємодії веб-сервісів і базується на стандартах XML для форматування повідомлень.

Основні принципи SOAP

SOAP - це XML-based протокол, який забезпечує стандартизований спосіб обміну повідомленнями між програмами. SOAP заснований на архітектурі клієнт-сервер, де клієнт надсилає запити, а сервер відповідає.

XML-формат

SOAP-повідомлення є XML-документами, які легко читаються і обробляються.

Незалежність від мови та платформи

SOAP працює незалежно від мови програмування та операційної системи.

Стандартність

SOAP є відкритим стандартом, підтримуваним багатьма компаніями та розробниками.

Широке застосування

SOAP широко використовується в багатьох галузях, включаючи веб-сервіси, інтеграцію програм та мобільні програми.

Структура SOAP-повідомлення

SOAP-повідомлення мають чітку структуру, яка складається із заголовка та тіла повідомлення.

Заголовок

Містить інформацію про маршрутизацію, автентифікацію та інші метадані.

Тіло

Містить фактичні дані, що передаються між програмами.

Створення SOAP-запитів

SOAP-запити надсилаються клієнтом та містять інформацію про те, що клієнт хоче отримати від сервера.

Приклад SOAP-запиту

<soapenv:Envelope xmlns:soapenv=»http://schemas.xmlsoap.org/soap/envelope/»> <soapenv:Header/> <soapenv:Body> <ns1:GetWeatherData xmlns:ns1=»http://www.example.com/weather/»> <ns1:City>London</ns1:City> </ns1:GetWeatherData> </soapenv:Body> </soapenv:Envelope>

Аналіз SOAP-відповідей

SOAP-відповіді повертаються сервером і містять результат запиту, надісланого клієнтом.

Обробка відповіді

Перевіряється код стану та наявність помилок.

Вилучення даних

Дані з тіла повідомлення вилучаються та аналізуються.

Перевірка відповідності

Дані порівнюються з очікуваними результатами.

Інструменти для тестування SOAP

Багато інструментів доступні для тестування SOAP-сервісів.

Практичні приклади SOAP-взаємодії

SOAP використовується у різних сферах.

01

Веб-сервіси

SOAP-сервіси надають доступ до функціональності через мережу.

02

Інтеграція додатків

SOAP дозволяє програмам різних платформ обмінюватися даними.

03

Мобільні додатки

SOAP-сервіси використовуються для взаємодії мобільних додатків із серверною частиною.

Інтеграція SOAP до автоматизованих тестів

Автоматизація тестування SOAP-сервісів дозволяє заощадити час та ресурси.

Автоматизація

Тести виконуються автоматично, що дозволяє скоротити час тестування.

Повторюваність

Тести можуть бути виконані багато разів, що дозволяє гарантувати стабільність роботи.

Звітність

Тести надають детальні звіти про результати.

Тестування SOAP API

SOAP сервер надає три методи:

  1. get_post_count: Повертає кількість опублікованих постів
  2. get_latest_posts: Повертає задану кількість останніх постів
  3. create_contact_form_entry: Створює новий запис контактної форми.

Наш SOAP сервер доступний за адресою: https://dev.emeli.in.ua/wp-admin/admin-ajax.php?action=emeli_soap

Тепер давайте протестуємо кожен метод у Postman

Метод get_post_count

 

    • Створіть новий запит POST на URL https://dev.emeli.in.ua/wp-admin/admin-ajax.php?action=emeli_soap
    • У заголовках додайте:
      • Key: Content-Type
      • Value: text/xml
    • У тілі запиту використовуйте наступний XML:

      <soapenv:Envelope xmlns:soapenv=»http://schemas.xmlsoap.org/soap/envelope/» xmlns:urn=»urn:emeli_soap»>
      <soapenv:Header/>
      <soapenv:Body>
      <urn:get_post_count/>
      </soapenv:Body>
      </soapenv:Envelope>

Пояснення:

Метод get_post_count відправляє SOAP-запит на сервер для одержання кількості постів.
Давайте розберемо цей запит за кроками:

URL та метод

Запит надсилається на адресу:

https://dev.emeli.in.ua/wp-admin/admin-ajax.php?action=emeli_soap

Метод - це POSTщо означає, що ми надсилаємо дані на сервер. URL містить параметр action=emeli_soap, що вказує на те, що сервер обробить SOAP-запит, пов'язаний з функціональністю emeli_soap.

Заголовки (Headers)

Щоб сервер правильно розпізнав тип даних, ми вказуємо заголовок Content-Type:

  • Key: Content-Type
  • Value: text/xml

Цей заголовок говорить серверу, що дані, які ми надсилаємо, представлені у форматі XML, що є стандартним для SOAP-запитів.

Тіло запиту (Request Body)

SOAP-запит передає XML-документ у тілі, що містить необхідні дані для виконання певної команди. У вашому випадку це:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:emeli_soap">
<soapenv:Header/>
<soapenv:Body>
<urn:get_post_count/>
</soapenv:Body>
</soapenv:Envelope>

Розбір XML:

  • <soapenv:Envelope>: Оболонка, яка означає, що це SOAP-повідомлення.
    • xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/": Вказує на простір імен SOAP (стандартна URL-адреса, що використовується для SOAP-запитів).
    • xmlns:urn="urn:emeli_soap": Визначає простір імен для конкретного сервісу, в даному випадку – для веб-служби emeli_soap.
  • <soapenv:Header/>: Заголовок в SOAP-повідомленні, який в даному випадку порожній (немає необхідності передавати додаткові дані).
  • <soapenv:Body>: Основна частина запиту, де передається дія.
    • <urn:get_post_count/>: Це метод, який викликається Він має повернути кількість постів.

Очікувана відповідь

Коли сервер отримає цей запит, він має виконати метод get_post_count та повернути результат у вигляді SOAP-відповіді з кількістю постів на сайті.

<?xml version=»1.0″ encoding=»ISO-8859-1″?>
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle=»http://schemas.xmlsoap.org/soap/encoding/» xmlns:SOAP-ENV=»http://schemas.xmlsoap.org/soap/envelope/» xmlns:xsd=»http://www.w3.org/2001/XMLSchema» xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» xmlns:SOAP-ENC=»http://schemas.xmlsoap.org/soap/encoding/»>
<SOAP-ENV:Body>
<ns1:get_post_countResponse xmlns:ns1=»urn:emeli_soap»>
<return xsi:type=»xsd:integer»>757</return>
</ns1:get_post_countResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Відповідь, яку ви отримали, показує, що запит успішно оброблено, і сервер повернув кількість постів-- 757.

Метод get_latest_posts

 

    • Використовуйте ту саму URL та заголовки
    • У тілі запиту використовуйте:

      <soapenv:Envelope xmlns:soapenv=»http://schemas.xmlsoap.org/soap/envelope/» xmlns:urn=»urn:emeli_soap»>
      <soapenv:Header/>
      <soapenv:Body>
      <urn:get_latest_posts>
      <count>5</count>
      </urn:get_latest_posts>
      </soapenv:Body>
      </soapenv:Envelope>

Пояснення:

Цей SOAP-запит відправляється для отримання останніх 5 постів із сервера, використовуючи метод get_latest_posts. Р
Розберемо запит по елементам:

1. <soapenv:Envelope>

Это основной элемент, который содержит всё SOAP-сообщение. Он обозначает «оболочку» для запроса.

  • xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/": Простір імен (namespace), який вказує, що це повідомлення відповідає специфікації SOAP.
  • xmlns:urn="urn:emeli_soap": Простір імен для веб-служби emeli_soap. Воно пов'язане з функціональністю конкретного SOAP-сервісу, на який надсилається запит.

2. <soapenv:Header/>

Цей елемент призначений для передачі заголовків, але в цьому запиті він порожній. Зазвичай у заголовках передають інформацію, таку як автентифікація або метадані, необхідні обробки запиту, але це не потрібно.

3. <soapenv:Body>

Це основна частина SOAP-запиту, що містить конкретний метод та його параметри.

  • <urn:get_latest_posts>: Метод, який викликається на сервері В даному випадку це get_latest_posts - Отримання останніх постів.
    • xmlns:urn="urn:emeli_soap": Простір імен, який вказує, що метод належить до веб-служби emeli_soap.

4. <count>5</count>

Це параметр, що передається методом get_latest_posts, який вказує на кількість постів, які потрібно повернути. У цьому випадку передано значення 5що означає, що сервер повинен повернути останні 5 постів.

Метод create_contact_form_entry

  • Використовуйте ту саму URL та заголовки
  • У тілі запиту використовуйте:

    <soapenv:Envelope xmlns:soapenv=»http://schemas.xmlsoap.org/soap/envelope/» xmlns:urn=»urn:emeli_soap»>
    <soapenv:Header/>
    <soapenv:Body>
    <urn:create_contact_form_entry>
    <name>Иван Иваненко</name>
    <email>ivan@ivanenko.com</email>
    <message>Это сообщение через SOAP</message>
    </urn:create_contact_form_entry>
    </soapenv:Body>
    </soapenv:Envelope>

Пояснення

Цей SOAP-запит використовується для надсилання даних контактної форми через метод create_contact_form_entryРозберемо його за елементами:

1. <soapenv:Envelope>

Цей елемент є оболонкою для SOAP-запиту, яка містить всю структуру повідомлення.

  • xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/": Простір імен, який вказує на те, що повідомлення відповідає специфікації SOAP.
  • xmlns:urn="urn:emeli_soap": Простір імен, пов'язаний з веб-службою emeli_soap, до якої надсилається запит.

2. <soapenv:Header/>

Цей елемент призначений для заголовків повідомлення, але цей запит порожній. Заголовки можуть містити додаткову інформацію, таку як автентифікація або параметри сеансу, але це не потрібно.

3. <soapenv:Body>

Основна частина SOAP-запиту, де знаходяться дані, передані серверу до виконання конкретного методу.

  • <urn:create_contact_form_entry>: Метод, який викликається на сервері В даному випадку це create_contact_form_entryякий, судячи з назви, опрацьовує дані форми зворотного зв'язку.
    • Простір імен urn="urn:emeli_soap" вказує, що цей метод належить веб-службі emeli_soap.

4. Передані параметри

Усередині методу передаються три параметри, які відповідають полям контактної форми:

  • <name>: Ім'я відправника. В даному випадку це Иван Иваненко.
  • <email>: Електронна пошта відправника. В даному випадку це ivan@ivanenko.com.
  • <message>: Повідомлення, надіслане користувачем через контактну форму. Тут це "Це повідомлення через SOAP".

Завдання для самостійної роботи

Завдання 1: Обробка помилок

  • Создайте копию запроса «Get Latest Posts».
  • Змініть XML, вказавши негативну кількість постів:
     
    <urn:get_latest_posts> <count>-1</count> </urn:get_latest_posts>
  • Надішліть запит і вивчіть, як API обробляє некоректні дані.

Завдання 2: Створення тестів у Postman

  • Откройте вкладку «Tests» в запросе «Get Post Count».
  • Додайте наступний JavaScript код для перевірки відповіді:

    var xmlResponse = xml2Json(responseBody); var postCount = parseInt(xmlResponse['SOAP-ENV:Envelope']['SOAP-ENV:Body']['ns1:get_post_countResponse']['return']);pm.test("Post count is a positive number", function () { pm.expect(postCount).to.be.above(0); });
  • Запустіть запит та перевірте результати тесту.
  • Створіть аналогічні випробування для інших запитів.

Бажаєте більше дізнатися про тестування SOAP API?


Приєднуйтесь до нашого місячного курсу, де ви отримаєте повний посібник із тестування SOAP API, включаючи налаштування, інтеграцію та автоматизацію тестів. Практичні заняття допоможуть вам освоїти всі ключові аспекти та впровадити SOAP у ваші QA-процеси. Не пропустіть можливість покращити свої навички та підвищити професійний рівень!

Рекомендовані курси

SELENIUM WEBDRIVER

JAVA QA BASIC AUTOMATION

Переваги

  • Освоєння мови програмування Java Java - це одна з найпопулярніших мов програмування в індустрії програмного забезпечення. Вивчення Java дозволить вам працювати з великою кількістю інструментів і технологій в області розробки та автоматизованого тестування.
  • Вміння створювати автоматизовані тести Навички автоматизації тестування є надзвичайно важливими для підвищення ефективності та точності тестування програмного забезпечення.
  • Опанування jUnit, TestNG, Cucumber jUnit - це один з найпопулярніших фреймворків для юніт-тестування в Java. TestNG надає більше можливостей для налаштування тестових сценаріїв та групування тестів. Cucumber дозволяє писати тести у вигляді читабельних сценаріїв, які може розуміти навіть людина, не зайнята тестуванням.
  • Навчання на реальних проєктах
  • Індивідуальний підхід
  • Сертифікат та визнання
Термін навчання -> 2 місяці
Вечірнє навчання -> 2 рази на тиждень
Формат навчання -> наживо в Skype
Детальніше

JAVA QA ADVANCED AUTOMATION

Переваги

  • Поглиблені знання Java Курс надає можливість розширити і поглибити ваші знання в мові програмування Java, що є фундаментом для багатьох автоматизованих тестів і розробки програмного забезпечення.
  • Розширення автоматизаційних навичок Ви вивчите продвинуті техніки автоматизованого тестування, які допоможуть вам створювати більш складні тестові сценарії і забезпечити високу якість тестів.
  • Поглиблення в архітектурі ПЗ Курс може надати знання з архітектурних патернів та структур програмного забезпечення, що може бути корисним для створення більш розширюваних і підтримуваних автоматизованих тестових наборів.
  • Індивідуальний підхід
  • Підвищення кар'єрних можливостей Знання продвинутих технік автоматизації тестування може підвищити вашу конкурентоспроможність на ринку праці і призвести до покращення вашої заробітної плати.
  • Сертифікат та визнання
Термін навчання: від 1 місяця
Вечірнє навчання -> 2 рази на тиждень
Формат навчання -> наживо в Skype
Детальніше
CYPRESS (NODE.JS)

JAVASCRIPT QA BASIC AUTOMATION

Переваги

  • Використання JavaScript і Cypress JavaScript - одна з найпопулярніших мов програмування веб-розробників, а Cypress - потужний фреймворк для автоматизованого тестування веб-додатків.
  • Зосередженість на веб-автоматизації Курс спеціалізується на автоматизації тестування веб-додатків, що є важливою навичкою для якості QA інженера.
  • Практичні завдання і проєкти Важливою перевагою може бути можливість практичного застосування знань через виконання завдань та розробку автоматизованих тестових сценаріїв для реальних веб-додатків.
  • Індивідуальний підхід
  • Робота з GIT
  • Сертифікат та визнання
Термін навчання -> 2 місяці
Вечірнє навчання -> 2 рази на тиждень
Формат навчання -> наживо в Skype
Детальніше

Підтримка та питання

Якщо вам потрібна будь-яка підтримка або у вас виникли додаткові питання, не соромтеся зв'язатися з нами, ми готові швидко надати вам допомогу.

Через чат-бот