. SoapUI с Selenium для тестирования веб-сервисов

⚡ Умное резюме

SoapUI с Selenium позволяет одному набору инструментов проверить веб-сервис и браузер, который его использует. Groovy это мост, потому что SoapUI работает Groovy родным и Groovy достигает каждого Java библиотеки Selenium судов.

  • 🔘 Два инструмента, два слоя: SoapUI выполняет действия через конечную точку SOAP или REST, при этом Selenium WebDriver управляет браузером, который его вызывает.
  • ☑️ Groovy это клей: SoapUI поддерживает Groovy широко, и Groovy несет в себе все Java библиотечный набор, поэтому Selenium Код выполняется без изменений.
  • Класс бегунов: SoapUITestCaseRunner открывает файл проекта, выбирает набор тестов и тестовый случай и запускает его из этого файла. Java.
  • 🧪 Динамические данные: Функция setProjectProperties() передает такие значения, как город и почтовый индекс, во время выполнения, а не из статического файла свойств.
  • 🇧🇷 Необходимые условия: Groovy SDK, JDK, Selenium и SoapUI Все необходимые компоненты должны быть установлены до первого запуска.
  • 📊 Доказательственный след: Все действия записываются в файл soapui.log, расположенный в папке bin установочного каталога.

. SoapUI с Selenium для тестирования веб-сервисов через Groovy

SoapUI является самым популярным проектом с открытым исходным кодом. функциональное тестирование инструмент для API тестирование. Он обеспечивает полную тестовое покрытие и поддерживает все стандартные протоколы и технологии.

Что такое МЫЛО?

SOAP- Это простой протокол на основе XML. Он позволяет приложениям обмениваться информацией по протоколу HTTP. Он использует веб-сервисы. DescriptЯзык программирования WSDL используется для связи, и другие приложения могут взаимодействовать с ним. веб-сервисы через этот WSDL-интерфейс.

SOAP против REST веб-сервисов SoapUI

SoapUI Изначально это был SOAP-клиент, и его название до сих пор это подтверждает, но он также тестирует REST-конечные точки. Знание того, какой тип запроса используется, определяет, как будет построен тест.

Аспект SOAP- ОТДЫХ
В лице tract WSDL-файл описывает каждую операцию, поэтому SoapUI может генерировать запросы автоматически. Обычно используется определение OpenAPI или Swagger, либо отсутствует формальное соглашение.tracт вообще.
Формат сообщения Только XML-конверт. Обычно используется формат JSON, хотя допускаются XML и другие форматы.
Транспорт Чаще всего используется HTTP, но SOAP не зависит от типа протокола. HTTP, с использованием метода и URL воплощая намерение.
Утверждения в SoapUI XPath и XQuery выполняют сопоставление с оболочкой ответа. Утверждения JSONPath и script соответствуют полезной нагрузке.
Типичное использование Банковское дело, телекоммуникации и другие отраслиtracИнтеграция с крупными корпоративными приложениями. Общедоступные и мобильные сервисы, в которых полезная нагрузка остается небольшой.

В приведенном ниже примере используется SOAP-сервис прогноза погоды, но тот же класс запуска запускает REST-тест без каких-либо изменений. Java код.

Что такое SOAPUI?

SOAPUI SOAPUI-Pro — это инструмент тестирования веб-сервисов с открытым исходным кодом, работающий на разных платформах. Версия SOAPUI-Pro обладает дополнительными функциями для компаний, работающих с критически важными веб-сервисами. Веб-сервисы играют важную роль в интернет-приложениях.

⚠️ Примечание к названию продукта: Производство SmartBear прекращено. SoapUI Pro в качестве отдельного продукта, а затем объединил его с 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

Приведённый ниже код вызывает SoapUI Тестовый пример. Он устанавливает свойства для города и соответствующего ему почтового индекса, а при выполнении извлекает значение каждого города и почтового индекса, после чего сообщает количество ошибок для каждой пары, которая не совпадает. Этот код выполняется в Selenium.

Примечание: Здесь используется параметр usePropertyFileFlag=true вместо статического файла свойств для хранения почтового индекса и города. Почтовый индекс и город передаются динамически во время выполнения методом setProjectProperties().

Инструкции по запуску кода:

  1. Запускать SoapUI.
  2. Начать новый тестовый случай.
  3. Добавить новый Groovy шаг.
  4. Скопируйте и вставьте пример кода в соответствующий шаг.
  5. Нажмите «Играть».
  6. Вы можете видеть, Firefox запуск и переход к GoogleПосле этого вы сможете увидеть SoapUI записи в журнале.
  7. Код выполняется с использованием 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(), верный while (iterator,hasNext)) в while (iterator.hasNext()) и entry.getkey() в entry.getKey(), напишите аннотацию с заглавной буквы следующим образом: @КогдаУдалите лишний символ в начале текста шага и используйте строка , а не string в объявлении Set. Оригинальный текст сохраняется, поэтому опубликованный пример остается неизменным.

В режиме консоли вы можете быстро просмотреть все данные. прецедентВыполненные действия. Вы найдете список почтовых индексов и городов, полученных и переданных в функцию. SoapUI Тестовый пример 1.

Детали SoapUI Журнальный файл

В лог-файлах записываются все действия, происходящие в операционной системе или программном приложении. Для просмотра логов... SoapUI Для просмотра файла журнала перейдите в основную директорию, где вы увидите файл с именем soapui.log.

SoapUI Список каталогов установки с видимым файлом soapui.log

In SoapUIФайл журнала находится в папке bin внутри каталога установки, например, C:\Program Files\SmartBear\soapUI-Pro-4.0.1\bin. В текущей версии папка с версией может отличаться, и ReadyAPI При установке программа записывает данные в свою собственную папку bin.

папка bin SoapUI каталог установки, где хранится файл журнала

Когда вы откроете этот файл журнала, щелкнув по нему, он будет выглядеть примерно так, как показано на снимке экрана ниже.

Содержимое файла soapui.log, отображающее записи о выполнении тестов.

где SoapUI и Selenium Интеграция часто нарушается

Практически все неисправности на этом этапе связаны с проводкой, а не с проблемами при тестировании. Именно их следует проверить в первую очередь.

Симптом Вероятная причина Что проверить
NoClassDefFoundError или ClassNotFoundException SoapUITestCaseRunner SoapUI jar-файл отсутствует в пути к классам для тестирования. Добавьте SoapUI укажите зависимость от файла сборки или укажите путь к файлу jar в classpath. SoapUI Папка lib. Отсутствующий jar-файл отображается как обычный Selenium исключение в консоли.
Файл проекта не найден Функция setProjectFile() определяет относительный путь к рабочему каталогу, что различается в IDE и инструментах сборки. Запускать из корневой папки проекта или указывать абсолютный путь.
Набор тестов или тестовый пример не найден. Названия в функциях setTestSuite() и setTestCase() должны точно соответствовать названию проекта. Скопируйте имена прямо из SoapUI дерево проекта; они чувствительны к регистру.
Запрос на объект недвижимости так и не был удовлетворен. Функция setProjectProperties() выполняется после run(), или же запрос не ссылается на это свойство. Установите все свойства перед вызовом run() и используйте синтаксис заполнителя свойств внутри запроса.
Браузер не запускается Драйвер и установленный браузер имеют разные основные версии. Позволять Selenium Менеджер определяет драйвер или сопоставляет драйвер со сборкой браузера.
Функция работает в IDE, но не из среды выполнения. Этот шаг основан на функции, доступной только в версии Pro, например, на источнике данных. Подтвердите лицензию или перестройте этот шаг, используя аналоги с открытым исходным кодом.

Как только выполнение программы завершится корректно и в файле soapui.log отобразятся ожидаемые записи, интеграция будет считаться работающей и может быть интегрирована в более широкую систему. автоматизация тестирования на.

Часто задаваемые вопросы (FAQ)

Версия с открытым исходным кодом работает Groovy предоставляет доступ к инструменту запуска тестовых случаев, поэтому для самой интеграции не требуется лицензия. Pro или ReadyAPI Без таких функций, как источники данных и мастер настройки на основе данных, возникнут проблемы.

Да, и это зеркальное отражение данного пошагового руководства. Groovy Этот шаг позволяет напрямую создать экземпляр WebDriver при условии, что Selenium банки помещаются в SoapUI Папка lib необходима для того, чтобы скрипт мог их разрешить.

SoapUI исполняет Groovy встроенным в этап выполнения скрипта, без цикла компиляции, и Groovy достигает каждого Java Класс уже добавлен в путь к классам. Обычный Java необходим этап сборки, поэтому Groovy Победы при использовании короткого кода интеграции.

Оберните его в... JUnit or TestNG протестируйте и позвольте Maven или Gradle Вызовите его точно так же, как в примере. На агенте браузер должен работать в безголовом режиме, и SoapUI Файл проекта необходимо добавить в репозиторий вместе с тестовым кодом.

Вспомогательные функции полезны для расширения небольшого набора пар «город-почтовый индекс» на более широкий охват, а также для выявления полей ответа, которые не затрагиваются утверждением. Сгенерированные значения по-прежнему нуждаются в реальной проверке, поскольку правдоподобный почтовый индекс не является допустимым.

Да, в разумных пределах. Второй пилот справляется. Groovy синтаксис и общие Java Звонки хорошие, но у него мало знаний о... SoapUI Объекты скриптов, такие как testRunner, context и log, требуют тщательного изучения.

Сохраняйте их в качестве переменных окружения или в менеджере секретов и считывайте в свойства проекта во время выполнения, используя тот же механизм, что и в функции setProjectProperties(). Файл проекта, содержащий пароль в открытом виде, — это потенциальная утечка памяти.

Проверки на уровне протокола — статус, схема, XPath — следует оставлять внутри документа. SoapUIгде для них создаются инструменты. Утверждать в Selenium Проверяйте только то, что должен отображать сам браузер, поэтому ошибка указывает на один из уровней.

Подведем итог этой публикации следующим образом: