Как из soapui получить html код

от admin

самый простой способ разобрать html из HTTP-запроса soapui

Я думаю об использовании groovy, это лучший способ? Если да, я новичок как в soapui, так и в groovy, любой фрагмент кода для начала работы (как получить html-контент из шага HTTP-запроса, как анализировать в groovy), спасибо.

2 ответа

Если вы чувствуете себя более комфортно с Groovy, дерзайте!

SoapUI внутренне представляет почти все как XML. Поэтому самый простой способ манипулировать вещами в SoapUI — использовать XPath. В вашем случае вы, вероятно, могли бы использовать шаг Properties Transfer для извлечь //span[@class=»result»] .

Разработка и тестирование веб сервисов на PHP/SoapUi

Веб сервисы достаточно удобный метод организовать клиент-серверное общение, особенно если обе стороны используют разные платформы. Формализация общения позволяет однозначно определить словарь сообщений и применить огромное количество уже существующих библиотек и методик. Enterprise платформы (.net, jee) включают множество утилит для дизайна, разработки и тестирования веб сервисов, и многие из этих утилит вполне применимы на небольших проектах.

Эта статья описывает создание простого веб сервиса на php и его автоматизированное тестирование.

Веб сервис будет реализовывать три операции: реверс строки, суммирование и эхо.

Наш план: сначала планируем и объявляем, потом реализовываем. Таким образом у мы последовательно пройдем три этапа:

1. WSDL first — объявим наш словарь, или создадим контракт
2. Реализуем контракт на PHP
3. Автоматизируем процесс тестирования

Требования

Все инструменты open source
PHP 5+
NUSOAP — php библиотека для работы с WS (http://sf.net/projects/nusoap)
Eclipse от eclipse.org, версия for EE developers — мы воспользуемся только WSDL редактором.
SoapUI — soapui.org. Пакет для тестирования веб сервис ориентированных приложений

WSDL first

WSDL это контракт, т.е. соглашение по которому сервер обязуется обслуживать клиента и указывает параметры этого процесса. По сути это XML документ, который описывает методы, типы данных и другие параметры.

Существует два подхода к написанию веб сервисов:

1. Разработчик пишет программный код и средства платформы реализуют WSDL автоматически

2. Дизайнер или архитектор описывает интерфейсы в WSDL и под них имплементируют логику.

Многие разработчики идут по первому пути, т.е. они пишут код (java, c# и тп) м не задумываются о веб сервисах. С точки зрения разработчика это явный плюс.
Но эта стратегия сильно проигрывает в крупных проектах, с несколькими распределенными командами. В идеале, мы бы хотели стабилизировать интерфейсы и, например, позволить команде пишущей клиента не ждать релизов от команды пишущей сервер. И QA тоже должны начать писать тесты как можно раньше.
Таким образом мы приходим к необходимости написания WSDL в первую очередь.

Создадим WSDL с помощью Eclipse:

После запуска эклипса, создайте проект New->Other->Web services->WSDL
Имя файла укажите «ws.wsdl», namespace: «sample»
(namespace не имеет отношения к WS, так как является обычной практикой работы с XML)
После создания вы получите новый WSDL с одной операцией «NewOperation».
Удалите ее и создайте новую с именем «reverse». Клики по стрелкам позволяют просмотреть все параметры, но менять их не обязательно.

Сама операция revers будет получать строку от клиента и возвращать ее в обратном порядке следования символов, т.е. нужен один IN параметр String и результат String. Добавьте их в вашу операцию.

Вы можете сами добавить операции ping и sum с необходимыми параметрами (или откройте wsdl из архива, см линк в конце)
Сохраните ваши изменения как ‘ws.wsdl’
Теперь у вас есть контракт, и вы можете отдать его разработчикам клиента, сервера, QA и тд. Все они могут начинать работу независимо друг от друга.

Реализуем WS на PHP

Создайте директорию soap в вашей public_html и скопируйте ws.wsdl (соответственно файл доступен как yourserver/soap/ws.wsdl)
Серверный код мы поместим в ws.php, и localhost/soap/ws.php будет линком вашего веб сервиса.
Дополнительно распакуйте nusoap в ‘soap’.

Перейдем к непосредственной реализации логики:

Первые строки вашего ws.php:
require(‘lib/nusoap.php’);
$server = new soap_server(‘ws.wsdl’);

Эта конструкция сообщает скрипту, что надо реализовать указанный контракт. Сам вызов будет обработан:

Это все, что необходимо для поддержки WS, остальное это ваша логика — бизнес методы.

Для каждой операции из контракта надо создать php функция с эквивалентным именем.
Вот пример всего файла:
<?php

require(‘lib/nusoap.php’);
$server = new soap_server(‘ws.xml’);

function reverse($in) <
return strrev($in);
>

function ping() <
return time();
>

function sum($a, $b) <
return ($a + $b);
>

Если вы откроете в браузере: localhost/soap/ws.php — вы увидите все доступные операции.

Теперь ваш сервер готов обслуживать клиентов! Но к вас нет клиента… и мы не будем его писать, так как применим автоматизированное тестирование…

(не забудьте, что мы будем тестировать веб сервис, что является интеграционным тестированием, и не отменяет написания юнит тестов на бизнес методы)

Тестируем с SoapUI

SoapUI это великолепное средство для тестирования и разработки систем на основе веб сервисов. Эта утилита достойна отдельной статьи, поэтому мы воспользуемся лишь одной из опций — протестируем наш сервер, эмулируя клиента.

Для этого нам понадобятся несколько кликов…

Запустите soapUi и создайте новый проект, в качестве wsdl укажите наш ws.wsdl. Не меняйте другие параметры.

Это создаст проект и вы уведете все операции в дереве. Кликнете правой кнопкой на сервисе и выберите ‘Generate TestSuite’. Установите стиль на ‘Singe suite . ‘.

Результатом будет test suit в дереве и окно пакета (его можно закрыть.)

Сам тестовый пакет содержит ряд шагов, по одному на каждую операцию. Как вы уже догадались, это и есть элементы для проверки вашего сервиса. Вы можете запустить их все разом, или по одному, в зависимости от ваших целей.
Мы попробуем запускать их по одному, предварительно настроив.
Кликните на шаге reverse, вы увидете две панели, панель запроса и панель ответа. Контент запроса генерируется автоматически на основе контракта с знаками вопроса на месте данных. В нашем случае у нас есть один placeholder для строки, введем значение 123456789
Проверьте что target url наверху панели указывает на ваш сервис и вы можете запустить шаг на выполнение использую зеленый треугольник на панели.
Запрос уйдет на сервер и вторая панель отобразит ответ, который должен содержать 987654321 — входной параметр в обратном порядке.
Визуально мы можем убедится, что наша система работает корректно, но есть минус — мы видим это визуально. В идеале мы бы хотели это автоматизировать для регрессивного тестирования.

Обратите внимание на иконку сразу за ‘Run’. Здесь собраны условия для проверки ответа и вы можете добавить условие наличие строки 987654321 в ответе.

Теперь у вас есть автоматизированный тест, который может выполняться как вручную, так и сервером сборки.

easiest way to parse html from soapui http request

I’m thinking about using groovy,is it the best way ? If yes I’m beginner in both soapui and groovy, any snippet code to get started (how to get html Content from http request step, how to parse in groovy) thanks.

2 Answers 2

If you feel more comfortable with Groovy, then go for it!

SoapUI internally represents almost everything as XML. Therefore the easiest way to manipulate things in SoapUI is using XPath. In your case, you could probably use a Property Transfer step to extract //span[@class=»result»] .

SOAP UI

В этой статье Вы узнаете о том что такое SOAP UI и увидите некоторые примеры использования.

Читать:
Project structure в intellij idea как открыть

Если Вам проще изучать материал от самого простого к более сложному — рекомендую сперва прочитать первые несколько страниц моего учебника здесь

SoapUI — это приложение для тестирования веб-сервисов с открытым исходным кодом для сервисно-ориентированных архитектур (SOA) и передач состояния представления (REST).

Разработчик — Eviware Software

Язык программирования, на котором пишут скрипты в SOAP UI, называется Groovy .

Его функциональность охватывает проверку веб-сервисов, вызов, разработку, моделирование и имитацию, функциональное тестирование, нагрузочное тестирование и проверку соответствия.

Коммерческая версия SoapUI Pro, которая в основном фокусируется на функциях, предназначенных для повышения производительности, также была разработана Eviware Software. В 2011 году SmartBear Software приобрела Eviware.

SoapUI был первоначально выпущен в SourceForge в сентябре 2005 года. Это бесплатное программное обеспечение, лицензированное в соответствии с публичной лицензией Европейского Союза.

Начиная с первого релиза, SoapUI был загружен более 2 000 000 раз. Он полностью построен на платформе Java и использует Swing для пользовательского интерфейса. Это означает, что SoapUI является кросс-платформенным. Сегодня SoapUI также поддерживает IDEA, Eclipse и NetBeans.

SoapUI может тестировать веб-службы SOAP и REST, JMS, AMF, а также совершать любые вызовы HTTP(S) и JDBC.

Ссылку на скачивание SOAP UI можно найти здесь

SOAP UI изображение с сайта www.andreyolegovich.ru

Как отправлять запросы

New REST Project → Пишем URI → Запрос создаётся, можно добавлять новые.

Method можно выбирать из выпадающего списка.

Проект имеет иерархическую структуру.

Project → Service → Resource → Method → Request

Названия отражают суть:

Request (запрос) это то место, где можно поменять тело запроса и просмотреть ответ сервера. Чтобы отправлять запросы нужно нажимать зелёный треугольник.

Method (метод) указывает GET, POST, PUT или другой метод, который Вы будете использовать. Все дочерние запросы будут иметь один и тот же Method.

Resourse (ресурс) отвечает за ту часть URL, которая добавляется к базовой.

Service (сервис) отвечает за базовую часть URL

Как сохранять проекты

Советую помимо использования «Save all projects» закрывать все новые окна вручную. Тогда SOAP UI предложит Вам сохранить каждый проект по отдельности.

После того, как все новые проекты сохранены, Вы можете закрыть SOAP UI. Я стараюсь закрывать SOAP UI только когда все окна закрыты.

Создание Test Suit in SOAP UI

Коротко:

→ Правый клик Project → Create New TestSuit (CTRL + T)
→ Укажите имя для TestSuit → Правый клик на TestSuit
→ New TestCase (CTRL + N) → Укажите имя для TestCase
→ Expand Test Case → Кликните на Test Steps → Add Step
→ Выберите request (e.g. SOAP Request) → Укажите имя для new step
→ Выберите операцию, которая запускает request
→ Добавьте Request в TestCase (OK)

Зелёная « +» иконка плюса появится наверху.

Кликнув на неё Вы можете добавить Assertions.

Подробно:

SOAP UI New Test Suite Правый клик Project изображение с сайта www.andreyolegovich.ruПравый клик на названии проекта

Create New TestSuit (CTRL + T)

Specify name of TestSuite изображение с сайта www.andreyolegovich.ruУкажите имя для TestSuit

→ Правый клик на TestSuit

New TestCase изображение с сайта www.andreyolegovich.ruNew TestCase (CTRL + N) Specify name of TestCase изображение с сайта www.andreyolegovich.ruУкажите имя для TestCase

→ Expand Test Case

→ Кликните на Test Steps

→ Выберите request (e.g. SOAP Request)

→ Укажите имя для new step

→ Выберите операцию, которая запускает request

→ Добавьте Request в TestCase (OK)

Зелёная «+» иконка плюса появится наверху. Кликнув на неё Вы можете добавить Assertions.

Assertions в SOAP UI

Assertions добавляются в TestSuit

Поэтому, чтобы добавлять Assertions нужно создать хотя бы один TestSuit и затем кликнуть на зелёную+ иконку.

SOAP UI assertion types изображение с сайта www.andreyolegovich.ru

Затем Вы можете выбрать однин из многих доступных в SOAP UI типов assertion.

SOAP UI assertion typesизображение с сайта www.andreyolegovich.ru

Property Content → Contains

Выберите Contains. С помощью этого подтверждения (assertion) можно искать присутствует ли в ответе заранее определённое ключевое слово. Оно поддерживает регулярные выражения и применимо ко всем ответам.

Specify unique name of Assertion

SOAP UI assertion types изображение с сайта www.andreyolegovich.ru

Type in content that you expect to receive in case of successfull request

Contains Assertion изображение с сайта www.andreyolegovich.ru

Property Content → Not Contains

Выберите Not Contains. С помощью этого подтверждения (assertion) можно проверить отсутствие в ответе заранее определённого ключевого слова. Оно поддерживает регулярные выражения и применимо ко всем ответам.

Введите уникальное имя для Assertion

SOAP UI assertion types изображение с сайта www.andreyolegovich.ru

Введите сюда то, что Вы точно не хотите видеть в теле ответа

Contains Assertion изображение с сайта www.andreyolegovich.ru

Compliance, Status и Standards

SOAP Response

Выберите SOAP Response. В этим assertion Вы можете проверить что последний полученные ответ является валидным SOAP ответом. Это можно применять только к SOAP TestRequest Steps. Не пытайтесь применять этот assertion к REST запросам.

Двойной клик на Assertion. Никакие дополнительные параметры не нужны этот шаг можно добавить только один раз.

SOAP Request assertion изображение с сайта www.andreyolegovich.ru

Compliance, Status и Standards

Valid HTTP Status Code

Выберите Valid HTTP Status Code. С помощью этого assertion Вы можете проверить является ли последний полученный ответ (Response) валидным SOAP ответом (Response).

Как Вы уже, наверное, догадались, этот assertion применим только к SOAP TestRequest Steps. Не пытайтесь использовать его для REST запросов.

Valid HTTP Status Code assertion изображение с сайта www.andreyolegovich.ru

Type in the HTTP Status Codes that are appropriate for your request.

Обычно это 200, но всё же стоит прочитать спецификацию системы, которую Вы тестируете..

Valid HTTP Status Code assertion изображение с сайта www.andreyolegovich.ru

Изображение баннера

SLA → Response SLA

Выберите Response SLA. С помощью этого assertion Вы можете подтвердить, что последний полученный ответ (Response) был получен в течении определенного времени.

Можно применять к Script TestSteps и TestSteps которые посылают запросы и получают ответы.

Response SLA assertion изображение с сайта www.andreyolegovich.ru

Укажите максимальное время ответа (мс)

Если время в которое нужно уложиться не указано в спецификации — поставьте какое-то разумное время.

Укажите максимальное время ответа soap ui response assertion изображение с сайта www.andreyolegovich.ru

Изображение баннера

Property Content → XPath Match

Выберите XPath Match. Этот Assertion использует выражение типа XPath чтобы выбрать содержимое указанного объекта и сравнить результат с ожидаемым значением.

Может быть применён к любому объекту, который содержит XML.

Чтобы подтвердить что нужные данные присутствуют в ответе напишите exists (//данные_которые_должны_придти)

В поле Expected Result напишите true.

Specify XPath expression and expected result изображение с сайта www.andreyolegovich.ru

Чтобы проверить не наличие как таковое, а значение какой-то величины введите в XPath Expression либо полный путь до величины либо её имя.

А само значение, которое Вы ожидаете получить введите в поле Expected Result.

Specify XPath expression and expected result изображение с сайта www.andreyolegovich.ru

В случае, если, например, мы не можем соединиться с сервером и все наши assertions зафейлились у них появятся красные индикаторы.

SOAP UI failed assertions изображение с сайта www.andreyolegovich.ru

Сервис-имитация

О том как создать сервис-имитацию (mock-service) вы можете прочитать в статье Mock Service

Нужен ли SOAP UI?

Ответ на этот вопрос зависит от уровня Вашей подготовки, предпочтений и, в каком-то смысле, идеологии.

Начинающему тестировщику SOAP UI пригодится хотя бы потому, что хранить и создавать запросы в нём прощё и быстрее чем другими способами.

Тестировщик с опытом программирования, например, на Python может написать все необходимые скрипты самостоятельно.

Идеологическим приверженцам работы из консоли или только из Linux тоже может показаться что в SOAP UI слишком много UI.

Установка SOAP UI в Linux

Обратите внимание на необходимость предварительной установки Java (JRE).

Как установить Java читайте здесь

Существует официальная инструкция, но если хотите сэкономить время и нервы…

Скачиваем установщик. Копируем в нужную директорию, например, в /opt. Распаковываем.

tar -zxvf SoapUI-5.4.0-linux-bin.tar.gz

Переходим в директорию SoapUI-5.4.0/bin

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Related Posts