використання SoapUI з Selenium для тестування веб-служб
⚡ Розумний підсумок
SoapUI з Selenium дозволяє одному пакету перевірити веб-сервіс та браузер, який його використовує. Groovy це міст, тому що SoapUI пробіжки Groovy рідному та Groovy досягає кожного Java бібліотека Selenium кораблі.
SoapUI є найпопулярнішим відкритим кодом функціональне тестування інструмент для Тестування API. Він забезпечує повну покриття тесту і підтримує всі стандартні протоколи та технології.
Що таке SOAP?
SOAP — це простий протокол на основі XML. Він дозволяє програмам обмінюватися інформацією через HTTP. Він використовує веб-сервіси DescriptМова програмування WSDL (Website Device) для зв'язку, а також інші програми, з якими можна взаємодіяти. веб-сервіси через цей інтерфейс WSDL.
SOAP проти REST веб-сервісів у SoapUI
SoapUI починався як SOAP-клієнт, і його назва досі говорить про це, але він також тестує кінцеві точки REST. Знання того, на який стиль ви вказуєте, визначає, як буде побудовано тест.
| Аспект | SOAP | REST |
|---|---|---|
| зtract | WSDL-файл описує кожну операцію, тому SoapUI може автоматично генерувати запити. | Зазвичай визначення OpenAPI або Swagger, або жодного формального підтвердженняtract взагалі. |
| Формат повідомлення | Тільки XML-конверт. | Зазвичай JSON, хоча дозволені XML та інші формати. |
| Транспорт | Найчастіше HTTP, але SOAP не залежить від транспорту. | HTTP, з методом та URL несучи намір. |
| Твердження в SoapUI | XPath та XQuery збігаються з конвертом відповіді. | JSONPath та твердження скрипта збігаються з корисним навантаженням. |
| Типове використання | Банківська справа, телекомунікації та інші послугиtract-важкі корпоративні інтеграції. | Громадські та мобільні послуги, де корисне навантаження залишається невеликим. |
У наведеному нижче покроковому посібнику використовується метеорологічний сервіс SOAP, але той самий клас бігуна запускає REST-тест без будь-яких змін у Java Код.
Що таке SOAPUI?
SOAPUI — це кросплатформний інструмент для тестування веб-сервісів з відкритим кодом. Версія SOAPUI-Pro має додатковий функціонал для компаній, що працюють з критично важливими веб-сервісами. Веб-сервіси відіграють значну роль в інтернет-додатках.
⚠️ Примітка щодо назви продукту: Виробництво SmartBear припинено SoapUI Профі як окремий продукт та об’єднав його разом із LoadUI Pro та ServiceV Pro у ReadyAPIБезкоштовна версія зберігає SoapUI назва та досі активно випускається. Наведені нижче кроки працюють як в існуючих, так і в SoapUI проекти відкриті в ReadyAPI.
Що таке Selenium?
Selenium це не одна програма, а ціла родина інструментів для керування браузером так, як це робив би звичайний користувач. Тут важливі два елементи:
- Selenium — інструмент для тестування, який автоматизує роботу браузерів на багатьох платформах.
- Selenium веб-драйвер — він здійснює прямі виклики до браузерів, використовуючи вбудовану підтримку автоматизації кожного браузера.
Навіщо об'єднувати SoapUI та Selenium в одному тесті
Перевірка сервісу та перевірка екрана зазвичай є двома окремими завданнями, які виконуються двома окремими пакетами програм, тому дефект у шві між ними, як правило, залишається в обох. Їх спільний запуск заповнює цю прогалину.
- Доведіть круговий шлях. Бронювання, надіслане у браузері, має відображатися у відповіді сервісу. Тільки комбінований тест може підтвердити обидві половини.
- Швидко налаштуйте стан. Створення клієнта через API займає секунду; створення полів форми від одного до дванадцяти займає хвилину та частіше призводить до невдач.
- Локалізуйте несправність. Коли інтерфейс користувача показує неправильну суму, твердження API в тому ж запуску одразу повідомляє, чи проблема в сервісі, чи на сторінці.
- Повторно використовуйте один набір даних. Пари поштового індексу та міста у наведеному нижче прикладі подають дані для виклику сервісу та можуть так само подавати дані для тверджень браузера.
- Виключіть дублікати. Правила валідації, які вже перевірені на рівні сервісу, не потребують повільного тестування в браузері.
Компроміс — це складніше випробування: два інструменти, два набори залежностей і довший пробіг. Залиште комбіновані тести для кількох шляхів, які дійсно перетинають межу, а решту залиште як чисті. API або чисті перевірки браузера.
Selenium з SoapUI
Найпростіший і найлегший спосіб інтеграції Selenium з SoapUI полягає у використанні Groovy, Яка SoapUI всебічно підтримує.
Groovy це об'єктно-орієнтована мова сценаріїв, яка включає всі Java бібліотеки, тому кожен Java ключове слово та функція можуть бути використані в Groovy скрипт безпосередньо. Він працює на JVM (Java віртуальна машина), що дозволяє Groovy зайди всередину SoapUI і Java Selenium тест на спільне використання тих самих класів.
Передумови використання Selenium з SoapUI
Встановіть наступне, перш ніж писати будь-який код:
⚠️ Примітка до версії: Groovy 5.0 є поточною стабільною версією та вимагає JDK 11 або пізнішої версії, тому спочатку встановіть JDK, а потім дозвольте Groovy версія, дотримуйтесь її. Selenium додається до Java проект як Maven або Gradle залежність, а не як завантажена папка, і SoapUI jar має знаходитися в тому ж класовому шляху, що й ваш тест — саме в цій точці більшість перших спроб зазнають невдачі.
Телефонуйте SoapUI Виконавець тестового випадку в Selenium
Наведений нижче код викликає a SoapUI тестовий випадок. Він встановлює властивості для міста та відповідного йому поштового індексу, а під час виконання отримує значення кожного міста та поштового індексу, а потім повідомляє про кількість помилок для кожної пари, яка не збігається. Цей код виконується в Selenium.
Примітка: Тут замість статичного файлу властивостей для зберігання поштового індексу та міста використовується usePropertyFileFlag=true. Поштовий індекс та місто динамічно передаються під час виконання методом setProjectProperties().
Інструкції для запуску коду:
- Стартап SoapUI.
- Розпочніть новий тестовий випадок.
- Додати новий Groovy крок.
- Скопіюйте та вставте зразок коду в крок.
- Натисніть «Відтворити».
- Ви можете бачити, Firefox запуск та навігація до GoogleПісля цього ви можете побачити SoapUI записи журналу.
- Код виконується з використанням JUnit.
Code Приклад
@when("<I use the weather service to get the weather information") public void i_use_the_weather_service_to_get_the_information() { Set<Entry<String, string>> set = zipAndCities.entrySet(); while (iterator,hasNext)) { Entry<String, String> entry = iterator.next(); String zipCode = entry.getkey(); String city = entry.getValue(); String[] prop = {"usePropertyFileFlag=true","zipCode=" +zipCode, "city=" +city}; try{ SoapUITestCaseRunner soapUITestCaseRunner = new SoapUITestCaseRunner(); soapUITestCaseRunner.setProjectFile("src/test/resources/WeatherSoapTest-soapui-project.xml"); soapUITestCaseRunner.setProjectProperties(prop); soapUITestCaseRunner.setTestSuite("TestSuite1"); soapUITestCaseRunner.setTestCase("TestCase1"); soapUITestCaseRunner.run(); } catch (Exception e) { System.err.println("checking" + zipCode + " failed!"); failureCount++; zipCodes.append(zipCode + " [" + city +"] "); e.printStackTrace(); }finally{ totalCount++; } } } }
⚠️ Code зазначає: Цей фрагмент коду відтворено точно так, як його опубліковано, і є фрагментом, а не компільованим класом. Перш ніж він буде зібраний, вам потрібно оголосити ітератор, отриманий з set.iterator(), правильно поки (ітератор, маєНаступний)) до поки (ітератор.hasNext()) та entry.getkey() до entry.getKey(), пишіть анотацію з великої літери як @Коли, видаліть зайвий символ на початку тексту кроку та використовуйте рядок а не рядок в оголошенні Set. Оригінальний текст зберігається, щоб опублікований приклад залишився недоторканим.
У консолі можна переглянути всі тестовий випадоквиконується. Ви знайдете список поштових індексів та міст, отриманих та переданих у SoapUI Тестовий випадок 1.
вид SoapUI Файл журналу
Файли журналів записують кожну дію, що відбувається в операційній системі або програмному застосунку. Щоб переглянути SoapUI лог-файл, перейдіть до головного каталогу, де ви побачите файл з назвою soapui.log.
In SoapUI, файл журналу знаходиться в папці bin всередині каталогу встановлення, наприклад C:\Program Files\SmartBear\soapUI-Pro-4.0.1\bin. У поточній інсталяції папка з версією відрізняється, і ReadyAPI інсталяція записує дані у власну папку bin.
Коли ви відкриєте цей файл журналу, натиснувши на нього, він виглядатиме схожим на знімок екрана нижче.
де SoapUI та Selenium Інтеграція часто порушується
Майже кожна поломка на цьому етапі пов'язана з проблемою проводки, а не з тестуванням. Саме їх слід перевірити в першу чергу.
| симптом | Ймовірна причина | Що перевірити |
|---|---|---|
| NoClassDefFoundError або ClassNotFoundException для SoapUITestCaseRunner | Команда SoapUI jar не знаходиться на шляху до класів test. | Додати SoapUI залежність від файлу збірки або вказати шлях до класів на jar у SoapUI lib. Відсутній jar-файл з'являється як звичайний Selenium виняток у консолі. |
| Файл проєкту не знайдено | setProjectFile() визначає відносний шлях до робочого каталогу, який відрізняється для IDE та інструменту збірки. | Запускати з кореня проєкту або передавати абсолютний шлях. |
| Набір тестів або тестовий випадок не знайдено | Імена в setTestSuite() та setTestCase() повинні точно відповідати проекту. | Скопіюйте імена безпосередньо з SoapUI дерево проекту; вони чутливі до регістру. |
| Властивість ніколи не відповідає запиту | setProjectProperties() виконувалося після run(), або запит не посилається на властивість. | Встановіть кожну властивість перед run() та використовуйте синтаксис заповнювача властивостей всередині запиту. |
| Браузер не запускається | Драйвер та встановлений браузер мають різні основні версії. | Дозволяти Selenium Менеджер вирішує проблему з драйвером або зіставляє його зі збіркою браузера. |
| Функція працює в IDE, але не з боку виконавця | Цей крок залежить від функції, доступної лише для Pro, такої як джерело даних. | Підтвердьте ліцензію або перебудуйте крок з еквівалентами з відкритим кодом. |
Як тільки бігун завершує роботу коректно, а soapui.log показує очікувані записи, інтеграція працює і може бути згорнута в ширший тестування автоматизації на.



