TestComplete : Работа с web services ( Введение )
@ Пт, 3 октября, 18:47Веб-сервисы - достаточно распространенный вид компонент распределенных систем. Фактически это один из интерфейсов удаленного вызова процедур. То есть, из некоторой программы мы можем отправить запрос на выполнение некоторой операции на стороне сервера и получить результат выполнения операции, при этом графический интерфейс не задействован. Подобные компоненты позволяют реализовать интеграцию между различными системами, которые изначально между собой не связаны. Отчасти это делает веб-сервисы достаточно популярными, как результат - они используются в достаточно большом количестве приложений, а это в свою очередь влечет необходимость их тестировать, в том числе и автоматически. Для этой задачи есть и специальные средства, наподобие soapUI, но помимо этого возможность тестирования веб-сервисов имеется и в более полновесных средствах, в т.ч. и в TestComplete. В TestComplete, начиная с 6-й версии как раз была добавлена возможность тестирования веб-сервисов. Рассмотрим, как это реализуется и каким образом можно проверить веб-сервисы.
Итак, для начала создадим новый проект. Назовем его WSSample и укажем JScript в качестве языка написания тестов ( все примеры в дальнейшем будут приведены для JScript ).
После создания проекта мы в окне Project Explorer-а кликаем правой кнопкой мыши и выбираем из выпадающего меню Add > New Item. Появится окно со списком доступных для создания элементов. В этом списке находим Web Services и жмем ОК. В результате в нашем проекте появится раздел WebServices, куда в дальнейшем мы будем добавлять наши веб-сервисы.
В целях демонстрации работы с веб-сервисами мы воспользуемся веб-сервисами Jira, описания которых доступны по адресу http://jira.atlassian.com/rpc/soap/jira
. Это общедоступный ресурс, который используется в целях ознакомления. Итак, добавим данный веб-сервис. Для этого на элементе WebServices сделаем клик правой кнопкой мыши и в выпадающем меню выберем Add > New Item. В списке возможных типов элементов будет только элемент типа веб-сервис. Кликаем на нем, задаем имя нового веб-сервиса, например, JiraSOAP и нажимаем ОК. В результате у нас появляется новый элемент в разделе WebServices. Сделаем на нем двойной клик. В результате отображается форма вида:
Эта форма пока что пустая, так как мы не задали необходимых реквизитов, как путь к файлу с определениями веб-сервисов, а также имя используемого сервиса. Напротив пункта Web Service Definition URL кликаем на кнопку Select. Появляется диалог вида:
В поле с указанием "Specify the location of the WSDL document" вводим адрес описания нашего веб-сервиса, в нашем случае это http://jira.atlassian.com/rpc/soap/jira
. После ввода адреса, нажимаем на кнопку Get Services, чтобы был извлечен список доступных сервисов. Получится что-то наподобие такого:
Для Jira есть всего один веб-сервис JiraSoapServiceService, в списке сервисов выбираем его и кликаем на кнопку ОК. Всё, наш сервис добавлен, теперь форма веб-сервиса имеет такой вид
Как видно, все поля заполнены значениями, указывающими адрес сервиса, имя сервиса, а также внизу появились описания типов и методов выбранного сервиса.
Всё, теперь мы можем вызывать имеющиеся веб-сервисы. Сохраним все файлы и создадим новый скриптовый юнит. Назовем его JiraTest. В этом юните создадим функцию вида:
function WebServicesSample() {
;
}
Теперь попробуем воспользоваться подключенными веб-сервисами. Для примера залогинимся в Jira и выйдем оттуда. Посмотрим на эти функции. Кликнем еще раз на недавно созданный веб-сервис и посмотрим на список методов:
Нужные нам методы находятся рядом и мы можем их просмотреть вместе. Итак, метод login принимает 2 параметра-строки ( непосредственно логин и пароль ) и возвращает строку - token, который представляет собой своего рода идентификатор сессии. Практически все остальные методы данного веб-сервиса используют его в качестве первого параметра. Соответственно, метод logout принимает этот самый token, чтобы завершить сессию пользователя. Ссылка на веб-сервис, с которой мы работаем в данном примере - это ссылка на тестовый сайт Jira, в котором помимо всего прочего есть зарезервированный пользователь soaptester с паролем soaptester специально для тестирования доступа к Jira через SOAP. Соответственно, будем заходить под этим пользователем. Если мы вернемся к скриптовому юниту JiraTest, перейдем к созданной выше функции WebServiceSample, наберем WebServices. и нажмем Ctrl + Space, то в выпадающем меню мы получим следующее:
Фактически во встроенный объект был добавлен объект JiraSOAP, содержащий все функции добавленного нами веб-сервиса. Используя его, мы уже вызываем нужные нам методы, в нашем примере это login и logout. Тогда тело функции WebServiceSample имеет вид:
function WebServicesSample() {
var login = "soaptester";
var password = "soaptester";
var token = WebServices.JiraSoap.login( login , password );
WebServices.JiraSoap.logout( token );
}
Вот так вот. Как видно из примера, ничего сложного работа с веб-сервисами в TestComplete не представляет. Просто создается интерфейс доступа к нужным методам, всё остальное сводится к знанию спецификаций используемых веб-сервисов. То есть, действий, перечисленных выше, вполне достаточно, чтобы более-менее основательно начать работу с веб-сервисами. Есть более специфичные вещи, но это уже тема для отдельного рассмотрения
