SOAP — Введение
SOAP — это сокращение от Simple Object Access Protocol. Он определен Консорциумом World Wide Web (W3C) по адресу https://www.w3.org/TR/2000/NOTE-SOAP-20000508 следующим образом:
SOAP — это легкий протокол для обмена информацией в децентрализованной распределенной среде. Это протокол на основе XML, который состоит из трех частей: конверт, который определяет структуру для описания того, что находится в сообщении и как его обрабатывать; набор правил кодирования для выражения экземпляров определяемых приложением типов данных; и соглашение для представления удаленных вызовов процедур и ответов.
SOAP — Важные функции
Ниже приведены некоторые важные функции SOAP.
-
Это коммуникационный протокол, предназначенный для общения через Интернет.
-
Это может расширить HTTP для обмена сообщениями XML.
-
Он обеспечивает передачу данных для веб-сервисов.
-
Он может обмениваться полными документами или вызывать удаленную процедуру.
-
Может использоваться для трансляции сообщения.
-
Он не зависит от платформы и языка.
-
Это XML-способ определения, какая информация отправляется и как.
-
Это позволяет клиентским приложениям легко подключаться к удаленным службам и вызывать удаленные методы.
Это коммуникационный протокол, предназначенный для общения через Интернет.
Это может расширить HTTP для обмена сообщениями XML.
Он обеспечивает передачу данных для веб-сервисов.
Он может обмениваться полными документами или вызывать удаленную процедуру.
Может использоваться для трансляции сообщения.
Он не зависит от платформы и языка.
Это XML-способ определения, какая информация отправляется и как.
Это позволяет клиентским приложениям легко подключаться к удаленным службам и вызывать удаленные методы.
Хотя SOAP может использоваться в различных системах обмена сообщениями и может доставляться через различные транспортные протоколы, первоначальная цель SOAP — удаленные вызовы процедур, транспортируемые через HTTP. Другие платформы, такие как CORBA, DCOM и Java RMI, предоставляют функциональность, аналогичную SOAP, но сообщения SOAP написаны полностью в XML и поэтому уникально независимы от платформы и языка.
SOAP — Сообщения
SOAP-сообщение — это обычный XML-документ, содержащий следующие элементы:
-
Конверт — определяет начало и конец сообщения. Это обязательный элемент.
-
Заголовок — содержит любые необязательные атрибуты сообщения, используемые при обработке сообщения, либо в промежуточной точке, либо в конечной конечной точке. Это необязательный элемент.
-
Тело — содержит данные XML, содержащие отправляемое сообщение. Это обязательный элемент.
-
Неисправность — необязательный элемент неисправности, который предоставляет информацию об ошибках, возникающих при обработке сообщения.
Конверт — определяет начало и конец сообщения. Это обязательный элемент.
Заголовок — содержит любые необязательные атрибуты сообщения, используемые при обработке сообщения, либо в промежуточной точке, либо в конечной конечной точке. Это необязательный элемент.
Тело — содержит данные XML, содержащие отправляемое сообщение. Это обязательный элемент.
Неисправность — необязательный элемент неисправности, который предоставляет информацию об ошибках, возникающих при обработке сообщения.
Все эти элементы объявлены в пространстве имен по умолчанию для конверта SOAP —
https://www.w3.org/2001/12/soap-envelope
Пространство имен по умолчанию для кодировки SOAP и типов данных —
https://www.w3.org/2001/12/soap-encoding
Примечание. Все эти характеристики могут быть изменены. Таким образом, продолжайте обновлять себя новейшими спецификациями, доступными на веб-сайте W3.
SOAP — структура сообщения
Следующий блок отображает общую структуру сообщения SOAP —
<?xml version = "1.0"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope" SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding"> <SOAP-ENV:Header> ... ... </SOAP-ENV:Header> <SOAP-ENV:Body> ... ... <SOAP-ENV:Fault> ... ... </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP_ENV:Envelope>
МЫЛО — Что такое ОТДЫХ?
REST — это аббревиатура для передачи представительского состояния. Его можно определить как архитектурный стиль разработки программного обеспечения. REST не является спецификацией или стандартом W3C. Следовательно, с RESTful Services легче работать. Он не требует какой-либо инфраструктуры спецификации промежуточного программного обеспечения.
ОТДЫХ — Важные характеристики
Ниже приведены некоторые важные особенности REST.
-
Он основывается на протоколе связи клиент-сервер, кешируемый без учета состояния — практически во всех случаях используется HTTP.
-
Это облегченная альтернатива WebService и RPC (удаленный вызов процедур), такая как SOAP-WSDL.
-
Он представляет все в уникальных идентификаторах или URI.
-
Он использует стандартные методы HTTP, такие как GET, POST, PUT, DELETE.
-
Он связывает источники вместе.
-
Ресурсы REST могут иметь несколько представлений.
-
Любая именованная информация считается Ресурсом. Например: изображение, личность, документ — все это можно рассматривать как пример ресурса и представлять как уникальный идентификатор или URI.
-
Саму World Wide Web, основанную на HTTP, можно рассматривать как архитектуру на основе REST.
Он основывается на протоколе связи клиент-сервер, кешируемый без учета состояния — практически во всех случаях используется HTTP.
Это облегченная альтернатива WebService и RPC (удаленный вызов процедур), такая как SOAP-WSDL.
Он представляет все в уникальных идентификаторах или URI.
Он использует стандартные методы HTTP, такие как GET, POST, PUT, DELETE.
Он связывает источники вместе.
Ресурсы REST могут иметь несколько представлений.
Любая именованная информация считается Ресурсом. Например: изображение, личность, документ — все это можно рассматривать как пример ресурса и представлять как уникальный идентификатор или URI.
Саму World Wide Web, основанную на HTTP, можно рассматривать как архитектуру на основе REST.
Службы REST не зависят от платформы и языка. Поскольку он основан на стандартах HTTP, он может легко работать при наличии брандмауэров. Как и WebServices, REST не предлагает никакой встроенной защиты, управления сеансами, гарантии QoS, но их можно добавить, опираясь на HTTP. Для шифрования REST может использоваться поверх HTTPS.
SoapUI — Введение
SoapUI — это инструмент, который можно использовать как для функционального, так и нефункционального тестирования. Он не ограничивается веб-сервисами, хотя это инструмент де-факто, используемый при тестировании веб-сервисов.
SoapUI — Важные функции
Ниже приведены некоторые важные функции SoapUI.
-
Он способен выполнять роль как клиента, так и службы.
-
Это позволяет пользователям быстро и эффективно создавать функциональные и нефункциональные тесты, используя единую среду.
-
Он лицензируется в соответствии с условиями GNU Leaser General Public License (LGPL).
-
Он реализован исключительно на платформе JAVA.
-
Он поддерживает Windows, Mac, несколько диалектов Linux.
-
Это позволяет тестировщикам выполнять автоматизированные функциональные, регрессионные, тесты на соответствие и нагрузочные тесты на различных веб-API.
-
Он поддерживает все стандартные протоколы и технологии для тестирования всех видов API.
Он способен выполнять роль как клиента, так и службы.
Это позволяет пользователям быстро и эффективно создавать функциональные и нефункциональные тесты, используя единую среду.
Он лицензируется в соответствии с условиями GNU Leaser General Public License (LGPL).
Он реализован исключительно на платформе JAVA.
Он поддерживает Windows, Mac, несколько диалектов Linux.
Это позволяет тестировщикам выполнять автоматизированные функциональные, регрессионные, тесты на соответствие и нагрузочные тесты на различных веб-API.
Он поддерживает все стандартные протоколы и технологии для тестирования всех видов API.
SoapUI может использоваться для тестирования полного тестирования API-интерфейса RESTful и веб-службы SOAP. Он поддерживает функциональное тестирование, тестирование производительности, тестирование совместимости, регрессионное тестирование, нагрузочное тестирование и многое другое.
Он удобен для пользователя и легко превращает функциональные тесты в нефункциональные тесты, такие как нагрузка, стресс-тестирование.
SoapUI — Возможности
SoapUI богат следующими пятью аспектами:
- Функциональное тестирование
- Тестирование безопасности
- Нагрузочное тестирование
- Протоколы и технологии
- Интеграция с другими инструментами
Давайте узнаем больше о каждой из этих возможностей.
Функциональное тестирование
-
SoapUI позволяет тестировщикам писать функциональные API-тесты в SoapUI.
-
SoapUI поддерживает функцию Drag-Drop, которая ускоряет разработку скрипта.
-
SoapUI поддерживает отладку тестов и позволяет тестировщикам разрабатывать управляемые данными тесты.
-
SoapUI поддерживает несколько сред, облегчая переключение между средами QA, Dev и Prod.
-
SoapUI позволяет выполнять расширенные сценарии (тестировщик может разрабатывать свой собственный код в зависимости от сценариев).
SoapUI позволяет тестировщикам писать функциональные API-тесты в SoapUI.
SoapUI поддерживает функцию Drag-Drop, которая ускоряет разработку скрипта.
SoapUI поддерживает отладку тестов и позволяет тестировщикам разрабатывать управляемые данными тесты.
SoapUI поддерживает несколько сред, облегчая переключение между средами QA, Dev и Prod.
SoapUI позволяет выполнять расширенные сценарии (тестировщик может разрабатывать свой собственный код в зависимости от сценариев).
Тестирование безопасности
-
SoapUI выполняет полный набор сканирования уязвимостей.
-
SoapUI предотвращает SQL-инъекцию для защиты баз данных.
-
SoapUI сканирует переполнения стека, вызванные огромными по размеру документами.
-
SoapUI сканирует межсайтовый скриптинг, который происходит, когда параметры сообщений отображаются в сообщениях.
-
SoapUI выполняет фаззинговое сканирование и сканирование границ, чтобы избежать ошибочного поведения сервисов.
SoapUI выполняет полный набор сканирования уязвимостей.
SoapUI предотвращает SQL-инъекцию для защиты баз данных.
SoapUI сканирует переполнения стека, вызванные огромными по размеру документами.
SoapUI сканирует межсайтовый скриптинг, который происходит, когда параметры сообщений отображаются в сообщениях.
SoapUI выполняет фаззинговое сканирование и сканирование границ, чтобы избежать ошибочного поведения сервисов.
Нагрузочное тестирование
-
SoapUI распределяет нагрузочные тесты по n числу агентов LoadUI.
-
SoapUI с легкостью имитирует нагрузочное тестирование в больших объемах и в реальных условиях.
-
SoapUI позволяет расширенные пользовательские отчеты для сбора параметров производительности.
-
SoapUI позволяет осуществлять сквозной мониторинг производительности системы.
SoapUI распределяет нагрузочные тесты по n числу агентов LoadUI.
SoapUI с легкостью имитирует нагрузочное тестирование в больших объемах и в реальных условиях.
SoapUI позволяет расширенные пользовательские отчеты для сбора параметров производительности.
SoapUI позволяет осуществлять сквозной мониторинг производительности системы.
Протоколы и технологии
SoapUI поддерживает широкий спектр протоколов —
- SOAP — простой протокол доступа к объектам
- WSDL — язык определения веб-сервисов
- REST — представительский государственный трансферт
- HTTP — протокол передачи гипертекста
- HTTPS — протокол передачи гипертекста
- AMF — формат сообщения о действии
- JDBC — соединение с базой данных Java
- JMS — служба сообщений Java
Интеграция с другими инструментами
- Apache Maven Project
- HUDSON
- JUnit
- Apache — Муравей и многое другое …
SoapUI — NG Pro
SoapUI — это инструмент с бесплатной версией с открытым исходным кодом, обладающий базовыми функциями тестирования, в то время как SoapUI NG Pro — это коммерческий инструмент с расширенными функциями отчетности, управляемыми данными функциями и многим другим.
сравнение
В следующей таблице сравниваются и сравниваются различные функции SoapUI и SoapUI NG Pro.
Характеристики | SoapUI | SoapUI NG Pro |
---|---|---|
Поддерживаемые технологии | ||
МЫЛО | да | да |
WSDL / WADL | да | да |
ОСТАЛЬНОЕ | да | да |
JMS | да | да |
AMF | да | да |
JDBC | да | да |
HTTP | да | да |
Основные характеристики | ||
Автономное приложение | да | да |
Поддержка нескольких сред | нет | да |
Плавающая лицензия | нет | да |
WSDL Покрытие | нет | да |
Покрытие запроса / ответа | нет | да |
Утверждение сообщения | да | да |
Тест Рефакторинг | нет | да |
Запуск нескольких тестов | да | да |
Тестирование источника данных | нет | да |
Библиотеки сценариев | нет | да |
Блок отчетности | нет | да |
Шаги ручного теста | да | да |
Составление отчетов | ||
Отчеты Junit | нет | да |
Экспорт данных отчета | нет | да |
Отчет WSDL HTML | да | да |
Тестовый охват покрытия | нет | да |
Тестовое покрытие | нет | да |
Охват утверждений | нет | да |
Покрытие записи сообщения | нет | да |
SoapUI — Установка и настройка
SoapUI — это кроссплатформенный инструмент. Он поддерживает операционные системы Windows, Linux и Mac.
Предпосылки
-
Процессор — 32-битный или 64-битный процессор с тактовой частотой 1 ГГц или выше.
-
ОЗУ — 512 МБ ОЗУ.
-
Место на жестком диске — минимум 200 МБ на жестком диске для установки.
-
Версия операционной системы — Windows XP или новее, MAC OS 10.4 или новее.
-
ЯВА — ЯВА 6 или позже.
Процессор — 32-битный или 64-битный процессор с тактовой частотой 1 ГГц или выше.
ОЗУ — 512 МБ ОЗУ.
Место на жестком диске — минимум 200 МБ на жестком диске для установки.
Версия операционной системы — Windows XP или новее, MAC OS 10.4 или новее.
ЯВА — ЯВА 6 или позже.
Процесс загрузки
Шаг 1. Перейдите на сайт www.soapui.org и нажмите «Загрузить SoapUI».
Шаг 2 — Нажмите «Получить», чтобы загрузить SoapUI с открытым исходным кодом. Начнется загрузка 112 МБ .exe файла в систему. Подождите, пока процесс загрузки не будет завершен.
Процесс установки
Шаг 1 — После загрузки запустите файл .exe с именем «Запуск от имени администратора».
Windows запустит процесс установки, как показано на следующем снимке экрана.
Шаг 2 — После настройки в окне процесса отобразится следующий экран, нажмите Далее.
Шаг 3 — Примите лицензионное соглашение и нажмите Далее.
Шаг 4 — Выберите каталог установки или оставьте его в качестве пути по умолчанию, выбранного системой. Нажмите кнопку «Далее.
Шаг 5 — Выберите компоненты, которые вы хотите установить. Нажмите кнопку «Далее.
Шаг 6 — Примите лицензионное соглашение для HermesJMS и нажмите Далее.
Шаг 7 — Выберите целевой каталог для сохранения учебников и нажмите Далее.
Шаг 8 — Выберите расположение папки меню «Пуск» или оставьте местоположение по умолчанию как есть и нажмите «Далее».
Шаг 9 — Установите флажок «создать значок на рабочем столе» и нажмите «Далее».
Теперь установка начинается. Это займет несколько минут.
Шаг 10 — После завершения установки нажмите Готово в следующем мастере.
После нажатия кнопки «Готово» запускается SoapUI.
- Строка меню
- Панель инструментов
- Панель навигации проекта
- Свойства рабочей области
- Панель журнала
Процесс настройки
Первым шагом является создание рабочей области, которая может содержать несколько проектов.
Шаг 1 — Перейдите в Файл → Новая рабочая область.
Шаг 2 — Добавьте название рабочей области и нажмите ОК.
Шаг 3 — Теперь выберите путь, по которому будет сохранено рабочее пространство XML.
Шаг 4 — Выберите путь и нажмите Сохранить.
Рабочая область создается, как показано на следующем снимке экрана. Свойства рабочей области также выставлены.
SoapUI — WSDL
WSDL расшифровывается как язык описания веб-сервисов. Это стандартный формат для описания веб-службы. WSDL был разработан совместно Microsoft и IBM. WSDL произносится как «wiz-тупой» и произносится как «WSD-L».
WSDL ─ Краткая история
WSDL 1.1 был представлен Ariba, IBM и Microsoft в виде заметки W3C для описания сервисов для W3C XML Activity по XML-протоколам в марте 2001 года.
WSDL 1.1 не был одобрен Консорциумом World Wide Web (W3C), однако он только что выпустил проект для версии 2.0, который будет рекомендацией (официальным стандартом), и, таким образом, одобрен W3C.
WSDL ─ указывает на заметку
WSDL — это основанный на XML протокол для обмена информацией в децентрализованной и распределенной среде. Некоторые из других функций WSDL следующие:
-
Определения WSDL описывают, как получить доступ к веб-службе и какие операции она будет выполнять.
-
Это язык для описания того, как взаимодействовать со службами на основе XML.
-
Он является неотъемлемой частью универсального описания, обнаружения и интеграции (UDDI), всемирного бизнес-реестра на основе XML.
-
WSDL — это язык, который использует UDDI.
Определения WSDL описывают, как получить доступ к веб-службе и какие операции она будет выполнять.
Это язык для описания того, как взаимодействовать со службами на основе XML.
Он является неотъемлемой частью универсального описания, обнаружения и интеграции (UDDI), всемирного бизнес-реестра на основе XML.
WSDL — это язык, который использует UDDI.
Использование WSDL
WSDL часто используется в сочетании с SOAP и XML-схемой для предоставления веб-сервисов через Интернет. Клиентская программа, подключающаяся к веб-службе, может прочитать WSDL, чтобы определить, какие функции доступны на сервере. Все используемые специальные типы данных встраиваются в файл WSDL в форме XML-схемы. Затем клиент может использовать SOAP для фактического вызова одной из функций, перечисленных в WSDL.
Понимание WSDL
WSDL разбивает веб-службы на три конкретных идентифицируемых элемента, которые могут быть объединены или использованы повторно после определения.
Три основных элемента WSDL, которые могут быть определены отдельно:
- Типы
- операции
- переплет
Документ WSDL имеет различные элементы, но они содержатся в этих трех основных элементах, которые можно разрабатывать как отдельные документы, а затем их можно объединять или повторно использовать для формирования полных файлов WSDL.
В этом руководстве мы будем следовать WSDL CurrencyConverter: http://www.webservicex.net/CurrencyConvertor.asmx?wsdl
Формат и элементы
CurrencyConverter WSDL будет выглядеть следующим образом —
WSDL ─ Тип порта
Элемент <portType> объединяет несколько элементов сообщения, чтобы сформировать полную одностороннюю или двустороннюю операцию. Например, <portType> может объединять один запрос и одно ответное сообщение в одну операцию запрос / ответ. Это чаще всего используется в сервисах SOAP. PortType может определять несколько операций.
пример
- Элемент portType определяет одну операцию, которая называется ConversionRate.
- Операция состоит из одного входного сообщения ConversionRateHttpPostIn.
- Операция для выходного сообщения — ConversionRateHttpPostOut.
Образцы Операции
WSDL поддерживает четыре основных шаблона работы —
Одностороннее движение
Служба получает сообщение. Следовательно, операция имеет один элемент ввода. Грамматика для односторонней операции —
<wsdl:definitions .... > <wsdl:portType .... > * <wsdl:operation name = "nmtoken"> <wsdl:input name = "nmtoken"? message = "qname"/> </wsdl:operation> </wsdl:portType > </wsdl:definitions>
Запрос ─ Ответ
Служба получает сообщение и отправляет ответ. Поэтому операция имеет один элемент ввода, за которым следует один элемент вывода. Для инкапсуляции ошибок также может быть указан необязательный элемент неисправности. Грамматика для операции запрос-ответ —
<wsdl:definitions .... > <wsdl:portType .... > * <wsdl:operation name = "nmtoken" parameterOrder = "nmtokens"> <wsdl:input name = "nmtoken"? message = "qname"/> <wsdl:output name = "nmtoken"? message = "qname"/> <wsdl:fault name = "nmtoken" message = "qname"/>* </wsdl:operation> </wsdl:portType > </wsdl:definitions>
Запрос ─ Ответ
Служба отправляет сообщение и получает ответ. Поэтому операция имеет один элемент вывода, за которым следует один элемент ввода. Для инкапсуляции ошибок также может быть указан необязательный элемент неисправности. Грамматика для операции запроса-ответа —
<wsdl:definitions .... > <wsdl:portType .... > * <wsdl:operation name = "nmtoken" parameterOrder = "nmtokens"> <wsdl:output name = "nmtoken"? message = "qname"/> <wsdl:input name = "nmtoken"? message = "qname"/> <wsdl:fault name = "nmtoken" message = "qname"/>* </wsdl:operation> </wsdl:portType > </wsdl:definitions>
Уведомления
Служба отправляет сообщение. Следовательно, операция имеет один выходной элемент. Ниже приведена грамматика для операции уведомления:
<wsdl:definitions .... > <wsdl:portType .... > * <wsdl:operation name = "nmtoken"> <wsdl:output name = "nmtoken"? message = "qname"/> </wsdl:operation> </wsdl:portType > </wsdl:definitions>
WSDL ─ Связывание и обслуживание
Элемент <binding> предоставляет конкретные сведения о том, как операция portType будет передаваться по проводам.
-
Привязки могут быть доступны через несколько транспортов, включая HTTP GET, HTTP POST или SOAP.
-
Привязки предоставляют конкретную информацию о том, какой протокол используется для передачи операций portType.
-
Привязки предоставляют информацию о том, где находится сервис.
-
Для протокола SOAP привязка — это <soap: binding>, а транспорт — это сообщения SOAP поверх протокола HTTP.
-
Вы можете указать несколько привязок для одного portType.
Привязки могут быть доступны через несколько транспортов, включая HTTP GET, HTTP POST или SOAP.
Привязки предоставляют конкретную информацию о том, какой протокол используется для передачи операций portType.
Привязки предоставляют информацию о том, где находится сервис.
Для протокола SOAP привязка — это <soap: binding>, а транспорт — это сообщения SOAP поверх протокола HTTP.
Вы можете указать несколько привязок для одного portType.
обслуживание
Элемент <service> определяет порты, поддерживаемые веб-службой. Для каждого из поддерживаемых протоколов существует один элемент порта. Служебный элемент представляет собой набор портов.
Клиенты веб-службы могут узнать следующее из элемента службы —
- Где получить доступ к услуге,
- Через какой порт получить доступ к веб-сервису, и
- Как определяются коммуникационные сообщения.
Элемент службы включает в себя элемент документации для обеспечения удобочитаемой документации.
<wsdl:service name = "CurrencyConvertor"> <wsdl:port name = "CurrencyConvertorSoap" binding = "tns:CurrencyConvertorSoap"> <soap:address location = "http://www.webservicex.net/CurrencyConvertor.asmx" /> </wsdl:port> <wsdl:port name = "CurrencyConvertorSoap12"binding = "tns:CurrencyConvertorSoap12> <soap12:address location = "http://www.webservicex.net/CurrencyConvertor.asmx" /> </wsdl:port> <wsdl:port name = "CurrencyConvertorHttpGet" binding = "tns:CurrencyConvertorHttpGet"> <http:address location = "http://www.webservicex.net/CurrencyConvertor.asmx" /> </wsdl:port> <wsdl:portname = "CurrencyConvertorHttpPost"binding = "tns:CurrencyConvertorHttpPost"> <http:address location = "http://www.webservicex.net/CurrencyConvertor.asmx" /> </wsdl:port> </wsdl:service>
SoapUI — Проект
Проект SoapUI является центральной точкой всего тестирования SoapUI. После создания проекта пользователь может создавать и запускать функциональные тесты, загружать тесты, создавать фиктивные сервисы и многое другое.
В этой главе мы обсудим две вещи — Как —
- Создать проект SOAP
- Добавить WSDL
Создать проект SOAP
Шаг 1 — В навигаторе в левой части экрана щелкните правой кнопкой мыши «Проект» и выберите «Новый проект SOAP».
Или перейдите в File и выберите New Soap Project.
При выборе открывается новое всплывающее окно — New Soap Project.
Шаг 2 — Имя проекта : введите имя проекта — это поле ввода пользователя. Начальный WSDL : это не обязательно. Это зависит от пользователя. Пользователь может предоставить WSDL или добавить после создания проекта.
В этом случае мы создаем проект и добавляем WSDL позже.
Шаг 3 — Нажмите ОК. Он создаст новый проект и будет виден на левой боковой панели навигации.
Добавить WSDL
Проекты SOAP основаны на WSDL. Нет необходимости начинать с импорта WSDL, но это облегчает тестирование, поскольку WSDL содержит всю информацию, необходимую для тестирования веб-службы, такую как информация о запросах и ответах, их содержимом и многое другое, что упрощает тестирование SoapUI.
Шаг 1. Чтобы добавить WSDL, щелкните правой кнопкой мыши имя проекта (SOAP — Пример) и выберите Добавить WSDL.
При выборе отображается мастер WSDL.
Шаг 2 — Местоположение WSDL : введите WSDL как http://www.webservicex.com/currencyconvertor.asmx?WSDL или найдите его с компьютера.
Шаг 3. Как только WSDL введен, будут установлены 3 флажка — Создать запросы, Создать TestSuite, Создать MockServices. В зависимости от требований пользователь может установить один или несколько флажков.
По умолчанию флажок Создать запросы установлен.
Шаг 4 — Нажмите ОК. WSDL успешно добавлен в Проект. Это можно проверить, наблюдая за левой навигационной панелью. Внутри проекта есть несколько операций, и запросы добавляются в соответствии с WSDL.
Просмотр сведений
Чтобы получить более подробную информацию о проекте, дважды щелкните имя проекта, откроется новое окно с различными деталями.
На вкладке «Обзор» предоставляется различная информация, например:
-
Путь к файлу — отображает местоположение сохраненного проекта XML.
-
Сводка интерфейса — Имя интерфейса и связанный с ним WSDL.
-
Сводка теста — отображает наборы тестов, тестовые наборы, этапы тестирования, утверждения, добавленные в проект.
Путь к файлу — отображает местоположение сохраненного проекта XML.
Сводка интерфейса — Имя интерфейса и связанный с ним WSDL.
Сводка теста — отображает наборы тестов, тестовые наборы, этапы тестирования, утверждения, добавленные в проект.
Пользователь может дважды щелкнуть Имя интерфейса, чтобы получить сведения об интерфейсе. Откроется новое окно и отобразится информация, связанная с WSDL. Они очень полезны для просмотра и изучения WSDL.
На вкладке «Обзор» перечислены определения WSDL, части определения и подробности операции.
Аналогично, конечные точки службы содержат подробные сведения о конечных точках.
На вкладке «Содержимое WSDL» представлены все сведения о WSDL в формате XML / схемы, как показано на следующем снимке экрана.
SoapUI — TestSuite
TestSuite — это набор тестовых случаев, которые можно использовать для группировки функциональных тестов в логические единицы. В проекте SoapUI может быть создано любое количество TestSuites для поддержки масштабных сценариев тестирования.
Создание TestSuite
Шаг 1. Внутри проекта щелкните правой кнопкой мыши интерфейс (рядом с именем проекта) и выберите «Создать TestSuite».
Здесь SOAP — Example — это имя проекта, а CurrencyConvertorSoap и CurrencyConvertorSoap12 — интерфейсы.
Шаг 2 — Откроется новый мастер. Выберите варианты на основе требований.
Шаг 3 — После того, как выбор сделан, нажмите ОК.
Шаг 4 — Установите флажок «Создать LoadTest». Это создаст LoadTest для каждого TestCase, созданного в этом TestSuite.
Шаг 5 — Введите имя TestSuite в новом мастере и нажмите кнопку ОК.
Созданный TestSuite отображается на панели навигации, как показано на следующем снимке экрана.
Шаг 6 — Дважды щелкните Имя TestSuite, и на правой панели откроется окно TestSuite. Поскольку тестовые примеры не добавляются, он пуст.
Свойства TestSuite можно увидеть в нижней части панели навигации. Новые пользовательские свойства могут быть добавлены на уровне TestSuite.
SoapUI — TestCase
TestCase — это набор TestSteps, собранных для тестирования некоторых специфических аспектов веб-сервисов. Пользователь может добавить n TestCases в TestSuite и даже модульно их вызвать, чтобы вызывать друг друга для сложных сценариев тестирования.
Создание TestCase
Шаг 1 — В TestSuite пользователь может добавить несколько тестовых случаев. Щелкните правой кнопкой мыши набор тестов и выберите «Новый тестовый набор».
Шаг 2 — Введите имя TestCase и нажмите ОК.
Созданный TestCase имеет нулевые тестовые шаги на данный момент. TestCase добавляется с нулевым TestSteps для всех видов доступных тестов. После добавления TestSteps числа в скобках изменятся автоматически. Функциональный TestStep должен перейти в «Test Steps», тогда как Performance TestStep должен перейти в «Load Test», а Security TestStep — в «Security Tests».
Шаг 3 — Дважды щелкните Имя TestCase, и на правой боковой панели откроется окно TestCase. Так как TestSteps не добавлены, он пуст, как показано на следующем снимке экрана.
SoapUI — TestStep
TestSteps — это «строительные блоки» функциональных тестов в SoapUI. Они добавляются в TestCase и используются для управления потоком выполнения и проверки функциональности веб-служб, которые должны быть протестированы.
Вставка TestStep
Шаг 1 — Щелкните правой кнопкой мыши TestSteps. Добавьте Step и выберите соответствующий TestStep из списка. Например, если пользователь должен протестировать REST WebService, он выберет запрос на тестирование REST.
Шаг 2. Добавьте TestStep для проверки импортированного запроса SOAP, выбрав TestSteps → Добавить шаг → Запрос SOAP.
Шаг 3 — Введите имя TestStep и нажмите OK в мастере.
После нажатия «ОК», появляется диалоговое окно, чтобы выбрать операцию для вызова. Все операции перечислены, и пользователи могут выбрать операцию, которую они хотели бы вызвать.
Есть две операции, которые будут перечислены. Обе операции одинаковы, за исключением используемой версии SOAP. CurrencyConvertorSoap использует SOAP версии 1.1, тогда как CurrencyConvertorSoap12 использует SOAP версии 1.2.
Шаг 4 — Выберите первый — CurrencyConvertorSoap и нажмите ОК.
При добавлении TestCase могут быть добавлены различные стандартные утверждения. Утверждения также называются контрольными точками / точками проверки запроса / ответа SOAP.
Шаг 5 — Давайте создадим TestCase с опцией по умолчанию, что означает создание TestStep БЕЗ любой из следующих точек проверки:
- Проверяет, является ли ответное сообщение SOAP при выполнении теста.
- Проверяет правильность схемы ответа.
- Проверяет, содержит ли ответ SOAP ОТКАЗ.
Шаг 6 — После нажатия OK, появляется следующий XML-скриншот запроса.
Счетчик шагов теста теперь увеличивается до единицы по мере добавления функционального TestStep. Аналогично, при добавлении LoadSecurity и SecuritySteps соответствующее число автоматически увеличивается в зависимости от количества добавленных шагов.
SoapUI — запрос и ответ
Настройка запроса
Здесь мы выполним конвертацию валюты из INR в USD.
- FromCurrency — INR
- ToCurrency — USD
Затем введите эти данные вместо знака вопроса, который будет отправлен в виде XML-запроса. Поместив эти значения в соответствующие теги XML, нажмите кнопку «Отправить запрос», чтобы проверить ответ.
отклик
После отправки запроса запрос веб-службы обрабатывается веб-сервером и отправляет ответ, как показано на следующем снимке экрана.
Прочитав ответ, можно сделать вывод, что 1 единица МНО = 0,0147 долл. США.
HTTP-запрос
Сообщения SOAP транспортируются по протоколу HTTP. Чтобы просмотреть HTTP-запрос, щелкните RAW в окне запроса SoapUI (слева).
Запрос размещен на веб-сервере. Следовательно, используется метод POST Http.
Запрос SOAP транспортируется в теле сообщения http, которое показано следующим образом.
POST http://www.webservicex.com/currencyconvertor.asmx HTTP/1.1 Accept-Encoding: gzip,deflate Content-Type: text/xml;charset = UTF-8 SOAPAction: "http://www.webserviceX.NET/ConversionRate" Content-Length: 353 Host: www.webservicex.com Connection: Keep-Alive User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
HTTP-ответ
Щелкните вкладку «RAW» в окне ответа SOAP-UI, чтобы понять, как ответ отправляется через HTTP.
После обработки запроса отображается http-код ответа (200), что означает его успешность. Веб-сервер успешно его обработал.
Ответ SOAP отправляется обратно клиенту как часть тела сообщения HTTP.
HTTP/1.1 200 OK Cache-Control: private, max-age = 0 Content-Type: text/xml; charset = utf-8 Content-Encoding: gzip Vary: Accept-Encoding Server: Microsoft-IIS/7.0 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Sun, 22 Jan 2017 19:39:31 GMT Content-Length: 316
Следующие HTTP-коды используются для отправки ответов веб-сервером и очень полезны для отладки.
HTTP код | Описание |
---|---|
1хх: |
Информационный — это означает, что запрос был получен и процесс продолжается. |
2xx: |
Успех — действие было успешно получено, понято и принято. |
3xx: |
Перенаправление — это означает, что для выполнения запроса необходимо предпринять дальнейшие действия. |
4xx: |
Ошибка клиента — это означает, что запрос содержит неверный синтаксис или не может быть выполнен. |
5xx: |
Ошибка сервера — серверу не удалось выполнить явно допустимый запрос. |
1хх:
Информационный — это означает, что запрос был получен и процесс продолжается.
2xx:
Успех — действие было успешно получено, понято и принято.
3xx:
Перенаправление — это означает, что для выполнения запроса необходимо предпринять дальнейшие действия.
4xx:
Ошибка клиента — это означает, что запрос содержит неверный синтаксис или не может быть выполнен.
5xx:
Ошибка сервера — серверу не удалось выполнить явно допустимый запрос.
SoapUI — Свойства
Свойства являются центральным аспектом более сложного тестирования с SoapUI. Свойства функционального тестирования используются для параметризации выполнения и функциональности тестов.
-
Свойства могут использоваться для хранения конечных точек служб, что позволяет легко изменять фактические конечные точки, используемые во время выполнения теста.
-
Свойства могут использоваться для хранения учетных данных аутентификации, что упрощает управление ими в центральном месте или во внешнем файле.
-
Свойства могут использоваться для передачи и совместного использования идентификаторов сеансов во время выполнения теста, поэтому несколько шагов теста или тестовых случаев могут совместно использовать одни и те же сеансы.
Свойства могут использоваться для хранения конечных точек служб, что позволяет легко изменять фактические конечные точки, используемые во время выполнения теста.
Свойства могут использоваться для хранения учетных данных аутентификации, что упрощает управление ими в центральном месте или во внешнем файле.
Свойства могут использоваться для передачи и совместного использования идентификаторов сеансов во время выполнения теста, поэтому несколько шагов теста или тестовых случаев могут совместно использовать одни и те же сеансы.
Определение свойств
Свойства могут быть определены на многих уровнях в проекте.
-
Свойства, которые являются общими на уровне проекта, могут быть определены на уровне проекта.
-
Точно так же конкретные свойства TestSuite и TestCase могут быть определены на их соответствующих уровнях.
-
Специфические свойства проекта определены на вкладке Пользовательские свойства.
Свойства, которые являются общими на уровне проекта, могут быть определены на уровне проекта.
Точно так же конкретные свойства TestSuite и TestCase могут быть определены на их соответствующих уровнях.
Специфические свойства проекта определены на вкладке Пользовательские свойства.
Например, свойство «ToCurrency» можно определить на уровне проекта, щелкнув символ «+» и введя имя и значение свойства.
Доступ к собственности
Доступ к свойству можно получить в любом месте проекта с помощью расширения свойств.
Структура будет как —
-
$ {# Project # PropertyName} — для уровня проекта
-
$ {# TestSuite # PropertyName} — для уровня Test Suite
-
$ {# TestCase # PropertyName} — для уровня тестового примера
-
$ {TestStepName # PropertyName} — для уровня шага теста
-
$ {# MockService # PropertyName} — для свойства MockService
-
$ {# Global # PropertyName} — для глобальных свойств находится в меню «Файл» → «Настройки» → «Глобальные свойства». Это свойство можно использовать во всех проектах
-
$ {# System # PropertyName} — для свойства системы, которое можно найти в справке → свойства системы
-
$ {# Env # PropertyName} — для переменной среды
$ {# Project # PropertyName} — для уровня проекта
$ {# TestSuite # PropertyName} — для уровня Test Suite
$ {# TestCase # PropertyName} — для уровня тестового примера
$ {TestStepName # PropertyName} — для уровня шага теста
$ {# MockService # PropertyName} — для свойства MockService
$ {# Global # PropertyName} — для глобальных свойств находится в меню «Файл» → «Настройки» → «Глобальные свойства». Это свойство можно использовать во всех проектах
$ {# System # PropertyName} — для свойства системы, которое можно найти в справке → свойства системы
$ {# Env # PropertyName} — для переменной среды
Та же самая структура может быть размещена в Запросе XML, чтобы получить значение определенного атрибута во время выполнения.
Свойство также может рассматриваться как переменная в компьютерной программе. Если пользователь хочет определить что-то, что также может быть использовано где-то еще, свойства очень полезны. Свойства также могут определяться динамически, но это зависит от скрипта Groovy.
SoapUI — передача собственности
Иногда требуется извлечь какое-то значение из ответного сообщения и включить его в последующий запрос (ы). В таком случае у нас должен быть механизм для извлечения указанного значения и передачи его другим элементам проекта. SoapUI поддерживает такую функциональность с помощью Property Transfer TestStep.
Добавление передачи собственности
Шаг 1 — Выберите TestCase или TestStep, щелкните правой кнопкой мыши → Добавить шаги → Передача свойства.
Шаг 2 — Введите имя TestStep и нажмите OK.
Шаг 3 — Шаг RateTransfer добавлен, и откроется новый мастер.
Шаг 4 — Нажмите значок Добавить новую передачу свойства + в левом верхнем углу окна передачи свойства. Будет предложено ввести имя для передачи. Введите оценку и нажмите ОК.
Передача недвижимости
После того как передача создана, на панелях «Источник» и « Цель» необходимо указать соответствующие выражения XPath для извлечения и замены значений свойств. В раскрывающемся списке рядом с «Источником» перечислены различные уровни проектов SoapUI, которые можно использовать в качестве источника передачи свойств. По умолчанию будет показан ближайший TestStep.
В данном случае это запрос — INR в USD TestStep. В раскрывающемся списке рядом со свойством отображается свойство источника, которое используется при передаче, которое может быть либо запросом, ответом, либо конечной точкой службы.
Шаг 1 — Выберите Ответ и перейдите к языку пути. Пользователь может выбрать XPath, Xquery или Jason для определения свойства. В этом случае выберите XPath.
Шаг 2 — Чтобы получить объявление исходного XML, нажмите ns и укажите XPath.
Шаг 3 — Укажите цель, куда должно быть передано значение, извлеченное из приведенного выше выражения XPath. Целевая панель используется для этого в нижней части окна передачи свойств.
Шаг 4 — Передать извлеченное значение ConversionRateResult из ответа шага RequestINRtoUSD.
Цель — Свойства
Свойство — ConversionRate (добавлено новое свойство, изначально оно не имеет значения).
Шаг 5. После успешного выполнения тестового примера свойство ConversionRate обновляется на основе ответа.
Ниже приведен скриншот изначально.
Ниже приведен скриншот после успешного запуска.
Аналогично, Target может быть следующим XML-запросом. Если Target является SOAP-запросом, нам нужно предоставить XPath для идентификации целевого атрибута.
SoapUI — Панель журналов
Панель журналов хранит полную информацию о транзакции между клиентом и сервером. Пользователи смогут видеть различные вкладки панели журнала. В этой главе мы обсудим наиболее часто используемые области журналов при работе с SoapUI.
Журнал SoapUI
Журнал SoapUI отображает информацию ответа от веб-сервера. Эта же информация хранится в файле soapui.log установленной папки SOAP-UI в каталоге bin.
Журнал HTTP
Журнал HTTP отображает всю передачу HTTP-пакетов. Вся информация в RAW отображается в журнале HTTP.
Журнал ошибок
Журнал ошибок отображает все ошибки, обнаруженные в течение всего сеанса проекта. Та же информация доступна в файле «soapui-errors.log», который находится в каталоге «bin» установленного местоположения SoapUI.
Журнал памяти
Эта вкладка отслеживает потребление памяти и отображает ее в виде диаграммы, как показано на следующем снимке экрана. Это действительно полезно, когда выполняется операция с интенсивным использованием памяти.
SoapUI — Утверждения
Утверждение можно интерпретировать как контрольную точку или точку проверки. Как только запрос отправлен на веб-сервер, ответ получен. Требуется проверить ответ, который содержит данные, как ожидалось или нет. Для подтверждения ответа, SoapUI имеет функцию подтверждений.
Указывает на заметку
-
Утверждения используются для проверки сообщения, полученного TestStep во время выполнения.
-
Он сравнивает часть сообщения или все сообщение с некоторым ожидаемым значением.
-
В TestStep может быть добавлено любое количество утверждений, каждое из которых проверяет некоторый другой аспект и содержание ответного сообщения.
-
После выполнения TestStep все его утверждения применяются к полученному ответу, и в случае сбоя любого из них TestStep помечается как сбойный в представлении TestCase.
-
Неудачная запись отображается в журнале выполнения теста.
Утверждения используются для проверки сообщения, полученного TestStep во время выполнения.
Он сравнивает часть сообщения или все сообщение с некоторым ожидаемым значением.
В TestStep может быть добавлено любое количество утверждений, каждое из которых проверяет некоторый другой аспект и содержание ответного сообщения.
После выполнения TestStep все его утверждения применяются к полученному ответу, и в случае сбоя любого из них TestStep помечается как сбойный в представлении TestCase.
Неудачная запись отображается в журнале выполнения теста.
Тип утверждений
SoapUI поддерживает широкий спектр утверждений в ответ.
Ниже приведен список утверждений, поддерживаемых SoapUI.
Утверждение | Описание |
---|---|
Содержание недвижимости | |
Содержит | Проверяет наличие указанной строки. Он также поддерживает регулярные выражения. |
Не содержит | Проверяет отсутствие указанной строки. Он также поддерживает регулярные выражения. |
XPath Match | Использует выражение XPath для выбора целевого узла и его значений. Сравнивает результат выражения XPath с ожидаемым значением. |
XQuery Match | Использует выражение Xquery для выбора содержимого из целевого свойства. Сравнивает результат выражения XQuery с ожидаемым значением. |
Соответствие, статус, стандарты | |
HTTP DOwnload All Resource | Загружает все ресурсы, которые называются документами HTML (изображения, сценарии и т. Д.), И проверяет, что они все доступны. Применимо к любому свойству, содержащему HTML. |
Неверные коды состояния HTTP | Проверяет, что целевой TestStep получил результат HTTP с кодом состояния, которого нет в списке определенных кодов. Применимо к любому TestStep, который получает HTTP-сообщения. |
Не ошибка SOAP | Проверяет, что последнее полученное сообщение не является ошибкой SOAP. Применимо к SOAP TestSteps. |
Соответствие схемы | Проверяет, что последнее полученное сообщение соответствует определению схемы WSDL или WADL. Применимо к тестовым шагам SOAP и REST. URL определения схемы поддерживает расширения свойств (например, $ {# System # my.wsdl.endpoint} / services / PortType? Wsdl). |
SOAP Fault | Проверяет, что последнее полученное сообщение является ошибкой SOAP. Применимо к SOAP TestSteps SOAP Request — проверяет, является ли последний полученный запрос действительным SOAP-запросом. Применимо только к тестовым шагам MockResponse. |
SOAP-ответ | Проверяет, что последний полученный ответ является действительным ответом SOAP. Применимо только к шагам SOAP TestRequest. |
Допустимые коды состояния HTTP | Проверяет, что целевой TestStep получил результат HTTP с кодом состояния в списке определенных кодов. Применимо к любому TestStep, который получает HTTP-сообщения. |
Запрос WS-адресации | Проверяет, что последний полученный запрос содержит действительные заголовки WS-Addressing. Применимо только к MockResponse TestSteps. |
WS-Addressing Response | Проверяет, что последний полученный ответ содержит действительные заголовки WS-Addressing. Применимо только к шагам SOAP TestRequest. |
WS-Security Status | Проверяет, что последнее полученное сообщение содержало допустимые заголовки WS-Security. Применимо к тестовым шагам SOAP. |
скрипт | |
Сценарий Утверждение | Позволяет пользователям выполнять пользовательский сценарий для выполнения пользовательских проверок. Применимо только к TestSteps (т.е. не к свойствам) |
ОАС | |
Ответ SLA | Проверяется, было ли время ответа последнего полученного ответа в пределах установленного предела. Применимо к скриптам TestSteps и TestSteps, которые отправляют запросы и получают ответы. |
JMS | |
Статус JMS | Проверяет, что JMS-запрос целевого TestStep успешно выполнен. Применимо для запроса TestSteps с конечной точкой JMS. |
JMS Timeout | Проверяет, что инструкция JMS целевого TestStep не заняла больше времени, чем указанная продолжительность. Применимо для запроса TestSteps с конечной точкой JMS. |
Безопасность | |
Конфиденциальная информация | Проверяет, не содержит ли ответное сообщение конфиденциальную информацию о целевой системе. Мы можем использовать это утверждение для REST, SOAP и HTTP TestSteps. |
JDBC | |
Статус JDBC | Проверяет, что запрос JDBC целевого TestStep успешно выполнен. Применимо только к JDBC TestSteps. |
JDBC Timeout | Проверяет, что инструкция JDBC целевого TestStep не заняла больше времени, чем указанная продолжительность. Применимо только к JDBC TestSteps. |
SoapUI — Устранение неполадок
В SoapUI пользователи сталкиваются со многими общими общими проблемами, которые могут быть решены с небольшой настороженностью. Вот некоторые из наиболее распространенных проблем:
Проблема: пространство имен определено неправильно. Используйте правильное пространство имен. Пространство имен должно быть URL-адресом, где расположен веб-сервис.
Решение. Если при разработке утверждения сценария выдается ошибка, используйте log.info для вывода содержимого переменных.
Проблема. Если код ошибки получен в виде XML-ответа, это может быть связано с неправильным вводом.
Решение — Проверьте ввод XML запроса.
Пример — в конвертере валют, если вход «FromCurrency» равен «123», который не существует, выход выдает код ошибки как «SOAP-клиент», что означает, что проблема связана с параметром, который передается из на стороне клиента.
Запрос
отклик
Проблема — нет совпадения в текущем ответе при использовании XPath или XQuery.
Решение —
- Используйте правильный синтаксис при определении XPath или XQuery.
- Убедитесь, что используется двоеточие, а не точка при объявлении пространства имен.
- Убедитесь, что XPath и XQuery верны.
SoapUI — Тестирование производительности
Тестирование производительности является одной из наиболее распространенных важных контрольных точек в тестировании веб-сервисов. Тестирование производительности определяется как искусственное создание или моделирование нагрузки и измерение того, как ее обрабатывает окружающая среда.
Это означает, что необязательно должно быть то, как система работает при высокой нагрузке, это также может быть то, как она работает при базовой или ожидаемой нагрузке. Его даже не нужно структурировать, автоматизировать или создавать в TestWare, например, в SoapUI; простое обновление веб-браузера снова и снова, очень быстрое и нагрузочное тестирование.
Типы тестирования производительности
Ниже приведены типы тестирования производительности —
-
Базовое тестирование — исследует, как система работает при ожидаемой или нормальной нагрузке, и создает базовый уровень, с которым можно сравнивать другие типы тестов.
-
Нагрузочное тестирование — включает в себя увеличение нагрузки и посмотреть, как система ведет себя при более высокой нагрузке. Во время нагрузочных тестов пользователь может отслеживать время отклика, пропускную способность, состояние сервера и многое другое. Цель нагрузочного тестирования — не нарушать целевую среду.
-
Тестирование на замачивание . Цель тестирования — убедиться, что нежелательное поведение не возникает в течение более длительного периода времени.
-
Тестирование масштабируемости — Тестирование масштабируемости очень похоже на нагрузочное тестирование, однако вместо увеличения количества запросов он увеличивает размер или сложность отправляемых запросов. Например, отправка больших запросов, больших вложений или глубоко вложенных запросов.
Базовое тестирование — исследует, как система работает при ожидаемой или нормальной нагрузке, и создает базовый уровень, с которым можно сравнивать другие типы тестов.
Нагрузочное тестирование — включает в себя увеличение нагрузки и посмотреть, как система ведет себя при более высокой нагрузке. Во время нагрузочных тестов пользователь может отслеживать время отклика, пропускную способность, состояние сервера и многое другое. Цель нагрузочного тестирования — не нарушать целевую среду.
Тестирование на замачивание . Цель тестирования — убедиться, что нежелательное поведение не возникает в течение более длительного периода времени.
Тестирование масштабируемости — Тестирование масштабируемости очень похоже на нагрузочное тестирование, однако вместо увеличения количества запросов он увеличивает размер или сложность отправляемых запросов. Например, отправка больших запросов, больших вложений или глубоко вложенных запросов.
Ключевые аспекты в веб-сервисе
Два аспекта выделяются уникальными характеристиками производительности веб-службы.
Первый аспект
На стороне сервера происходит обработка XML / JSON, как синтаксический анализ XML / JSON, так и сериализация . Первое, что часто терпит неудачу, — это обработка полезных данных. Причины неудачи могут быть множественными; это может быть в платформе, слабости сервера приложений, или это может быть проблема реализации в виде излишне сложных WSDL. Это также может означать, что код выполняет запрос к базе данных, которая медленно отвечает.
Аспект тестирования . Сложность парсинга полезной нагрузки XML / JSON означает, что необходимо уделять особое внимание тестированию масштабируемости. Это также означает, что WSDL должны быть тщательно изучены. Если запросы и ответы являются сложными или большими или если они содержат большие вложения, следует сосредоточиться на том, чтобы подчеркнуть сложность и посмотреть, как она ведет себя под нагрузкой.
Второй аспект
Другим часто встречающимся фактором является безопасность. Защищенные сайты за HTTPS имеют значительно более низкую производительность, и при тестировании веб-служб мы можем добавить уровень WSSecurity к уровню безопасности HTTP, еще больше снижая производительность.
Аспект тестирования — вопрос безопасности означает, что необходимо сосредоточиться на выполнении тестирования безопасных запросов. Если вся веб-служба защищена, это означает, что нагрузочное тестирование является более важным, особенно если используется WS-Security и обработка токенов.
SoapUI — нагрузочное тестирование
Нагрузочное тестирование — это особая форма тестирования производительности, которая проводится для оценки поведения системы при определенной нагрузке. В SoapUI мы обычно используем термин «нагрузочное тестирование» для всех типов нефункционального тестирования, однако SoapUI поддерживает все типы оценок производительности веб-сервисов, такие как нагрузка, стресс и выносливость.
Указывает на заметку
-
Нагрузочное тестирование довольно уникально в SoapUI; функциональный тестовый пример, позволяющий быстро создавать и изменять тесты производительности.
-
Основным отличием является то, что тесты производительности в SoapUI обычно создаются на основе существующих функциональных тестов. Это позволяет быстро создавать расширенные тесты производительности.
-
Производительность веб-службы можно проверить при различных сценариях загрузки. Выполните функциональные проверки, чтобы убедиться, что они не ломаются под нагрузкой, запустите несколько нагрузочных тестов одновременно, чтобы увидеть, как они влияют друг на друга, и многое другое.
Нагрузочное тестирование довольно уникально в SoapUI; функциональный тестовый пример, позволяющий быстро создавать и изменять тесты производительности.
Основным отличием является то, что тесты производительности в SoapUI обычно создаются на основе существующих функциональных тестов. Это позволяет быстро создавать расширенные тесты производительности.
Производительность веб-службы можно проверить при различных сценариях загрузки. Выполните функциональные проверки, чтобы убедиться, что они не ломаются под нагрузкой, запустите несколько нагрузочных тестов одновременно, чтобы увидеть, как они влияют друг на друга, и многое другое.
Создание нагрузочного теста
Шаг 1 — Щелкните правой кнопкой мыши по функциональному тестовому кейсу и выберите New Load Test.
Шаг 2. Введите имя Load Test и нажмите OK в мастере диалога.
Load Test откроется, и Load Test будет создан, как показано на следующем снимке экрана.
Выполнение нагрузочного теста
Когда создается новый нагрузочный тест, он предварительно настроен для работы в течение 60 секунд (вверху справа) с 5 потоками, используя стратегию простой загрузки.
Измените эти значения согласно требованию и Выполните. Примечание . Пользователь должен знать о конфигурации и понятиях нагрузочного тестирования.
Пользователь увидит таблицу статистики посередине, начиная со сбора данных и через 60 секунд должен завершить LoadTest.
Добавление утверждения
Шаг 1 — В редакторе LoadTest выберите вкладку Утверждение LoadTest внизу редактора.
Шаг 2 — Нажмите кнопку «Добавить подтверждение» в строке меню «LoadTest Assertion», чтобы добавить подтверждение.
Шаг 3 — Откроется диалоговое окно Add Assertion. Выберите шаг максимум. Выберите Максимум устанавливает максимальное время в миллисекундах, которое могут принимать ответы, если время превысит установленное нами, тест не пройден. Нажмите ОК.
Шаг 4 — Откроется окно Утверждение MaxStep Max. Как видно на следующем снимке экрана, мы допускаем максимальный отклик в одну секунду, 1000 миллисекунд. Давайте не будем ничего менять. Нажмите ОК.
Утверждение максимального шага теперь будет успешно добавлено.
Шаг 5 — Теперь запустите тест снова. Если ответы занимают слишком много времени, вы должны увидеть, что числа в столбце err суммируются быстро.
SoapUI — веб-сервисы RESTful
Веб-сервис — это набор открытых протоколов и стандартов, используемых для обмена данными между приложениями или системами. Программные приложения, написанные на разных языках программирования и работающие на разных платформах, могут использовать веб-службы для обмена данными по компьютерным сетям, таким как Интернет, аналогично межпроцессному обмену данными на одном компьютере. Эта совместимость (например, между приложениями Java и Python или Windows и Linux) обусловлена использованием открытых стандартов.
Веб-сервисы на основе архитектуры REST известны как веб-сервисы RESTful. Эти веб-сервисы используют методы HTTP для реализации концепции архитектуры REST. Веб-служба RESTful обычно определяет URI (Uniform Resource Identifier), который представляет собой службу, которая обеспечивает представление ресурсов, например JSON, и набор методов HTTP.
Все возможности тестирования REST SoapUI основаны на логическом представлении, известном как служба REST. Мы не должны путать это с термином «сервис», так как это не реализация сервиса, а отображение сервиса RESTful, который вызывается. Мы можем добавить как можно больше REST-сервисов в проект SoapUI. Каждый представляет определенный сервис RESTful. Они заключаются в следующем —
SoapUI — соединение JDBC
SoapUI позволяет управлять работой базы данных с помощью TestStep, который называется JDBC Request.
Шаг 1 — Щелкните правой кнопкой мыши TestStep и выберите Добавить шаг → Запрос JDBC.
Шаг 2 — введите имя шага и нажмите ОК.
Шаг JDBC добавлен. Дважды щелкните шаг, и откроется мастер JDBC.
Чтобы создать соединение JDBC, пользователь должен предоставить действительный драйвер и строку подключения. Эти параметры используются для определения типа базы данных и создания соединения для использования базы данных.
Для MySQL драйвером базы данных может быть com.mysql.jdbc.Driver . Аналогично, для другой базы данных есть предопределенный драйвер, который можно найти в разделе документов базы данных.
Шаг 3 — Строка подключения должна быть в следующем формате —
Jdbc:mysql://[host]:[port]/[database]?[property][=value]
Здесь свойство — это имя пользователя и пароль, а также другие параметры, необходимые для соединения с базой данных.
Например,
jdbc:mysql://localhost:8089/xxx_DB?user=root&password=root
Шаг 4 — Нажмите «Проверить соединение». При успешном подключении будет отображаться УСПЕХ, в противном случае предоставьте подробности отказа.
SoapUI — Недвижимость JDBC
JDBC имеет свой собственный раздел свойств Add, который можно использовать в качестве переменной в SQL Query.
Давайте посмотрим, как это ведет себя —
Предположим, SQL-запрос, который необходимо выполнить на шаге JDBC, это Select * from Currency, где CurrencyCode = ‘xxx’.
В этом случае CurrencyCode может быть изменен в зависимости от ввода запроса. Если пользователь предоставляет жестко запрограммированное значение, шаг JDBC не будет выполнен для валюты, указанной в запросе.
Чтобы преодолеть такие сценарии, JDBC поддерживает свойство add, где можно определить код свойства, и оно будет изменяться с помощью шага передачи свойства.
SQL-запрос будет выполняться на основе текущего значения кода свойства, а SQL-запрос будет параметризировать CurrencyCode =: Code.
Нажмите Добавить свойство + и введите имя в виде кода и укажите значение или оставьте пустым, чтобы использовать шаг Передача свойства для его предоставления.
SoapUI — утверждение JDBC
Запрос JDBC также может использовать большинство утверждений с SOAP-запросом TestSteps. В SoapUI большинство этих утверждений не зависят от TestSteps. Следовательно, утверждения, такие как Contains и XPath Match, могут использоваться с JDBC Request TestStep.
Нажав значок Добавить утверждение в верхнем меню JSBC Request TestStep, пользователь может узнать, какие утверждения поддерживаются TestStep.
В дополнение к общим утверждениям, есть два специальных утверждения JDBC Request TestStep —
JDBC Timeout — это утверждение можно использовать для проверки того, выполняется ли текущий запрос SQL в указанном значении свойства Query Timeout.
Статус JDBC — чтобы проверить, успешно ли выполнен оператор SQL, мы можем использовать утверждение статуса JDBC.
Чтобы установить время ожидания запроса, укажите соответствующее значение времени ожидания запроса свойства в левой части экрана. Пожалуйста, имейте в виду, он принимает значение в миллисекундах (мс).