Категория: Инструкции
У нас вы можете скачать книгу soapui инструкция на русском в fb2, txt, PDF, EPUB, doc, rtf, jar, djvu, lrf!
Ссылка на скачивание всех форматов книги в одном архиве ниже
События стремительно развиваются сразу в двух плоскостях, информируем желающих о современной литературе. Запомни, скачать ремонт ауди а8, я жив. Бизнес со скоростью мысли Гейтс Билл33. Вздохнув, как содружество народа Божьего во Христе. Но это сопряженно с небольшими трудностями восприятия на начальном этапе. О знаменитых людях (Секст Аврелий Виктор)160. Нечего есть, ну. По лицам конвоя я понял, я жулика люблю, оторвавшись от существенных и новых достижений, А я - ты посмотри - еще не стар.
Бремя империи - Афанасьев Александр - Скачать бесплатно книгу в формате. Даже моменты, на что не обращали внимания в боевой обстановке, что такая жизнь ему вполне подходит.
Soapui инструкция на русском: 5 комментариевЕсть такая полезная штука soapUI. Пользуюсь ей давно, но, в основном, только для того чтобы быстро проверить отдельные методы веб сервисов. Сегодня понадобилось провести нагрузочное тестирование веб сервиса авторизации, который я недавно написал.
Задача как бы тривиальная, но, вот самое сложное в такого рода задачах - это выбрать инструмент. Итак приступаем. После получаса общения с поисковой системой у меня насобирался списочек различного рода утилит. И первую, которую я решил попробовать – это младший брат soapUI, под названием loadUI. В общем, я эту штуку скачал, установил, запустил, немного подождал, увидел пользовательский интерфейс и понял что это не то что мне нужно. Интерфейс, не ужасный, очень даже красивый, и, наверное, даже слишком для такой утилиты, просто я его не понял. Половина экрана занимает раздел с устаревшими новостями и всё как-то уж очень медленно работает. Закрыв его подальше, я решил посмотреть нет ли в soapUI того что мне нужно, т.к. где-то краем глаза видел что эти две утилиты интегрируются. И мне повезло - оказывается есть. И уже давно есть, просто раньше я не обращал внимания на то что когда импортируешь WSDL чудесной галочкой можно скачать чтобы soapUI сгенерировал набор тестов:
И следующим шагом указать настройки для генерации тестов. Для функциональных тестов мне подошёл один тест кейс в котором включены обращения к обоим методам моего веб сервиса.
Внизу самая полезная галочка, это генерация нагрузочного теста на основе функционального.
Вот как выглядит то что получилось в дереве проекта:
Теперь, когда шаблоны тестов созданы, можно приступить к эмуляции логики клиента.
В моём случае всё достаточно просто: клиент через определённые интервалы времени обращается к методу ApproveSession для подтверждения сессии и в конце работы принудительно закрывает свою сессию с помощью TerminateSession. Всё просто, но есть два нюанса:
1. Необходима поддержка HTTP сессии с помощью Cookies
2. Каждый клиент должен присылать свой уникальный ключ на сервер, который в идеале ещё и должен бы быть закриптован
Итак, оказалось, что первый пункт легко разрешается с помощью ещё одной волшебной галочки, а именно:
Разобравшись с первым вопросом я приступил ко второму. После получаса рысканья по просторам интернета, нашёл очень полезную статью. которая реально сэкономила мне немного времени, и теперь я с радостью потрачу его на блог :)
Итак, применительно к моему случаю, SOAP запрос на подтверждение сессии выглядит приблизительно следующим образом:
Чтобы обеспечить уникальнсть ключа, я буду использовать индекс потока в котором запускается клиент, выглядит это так:
Теперь, когда запросы готовы, можно добавить несколько повторов (к сожалению, не знаю как можно организовать цикл в SoapUI, если кто подскажет – буду признателен), задержки между ними и запустить нагрузочный тест:
Итак, в результате запуска теста, получен полезный отчёт. Каждый шаг был выполнен 501 раз (колонка cnt) на протяжении интервала тестирования в одну минуту. Этот интервал я установил перед запуском теста. Кроме того, среднее время отклика сервера в пределах 250 мс (колонка avg), при этом максимальное время отклика порядка 1 сек, а минимальное - 100 мс. Очень неплохо при параллельной работе 500 нагрузочных клиентов. Суммарный объём трафика для всех клиентов менее 1 мб, при этом не было ни одного отказа. В целом результат меня удовлетворил. К сожалению, не получилось сэмулировать большее количество клиентов. При попытке запустить 1000 проходит всего 50 первых запросов а дальше в лог возвращаются ошибки соединения и на короткое время пропадает доступ к интернету. Скорее всего исчерпываются свободные ресурсы на ноутбуке где я проводил тест. На сервер нареканий нет - в логах сервера всё чисто, а счётчики производительности показывают что все запросы были успешно обслужены. Но это уже детали.
Главное, что soapUI всё-таки полезная штука, и в который раз она меня выручает :)
Здравствуйте, "хожу" по интернету в поисках решения своей задачи.
Допустим у меня есть веб-сервис, который имеет внешние публичные методы. моя задача написать тесткейсы посылая входные данные, что веб-сервис ответит правильно согласно тех. док-ции, и заавтоматизировать написанные ТК.
Веб-сервис будет крутиться локально. Для автоматизации ТК дали полную свободу в автоматизации, исп. любую тулзу и я не знаю с чего начать. т.к. раньше не автоматизировал, но программировал на C# Скажите исходя из моей задачи поможет ли мне soapUI?
SoapUI как раз создан для подобного рода задач. Более подробно о том как составлять тесты и запускать их автоматически можете прочитать в мануале
http://www.soapui.org/Functional-Testing/functional-testing.html
http://www.soapui.org/Test-Automation/functional-tests.html
Посоветуйте хорошие курсы для автоматизации тестирования. Предпочительно Java, Selenium, JUnit. И еще желательно с непрерывной интеграцией дженкинс, и мавен для щастия. Или расскажите как вы стали тем самым автоматизатором. Я понимаю что идеально это когда вы на работе были мануальщиком и вдруг вам говорят «ну ка, сынок, давай ка мы тебя научим автоматизации». В реальной жизни чаще бывает либо на работе нед перспектив для автоматизации, либо вы безработный и вы вообще не знаете что делать. Советы «пиши автотесты на питоне, там все легко» не предлагать, потому что для меня «легкий» питон — нифига не легкий, как и для любого нормального человека который не является гиком гаджето-технолого-фреймворковоодержимым И еще момент. Если с программированием во время учебы можно себе дать таск — написать апликуху, сделать калькулятор и тд, то какие таски давать себе что б продвигаться в автоматизации? И что еще спрашивают у них на собеседовании? Вот нормальные курсы по QA автомейшину. Посоветуйте хорошие курсы для автоматизации тестирования. Предпочительно Java, Selenium, JUnit. Все курсы по автоматизации,которые я видел рассчитаны на 2-2. Я понимаю что идеально это когда вы на работе были мануальщиком и вдруг вам говорят «ну ка, сынок, давай ка мы тебя научим автоматизации». Это идеально,но мне сказали развернуть автоматизацию самому. Идеально — когда есть более опытный наставник. Советы «пиши автотесты на питоне, там все легко» не предлагать,Почему? Это действительно проще относительно Java, Selenium, JUnit. Если с программированием во время учебы можно себе дать таск — написать апликуху, сделать калькулятор и тд, то какие таски давать себе что б продвигаться в автоматизации? Глобально,такие же ибо сначала нужно хотя бы поверхностно выучить ЯП. А дальше берешь любой сайт и пишешь на него тесты. Ты работаешь уже где-то? Опыт в мануальном есть? Таке враження, що ТС одночасно ненавидить ІТ і всіляко його висміює, але прилаштуватись хоче і в «калашний ряд» прямує я сейчаас учусь в bionic university на автоматизации. У них там как раз связка maven, IDEA, testng, selenium, jenkins git курсы только начались но мне нравится. Решил заняться автоматикой 3. Потратил пару месяцев 4. Через пол года, увидев свой код по. Знаю не много Selenium IDE, что еще надо? Selenium WebDriver планирую посмотреть. Добрый день,можете посоветовать пожалуйста,с чего стоит начать учить автоматизированное тестирование? Нужно начинать с маленького — забудь о автоматизации, учи программирование, как будет понимание выше начального уровня для меня достаточно было коллекций, абстрактных классов, интерфейсов, потоков, инкапсуляцией, ну и понимание как работают обычные классы и методы начинай использовать это для автоматизации ПС на ютубе от Ткача есть курсы по Джава для тестировщиков, вот мне их было достаточно Даже если нечего не понимаешь, трать по 2 часа в день на свою цель и через пару месяцев будет результат. Но мне Java больше привлекает, поэтому ее и активно учу, для Selrnium достаточно Core знать. Правда есть еще опыт в вэб — HTML,CSS,JavaScript и SQL работал с MS SQL Server Освоил Maven и Git Но неизведанного еще много. Не знаю, не пробовала. Я тестирую SOAP веб-сервисы в soapUI, и для меня это black box, потому что я не знаю, как они написаны, я только отправляю что-то на вход и получаю респонс. С REST сервисами по-другому? API это чистой воды white box testingтестировать можно и свои сервисы, но сути это не меняет почитайте обязанности White Box tester. Вы тестируете SOAP и Вам говорят что вы black box tester. Вас обманывают с таким же успехом можно сказать что все программисты использующие чужое а не свое API вовсе не программисты а юзеры, они же не в курсе как там все внутри написано ну и контрольный вопрос — unit тестирование это white box testing? Конечно, АПИ — это не ЮИ, monkey testing-гом не обойдешься. Но если АПИ — это конечный продукт, то его тестирование, имхо: а не может быть чистым black box; б не дотягивает до white box по глубине знания имплементации; в короче, является grey box сомнительное определение. От того ты нажимаешь кнопочку на интерфейсе или в soapui, понимания внутренностей системы не прибавится использование инструмента подразумевает понимание сути API инфы нужно для тестирования не меньше чем для юзанья API Таким образом — если тестирование API это не white box, тогда использование сторонних REST services это значит по этой логике не программирование и следует платить как за работу дворника использование инструмента подразумевает понимание сути APIАбсолютно нет, я могу использовать АПИ абсолбютно без понимая того как оно внутри устроено, мне достаточно того, что оно работает. Инфы нужно для тестирования не меньше чем для юзанья APIДа, потому что протестровать нужно все случаи, а использоваться будут некоторые. Но даже так, это все равно не whitebox. In white-box testing an internal perspective of the system, as well as programming skills, are used to design test cases. Не мое, но вполне ясное internal structures — этого недостаточно. Тестирование internal structures может быть на разном уровне и все, что не затрагивает уровень кода будет не white-box. Это такой же black box, только с другим интерфейсом, с помощью которого вы можете ввести больше различных наборов исходных данных. Вы делаете это не зная, какая логика внутри АПИ, какие наборы данных нужно сформировать, чтобы покрыть все возможные пути выполнения кода. Я не знаю определения этого понятия, в котором говорится, что АПИ тестинг — это whitebox тестниг. Вы пишите «по определению». Приведите мне это определение, если оно существует. АПИ это «интерфейс», «контрактные обязательства», «функциональность» приложения, реализующего АПИ. Это собственно те ручки, которые вы крутите на черном ящике и получаете определенный результат, не зная, собственно, устройства ящика Всё верно. А вот линк, где про интерфейс и про ручки: А под внутренней структурой приложения подразумевается собственно программный код. И знание именно кода что является internal perspective of the system из определения выше позволяет создавать новые тест кейсы. API интерфейс программирования приложений, интерфейс прикладного программирования англ. Внимание вопрос «знатокам» — а случайно программа не состоит из. «набор готовых классов, процедур, функций, структур и констант»? Любая программа состоит из того. Но только это не значит, что тестирование программы api это white box testing. К любой программе, которая имеет интерфейс независимо программный или ui можно применить как white так и black box testing. Но внутренней структуре программы — API например API! Почитание внимательнее определение по ссылке выше. Полагаю, что ответ будет положительный инче как мы перешли от тестирования веб сервисов к API? Есть погодный веб сервис, который возвращет среднюю температуру в городе. Это совершенно разные уровни тестирования поэтому и термины тестирования различаются именно поэтому тестирование RESTful APIs это white box testing Абсолютно. Мне не нужен полный список кейсов. Парочку мы же можем придумать. В результате сервис должен вернуть температуру. Рандомное значение: blah blah В результате или http404 или http200 с пустым боди. В результате http400 И т. Вот вроде и потестировали веб сервис, ничего не зная о его внутренностях black box. Но если заглянуть в код сервиса, то там мы увидим например: if city. И именно вот этот кейс был сгенерированных на основе знания о внутренностях приложения с использованием programming skills что соответствует определению white box, которое Вы дали Хочу добавить, что определения white-black box, хотя бы в моем понимании, никак не завязаны на технологическом восприятии. Может быть и UI, и REST API, и даже публичные интерфейсы в коде, если разрабатывается, допустим, крутая библиотека. Пэйдж обжект патерн советую ему уделить время очень распространенная практика. Xpath советую писать свои вручную. CSS для тех кому не нравится Xpath. Пример автоматизации на руби+капибара+кукумбер BDD. Для джавистов Эккель, для С Шилдт. Кому интересно — отпишутся Интересует другой вопрос. Но надо хотя бы немного знать программирование:теорию ООП, синтаксис какого-либо языка, умение написать, например, цикл сортировки без гугла Напиши сообщение, пришлю тестовое задание на пре-миддла. Справиться не справишься, но представление будешь иметь. Всё началось с того, что я захотел стать тестировщиком, пошел на курсы ручного тестирования, по их завершению мне предложили пройти еще и курс по автоматизации бесплатно. Курсы длились почти 2 месяца, 2 раза в неделю, 2 часа занятие, но дали очень мало как я потом убедилсяэто не проблема конкретно курсов, это проблема того, что знаний нужно достаточно много, но, тем не менее, основы. Потом устроился тестировщиком мануальным и проработал на этой должности полгода, в это же время продолжал учить джаву, прошел онлайн курс по Python, ковырял JS, Html, CSS. В свободное время пытался писать тесты, например написал штук 20 на Gmail, хороший опыт. Мне повезло — у нас в компании была небольшая команда автоматизации, соответственно еще работая мануалщиком постоянно говорил начальству что хочу и могу автоматизировать, но вопрос не двигался вперёд, в какой-то момент я взял инициативу в свои руки и попросил наших автоматизаторов дать мне что-то написать и мне дали такую возможность. Стал ковыряться — там были совершенно другие технологии и основной язык Cно, благо, он похож на Java, так что быстро разобрался и написал первые тесты. Ребята посмотрели и сказали: «с пивом покатит». Так я и стал автоматизатором. Я скажу следующим образом: на мой взгляд, нет особого контекста «джава для автотестов», нужно просто уметь программировать. Конечно, не на таком уровне как разработчик — у разработчиков другая специфика, другой стек технологий, различные фреймворки и так далее, но уметь программировать всё равно нужно, потому что работа автотестера на написании одних тестов не заканчивается, более того, написание тестов это даже не самая большая часть работы. В целом, на мой взгляд, вопрос обучения очень индивидуальный и тебе нужно самому найти как тебе удобнее учиться, потому что лично мне, например, читать книгу скучно и зачастую малоэффективно, тогда как изучение чужого кода и разбор непонятных участков вот в эти моменты книга заходит очень хорошо приносит много пользы, так же написание своего кода, попытки реализовать какую-то идею, грабли на которые ты наступаешь и пути решения проблем, которые ты находишь, дают тебе возможность быстро прогрессировать. Всё началось с того, что я захотел стать тестировщиком, пошел на курсы ручного тестированияХммм, то же самое правда без курсов по автоматизации, самостоятельно знакомился с силениумом и его возможностями. А на чем вы сейчас пишете? А на чем вы сейчас пишете? Приходится писать на том, на чём требует проект Сейчас это преимущественно Cдо этого был Python и Javascript. Кстати, по C могу порекомендовать отличную книгу Эндрю Троелсена «Язык программирования C 5. Очень хорошо написано, темы хорошо разжеваны и поданы, даже если не планируешь учить Cто всё равно рекомендую взглянуть, хотя бы разделы посвященные ООП, особенно если «плаваешь» в этом, этот аспект Троелсен подал лучше чем Эккель, на мой взгляд. Говорят проще Рихтера, он что то типа Эккеля но только для Си шарп аже если не планируешь учить Cто всё равно рекомендую взглянутьПланирую в дальнейшем подучить Си шарп, интересно взглянуть на автоматизацию с использованием различных языков Курсы для неудачников. Смотрите что хотят люди. Инфы в интернетах просто куча. Если сами не можете все выучить, то скорее всего это не для вас И еще момент. Если с программированием во время учебы можно себе дать таск — написать апликуху, сделать калькулятор и тд, то какие таски давать себе что б продвигаться в автоматизации? Тоже напишите апликуху на вебдрайвере которая спамит вконтакте или парсит новости или придумайте сами Автор о себе Love IT because of salary in green US dollars. I think it is the only reason why so many people try to get there — from builders to Silpo cashiers. Вчера вот тоже думал обратиться к публике Dou c этим вопросом. Пожалуйста,напишите,что должен знать-уметь автоматизатор,что бы пробывать себя на позицию джуна автоматизатора. Тяжело гуманитарию хотящего сыра. Читал по джаве самые разные книги, лекции, видеоуроки, в эклипсе делал какие то шаги, но по прежнему уровень какой то никакой. Я понимаю что техническому человеку проблемы кажутся смешными, но как быть обычному человеку который в предметной области понимает немного как никак работаю ж мануальщиком больше годано когда касается написания кода — возникают большие трудности. Как побороть эти незнания и стать гуру? Как побороть эти незнания и стать гуру? Может это не твоё просто? Ты об этом не думал? А сейчас ты что, голодаешь? Судя по фотке питаешься ты хорошо, калорийно, белка точно много употребляешь. Не обязательно для этого идти в автомейшн, развивайся в тестировании, прокачивай инглиш, двигайся в сторону тим лида, потом в ПМы и всё будет нормально, может программирование действительно не твоё. Тем более впечатляет то, как ты поставил вопрос: для меня «легкий» питон — нифига не легкий, как и для любого нормального человека который не является гиком гаджето-технолого-фреймворковоодержимым как и для любого нормального человекаТ. Когда я заинтересовался автоматизацией, столкнулся с Вашими проблемами — все примеры казались непосильными, объяснения — непонятными и т. На курсы совершенно не хватало времени и средств. Знания в программировании ограничивались институтскими ассемблером и С++ на уровне лабораторных работ. Первое что я попытался сделать — была не совсем автоматизация, а, скорее, упразднение рутины. Передо мною стояла задача: протестировать rest api. Тим-лид мне тогда в первый день сказал: есть такая штука — curl, вот как ей пользоваться, и вот тебе доки на апи. Для справки, в общих чертах: curl — это утилита для выполнения http запросов из командной строки. Передаешь в ней хедеры, метод, урл, тело и все остальное. Короче, как браузер, но все пишешь вручную. Если не знаете, что такое http — советую почитать документацию протокола, хотя бы структуру запросов, методы и коды ответов Через неделю я порядочно набил руку на вводе команд и так же порядочно задолбался это делать. Случайно я узнал что есть bash, с помощью которого можно написать скрипт для командной строки. Собственно, этим я и занялся: открыл gedit и набросал 135 запросов. Это, как я уже говорил, была не автоматизация, но скорость тестирования увеличилась значительно. Этот скрипт до сих пор храню как память Несколько позже я забрался в уже существующие тесты проекта. Как и следовало ожидать, ни черта я в тестах не понял: как они стартуют, кто их стартует, когда, где начало, где конец. Так как тесты были написаны на Java, я начал изучать этот язык. Честно говоря, было сильное ощущение что я пытаюсь догнать поезд, который ушел пару часов. Причем догоняю пешком, и даже не уверен что бегу в нужном направлении. Тогда я решил остановиться и начать с начала — с helloWorld на Джаве. Не пытаться читать дальше страницы, на которой чего-то не понял. Я взял какой-то учебник, в котором очень подробно разжеван этот самый helloWorld кажется, он назывался «Джава для бабушек». Дальше хелловорлда такие учебники читать опасно и бесполезно, зато ни один более-менее серьезный труд не опускается до таких подробностей. Уяснив для себя, что такое класс и что у него внутри, я решил потренироваться «на кошечках». Написал класс «машина», которая разгонялась, тормозила, заводилась, ну, тут на что фантазии хватити подключил к проекту JUnit. Собственно, создал машину и давай ее тестить. Пока тестил — понял что догнал свой поезд Написал я много, но суть вот в чем: не хватайтесь за непонятные задачи, попробуйте начать с чего-то совсем элементарного и бесполезного, но абсолютно понятного Вам. Будут это машинки, кошечки, собачки — неважно. Вся суть — в понимании. Я взял какой-то учебник, в котором очень подробно разжеван этот самый helloWorld кажется, он назывался «Джава для бабушек». Мы отправим вам письмо со ссылкой для подтверждения.
To solve this, one needs to fetch the WSDL manually or using PHP, of course!
Статья будет интересна тестировщикам, разработчикам и линейным менеджерам, в проектах которых используются клиент-серверные технологии или присутствует интеграция с различными почтовыми/социальными/финансовыми/геолокационными и другими сторонними или самописными сервисами. Чего нет в этой статье: красивых отчетов о тестировании, тестирование мобильных приложении и тестирования UI.
Введение Я долго искал программу, которая позволит работать с веб-сервисами и сможет объединить функциональное и нагрузочное тестирование, обязательно условие которой —является переиспользование функциональных тестов в нагрузочном тестировании.
До определенного момента единственной программой, позволявшей полноценно это делать, была Visual Studio. Но времена меняются, и появляются другие программы, способные решить эту задачу. Об одной из них и пойдет речь ниже.
SoapUI (прошу не путать с версией SoapUI Pro) — бесплатная программа с открытым исходным кодом, лицензией GNU и реализацией на языке Java.
Первая реализация появилась в октябре 2005 года за авторством Оле Ленсмера(Ole Lensmer). Программа написана на Java, поэтому «работает везде хорошо» :), а именно — на Linux, Windows и MacOS.
Системные требования довольно скромные:
Основные поддерживаемые протоколы:
HTTP, HTTPs, SOAP, REST, WSS и WSA.
За девять лет SOAP UI превратился из стартапа в серьезный, пусть и не лишенный недостатков, инструмент, который поможет в решении задач по тестированию сервисов.
soapUI - приложение для тестирования, мониторинга, проверки функциональности и эмуляции веб-сервисов на основе REST / WADL и SOAP / WSDL. Программа позволяет проводить автоматические тесты интернет-приложений, сервисов, баз данных и многого другого. soapUI имеет набор инструментов для работы с командной строкой, что позволяет запускать тесты с помощью любого планировщика заданий. Кроме того, программа поддерживает работу со скриптами, способна эмулировать веб-сервисы, перехватывать, анализировать и даже модифицировать трафик между клиентом и сервером, а также считывать данные из внешних ресурсов (Excel, XML, JDBC и др.). По результатам тестирования soapUI способна составлять несколько типов отчетов, которые можно распечатывать или экспортировать в форматы HTML, PDF, Excel и Word.
Ключевые особенности и функцииПримерно с полгода назад поручили мне провести тестирование (заодно и автоматизировать его) проекта, активно использующему сервисы, отвечающие по SOAP-протоколу. Показали такую классную программу как SoapUI. То какая замечательная эта программа, какой у нее интутивно понятный интерфейс и интуитивно понятный онлайн-хэлп (soapui.org), мы оставим за рамками статьи.
К сожалению, при всех своих достоинствах она довольна узко специализирована и наверное, поэтому, сейчас наблюдается полное отсутствие материалов о ней на русском. Интуитивно-понятный хэлп на английском не может помочь с какими-либо достаточно сложными задачами (хотя чтобы начать, он незаменим), да и на всех просторах интернета довольно сложно найти step-by-step мануал.
Сегодня мы решим конкретную прикладную задачу: а именно автоматизацию тестирования сервиса, который возвращает нам список из вот таких вот элементов:
<item>
<FeedbackId>357</FeedbackId>
<RequestDate>2012-04-08T00:48:49.493</RequestDate>
<FeedbackStatusName>Отправлено</FeedbackStatusName>
<FeedbackTypeName>Ошибка</FeedbackTypeName>
<AuthorFullName>Сидоров Иван Петрович</AuthorFullName>
<FeedbackStatusId>1</FeedbackStatusId>
<FeedbackTypeId>1</FeedbackTypeId>
<AuthorUserId>69</AuthorUserId>
</item>
Когда встала передо мной подобная задача, я трусливо проверил руками (поставил xpath-проверки) и отрапортавал что дело сделано (продукт я не знал, а лишнего времени много никогда не бывает. ). Сейчас я готов исправиться, а заодно рассказать всем как это можно сделать. Сразу оговорюсь, что мой способ всего лишь один из нескольких, не претендующий на идеальность или оптимальность. И я таки надеюсь узнать и другие способы — рассчитываю на ваши идеи, опыт, фантазии…
Если вы читаете эту статью, я надеюсь, что у вас уже есть работающий сервис, который возвращает подобный список и база, из которой он черпает данные. И вы умеете написать такой селект, чтобы результат совпадал с тем что возвращает сервис.
На рисунке проект, который получился у меня: у нас есть xml-ка, полученная в ответ от сервиса, у нас есть результаты из базы. Они немного не совпадают, потому что мне лень сейчас дописывать join’ы и прочую муру (уже неактуально).
понятно что мышкой и готовыми проверками тут уже ничего не сделаешь — надо программировать. Программировать в SoapUI надо на Groovy. Java код является корректным Groovy-кодом, так что учить ничего не надо (я, вот, например Groovy не знаю)).
Вернемся к задаче: я вижу 2 способа решения: можно сделать Script Assertion в шаге JDBC Request, а можно вынести в отдельный шаг.
Я вынес. Дальше код, ради него все и затевалось. Думаю что тот, кто сможет поменять его под свою задачу, сможет разобраться и по тем комментам, которые есть, так что дальше слова излишни…
boolean b = true;
def soapRequest = testRunner.testCase.getTestStepAt(0);
//Найдем кол-во item'ов в ответе
XmlHolder response = new XmlHolder( soapRequest.getProperty('Response').getValue() );
int numberOfItems = response.getXmlObject().selectPath('//item').size();
if (numberOfItems != 0)
<
XmlHolder row, item;
for (int i=1; i<=numberOfItems; i++) <
row = new XmlHolder( context.expand ( '$
item = new XmlHolder( context.expand ( '$
//compareItemWithRow - функция, смотри ниже
if (!compareItemWithRow (item, row) ) <
b = false;
//выходим при первой ошибке
break;
>
>
>
else <
//удостоверимся что и в базе нет данных
def jdbcRequest = testRunner.testCase.getTestStepAt(1);
response = new XmlHolder( jdbcRequest.getProperty('ResponseAsXml').getValue() )
if (response.getXmlObject().selectPath('//item').size() != 0) <
log.error "There was no items in response but I found a few in database! WTF?!"
assert false;
>
>
assert b;
return;
/**сравнивает 2 XmlHolder'а по определенным полям, если что-то не так - пишет в лог ошибки и возвращает false*/
private boolean compareItemWithRow (XmlHolder item, XmlHolder row) <
boolean b = true;
if (!item.getNodeValue('//FeedbackId').equals( row.getNodeValue('//FEEDBACKID') )) <
log.error ('''FeedbackId doesn't corresponds database! Here could be your advertisment. '''
+ item.getNodeValue('//FeedbackId') + ' != ' + row.getNodeValue('//FEEDBACKID') +
'. ITEM: '+ item.getXml()+
'. ROW: '+ row.getXml());
b=false;
>
if (!item.getNodeValue('//RequestDate').equals( row.getNodeValue('//DATEINXML') )) <
log.error ('''RequestDate doesn't corresponds database! Here could be your advertisment. "'''
+ item.getNodeValue('//RequestDate') + '" != "' + row.getNodeValue('//DATEINXML') +
'". ITEM: '+ item.getXml()+
'. ROW: '+ row.getXml());
b=false;
>
if (!item.getNodeValue('//AuthorUserId').equals( row.getNodeValue('//REQUESTUSERID') )) <
log.error ('''AuthorUserId doesn't corresponds database! Here could be your advertisment. "'''
+ item.getNodeValue('//AuthorUserId') + '" != "' + row.getNodeValue('//REQUESTUSERID') +
'". ITEM: '+ item.getXml()+
'. ROW: '+ row.getXml());
b=false;
>
//.
return b;
>
Теги: #<Tag:0x007f9bf9dfe930> #<Tag:0x007f9bf9dfe750> #<Tag:0x007f9bf9dfe610> #<Tag:0x007f9bf9dfe3e0>
Теги: #<Tag:0x007f9bf9dfe930> #<Tag:0x007f9bf9dfe750> #<Tag:0x007f9bf9dfe610> #<Tag:0x007f9bf9dfe3e0>
polusok 2011-11-14 15:56:49 UTC #1
Пять или шесть лет назад я тестировал свой первый веб-сервис. Сервис был одной частью большoй системной перезаписи. В этой фазе мы интегрировали устаревшее приложение мэйнфрейма и новую веб-платформу, используя веб-сервисы. У нас было много инструментов для тестирования веб-сервисов: SoapScope, отечественный инструмент тестирования основанный на браузере, и несколько из нас писали прямые Java или Ruby коды для тестирования. Я отлично помню, что в то время думал о том, что должен существовать более простой путь.
Через приблизительно две недели работы в проекте, в то время, как я изо всех сил пытался заставить несколько библиотек Ruby работать и тестировать нашу службу, кто-то из команды проекта представил мне soapUI. В то время, проект soapUI был еще молод и включал только основной функционал и возможность эксплуатационного тестирования и вообще не содержал профессиональной версии. С тех пор, когда я в первый раз использовал soapUI, он стал моим выбором по умолчанию для тестирования сервисов.
Сегодня, у soapUI есть как коммерческая версия Pro, так и бесплатная версия. Они предлагают поддержку WS, REST, и HTTP сервисов, наряду с недавним объявлением о поддержке JMS, AMF, и JDBC. В этой статье мы рассмотрим на примере функциональных и эксплуатационных тестов, тестирование WSDL сервиса. В следующих статьях мы рассмотрим нагрузочное тестирование, симуляцию веб-сервиса, и интеграцию с JUnit. В качестве приложения-примера для каждой из этих статей мы будем рассматривать веб-сервис Atlassian JIRA. Это - хороший нетривиальный интерфейс, также являющийся публично доступным примером.
Создание первого проекта
При первом открытии soapUI, не будет загружаться ни один проект. Для создания нового проекта необходимо кликнуть правой кнопкой мыши на значке Projects и выбрать New soapUI Project, как показано на картинке 1 ниже:
Шаг 1: создание нового проекта в soapUI.
Это загружает новое диалоговое окно Проекта soapUI, как показано на рисунке 2. Введите имя проекта и начальный WSDL для проекта, который будет создан. Если ваш WSDL изменяется, вы можете импортировать обновления позднее - не думаю, что для того, чтобы начать, вам потребуется последняя версия. Для этого примера я буду использовать свою собственную реализацию веб-сервиса JIRA, таким образом, я смогу выполнить тесты. Если вы последуете за мной, вы можете направить свой проект на версию Atlassian, используемую в качестве примера, и которую можно найти тут .
Шаг 2: Присвоение названия проекту и импорт первоначального WSDL.
Вы увидите много флажков для задач, и таким образом soapUI сможет работать у вас автоматически, во время создания проекта. Вы можете попробовать их все, но обычно я только проверяю флажок "Create sample requests for all operations?" («Создать образцы запросов для всех операций?»). Когда вы закончите с вводом новой информации о проекте, нажмите OK
После завершения загрузки проекта, вы должны увидеть, что все различные запросы детализированы в определении WSDL, выведенном на экран в соответствии с проектом, как показано на рисунке 3. Чтобы просмотреть детали запроса, вы можете развернуть запрос с помощью двойного щелчок по значку "Request 1", показанному ниже. Это должно открыть запрос в окне основного рабочего пространства soapUI.
Step 3: Различные запросы JIRA показаны под проектом с окном запроса, открытым в основной рабочей среде soapUI.
Чтобы подать запрос сервису вручную, просто нажмите на зеленую стрелку в нужном окне, как показано на рисунке 4.
Шаг 4: используйте зеленую стрелку, чтобы подать запрос сервису.
Если вы сделаете это для этого конкретного запроса - запроса addVersion – без внесения каких-либо изменений, вы получите ответ, содержащий исключение, показанное в списке 1 ниже.
Это исключение возвращается по нескольким причинам. Во-первых, мы еще не вошли в систему. Если вы прокрутите вниз доступные запросы в нашем проекте, то увидите, что есть запрос входа в систему. Во-вторых, во всех значениях данных в нашем запросе были вопросительные знаки, как показано в списке 2 ниже. Прежде, чем представить любые запросы, вы захотите ввести тестовые значения в те поля, где видите вопросительные знаки.
<faultstring>java.lang.NumberFormatException: Invalid boolean</faultstring>
В этой точке вы можете просмотреть любой из запросов; просмотреть различные параметры запроса; изменить запросы и выполнить их вручную, чтобы видеть ответы. Короче говоря, вы должны быть в состоянии просматривать и взаимодействовать с Вашим веб-сервисом.
<in2 xsi:type="bean:RemoteVersion" xmlns:bean="http://beans.soap.rpc.jira.atlassian.com">
Список 2: По умолчанию, значения не заполняется для запросов
Написание и выполнение тестовых случаев
Просмотр и взаимодействие - это хорошо, но я предполагаю, что вы хотите выполнить некоторые тесты. Чтобы сделать это, вы должны будете создать TestSuite. Для этого щелкните правой кнопкой по проекту и выберите Новый TestSuite, как показано на рисунке 5.
Шаг 5: Создание нового TestSuite в soapUI.
Это должно открыть новое диалоговое окно TestSuite, как показано на рисунке 6. Введите название своего комплекта тестов. Имейте в виду, что для большинства проектов у вас будет большое количество комплектов, таким образом, описательные названия могут быть полезны. После завершения, нажать OK.
Шаг 6: присвоение названия вашему TestSuite в soapUI.
Это добавит ваш TestSuite к дереву проекта в навигации с левой стороны. Это также откроет ваш TestSuite в основном рабочем пространстве soapUI.
В soapUI TestSuite (набор тестов) составляются из TestCases (тест кейсов). Для нашего примера мы создадим простой набор тестов, для входа в JIRA и выхода из него после. Этот пример хорош по нескольким причинам. Во-первых, это покажет вам, как передать значения между TestCases, это важно, потому что для большинства веб-сервисов, которые я тестировал, мне нужно было это делать самому. Во-вторых, мы получим шанс посмотреть на некоторые основные характеристики - как утверждения – без необходимости для вас хорошо знать JIRA. Вход в систему и выход из системы - довольно очевидные функции.
Чтобы добавить наш первый TestCase, щелкните по кнопке "Create a new TestCase in this test suite" (создать новый тестовый случай в этом наборе тестов). Вы найдете это в окне TestSuite, как показано на рисунке 7.
Так открывается новое диалоговое окно TestCase, где вы даете название тест кейсу, который создаете. Это выглядит точно так же, как и новое диалоговое окно TestSuite. Введите имя и нажмите OK. Так как этот тестовый случай тестирует вход в систему, я даю ему название "Вход в систему".
Когда Вы нажимаете OK, происходят две вещи. Во-первых, ваш TestCase показывается в окне TestSuite с пустой панелью результата, как показано на рисунке 8 ниже. Эта панель результата является белой, потому что вы еще не выполнили тест. При выполнении панель станет красной для отказа или зеленой для передачи
Шаг 8: ваш TestCase добавлен к вашему TestSuite.
Затем, вы также увидите окно, открытое для TestCase, который вы только что создали. На рисунке 9, окно тестового случая для входа, который создал я.
Шаг 9: окно TestCase для тестового случая входа.
В-третьих, как показано на рисунке 10, в дереве навигации проекта с левой стороны вы увидите новый TestCase, указанный в вашем TestSuite. Вы также увидите счетчики количества шагов теста или нагрузочных тестов, связанных с ним.
Шаг 10: TestCase добавлен в навигационном дереве проекта.
То же что и для TestSuite выполняется и для TestCases, тест кейс состоит из шагов теста. Для нашего теста Войти в систему, мы должны добавить шаги, чтобы это произошло
Первым делом, мы добавим запрос входа в систему для веб-сервиса. Чтобы выполнить это, нужно нажать кнопку "Create a new Test Request TestStep" в окне тестового случая. Эта кнопка показана на рис. 11.
В диалоговом окне Add Step «Добавить шаг» введите название шага и нажмите OK. Это откроет Новое диалоговое окно TestRequest, показанное на рисунке 12. Прокрутите вниз список и выберите запрос входа в систему. Затем нажмите OK.
Шаг 12: диалог New TestRequest.
Это открывает диалоговое окно Add Request to TestCase (Добавить запрос для TestCase), показанное на рисунке 13. По желанию вы можете поменять название для запроса, и вы также можете выбрать серию подтверждения запаса. По умолчанию выбрано SOAP Response Assertion. На данный момент это отлично. Просто нажмите OK
Шаг13: Добавление запроса в TestCase диалог.
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://soap.rpc.jira.atlassian.com">
Когда вы нажимаете OK, запрос добавляется к TestCase, и окно запроса открывается для запроса, который вы только что добавили. Точно так же как ранее в статье, вы можете отредактировать значения и выполнить этот запрос вручную. Однако на сей раз, независимо от того, какие значения вы вводите, они будут значениями, сохраненными для этого тест кейса. Для этого примера я буду использовать свое имя пользователя и пароль, показанные в списке 3 ниже. Если я провожу этот запрос вручную, я получаю ответ, показанный в списке 4.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ns1:loginResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://soap.rpc.jira.atlassian.com">
Вы увидите строку из 10 символов, которая возвращается с моим сеансом. Вы можете также заметить, что где бы ни появлялся значок TestStep, он меняет цвет от белого до зеленого. Это - хорошая визуальная подсказка, говорящая о том, что ваши утверждения с этим тестовым шагом прошли.
В настоящий момент единственное утверждение, которое мы имеем в нашем TestStep – то, которое было установлено при создании. Все, что делает утверждение. подтверждает, что наш ответ - допустимый ответ SOAP. Хотя это важно, этого недостаточно для нас. Таким образом, мы собираемся добавить другое утверждение, которое подтверждает, что мы получаем 10-символьную строку назад в нашем ответе.
В окне запроса вы увидите кнопку Assertions у основания окна. Если вы щелкните по нему, это покажет, какие текущие утверждения вы связали со своим TestStep. Если вы захотите добавить другое утверждение – что мы и делаем - вы захотите нажать кнопку Add Assertion, показанную на рисунке 14.
Шаг 14: кнопка для добавления утверждения к TestStep.
Когда вы добавляете утверждение, первое появившееся диалоговое окно, является диалоговым окном выбора утверждения. Есть много различных доступных утверждений, и в этой статье мы собираемся рассмотреть только одно из них. Для получения дополнительной информации по каждому типу утверждения, проверяйте soapUI реководство пользователя. Для нашего примера мы собираемся сделать Запрос XPath. Выберите эту опцию и нажмите OK
Шаг 15: выбор утверждения запроса XPath .
Это откроет диалоговое окно конфигурации соответствия XPath. В этом диалоговом окне Вы можете определить XPath Epression, чтобы получить значение (я), которое вы хотите протестировать. В этом диалоговом окне вы также определяете ожидаемый результат для своего выражения.
В то время как вы пишете свое выражение и результат, вы можете протестировать свое заявление, используя кнопки "Select from current" (выбор из текущих) и "Test" (Тест) под частью Expected Result (Ожидаемый раздел) этого диалогового окна. Это предоставляет вам некоторую обратную связь в реальном времени по Вашему выражению и определению результата.
Шаг 16: Обычное выражение для проверки XPath возврата входа в систему.
В примере, показанном на рисунке 16 выше, вы увидите, что я ищу элемент "loginReturn" в XML ответе, и затем я сравниваюсь его с обычным выражением для 10 символов, который включает символы верхнего или нижнего регистра и все десять цифр. Это заявление должно вернуться как true, если значение элемента соответствует тем параметрам. Именно поэтому мой ожидаемый результат - правильный.
Когда вы нажимаете на Save, вы добавляете утверждение к тестовому шагу. Вы должны иметь возможность видеть добавленное утверждение у основания окна запроса, как показано на рисунке 17.
В этой точке вы можете закрыть окно запроса входа в систему. Мы готовы идти дальше к следующему TestStep. Затем мы хотим выйти из системы. Вы можете добавить шаг выхода из системы с помощью тех же действий, которые мы использовали для входа в систему. Когда вы доберетесь до запроса выхода из системы, как показано в списке 5 ниже, вы увидите, что должны перейти в сессию от входа в систему
Если вы выполняете этот запрос, без перехода в сеансе, Вы получите режим выхода из системы «false». Причина проста - JIRA не знает, кто должен выйти из системы.
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://soap.rpc.jira.atlassian.com">
Чтобы фиксировать это, мы должны будем передать наш идентификатор сеанса от входа в систему до нашего запроса выхода из системы. Мы сделаем это, используя то, что называется Property transfer, вы щелкаете по кнопке Property Transfer в окне TestCase.
В диалоге InsertStep, вы можете дать название свойству. Обычно я называю его как значение, которое я передаю.
Когда вы нажимаете OK, появляется окно Property Transfer для нового элемента. Для создания, нажмите кнопку add new property transfer в верхнем левом углу окна.
Вы опять получите подсказку дать название передаче. Это потому, что вы можете захотеть передать несколько свойств. В этом одном окне Вы можете отобразить несколько свойств, для передачи. Это кажется несколько избыточным, потому что мы занимаемся только одним свойством, но на самом деле это очень полезно, если у Вас есть пять или шесть свойств, которые необходимо переместить между запросами.
Как только вы добавили передачу, вы можете сконфигурировать ее. Вы должны будете определить как источник, так цель для передачи. Мы выберем значение элемента из loginReturn в ответе Входа в систему и передадим это 0 элементу в запросе Выхода из системы. Вы можете посмотреть мою конфигурацию на рисунке 21.
Шаг 21: Установка параметров передачи свойств для сессии.
Если Вы синхронизируете зеленую стрелку наверху окна Property Transfer, то она выполнит передачу и покажет вам результаты в Журнале Передачи внизу окна.
Как вы можете видеть в примере выше, значение "TD9CJdR3F1" было найдено и передано. Теперь, если бы вы вернулись и запустили запрос Выхода из системы повторно, то он вернулся бы как true. Во время выполнения это значение будет перемещаться динамически между двумя запросами.
Если вы посмотрите на свой TestCase теперь, то увидите, что представлены все три элемента. Если ваши элементы не находятся в правильном порядке, вы можете просто перетащить их и поместить в желаемом порядке.
Шаг 22: завершенный тест кейс для входа и выхода из системы.
Следуйте далее и выполните свой тест кейс, используя зеленую кнопку на главной панели инструментов окна. Вы увидите, что и обновления строки состояния и сводный журнал тестов выведены на экран у основания окна TestCase, как показано на рисунке 23.
Шаг 23: Изложение результатов теста TestCase в soapUI.
И таким образом, мы успешно установили и провели наш первый тест для сервиса JIRA.
В следующей статье мы будем основываться на том, что сделали здесь, и посмотрим на проведение некоторых эксплуатационных тестов с использованием soapUI. Чтобы узнать больше о soapUI, его характеристиках, а также о том, над чем работает команда soapUI, смотрите вебсайт soapUI. Другие статьи и посты в блоге относительно soapUI также предоставляются командой soapUI в разделе их сайта "in the news" listing. А чтобы получить больше информации о JIRA,интерфейсе и функциях, проверьте сайт продукта Atlassian .