(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Часть 3. Тестируем защищенный Web-сервис при помощи IBM Rational Software Architect и XMLUnit

Источник: IBM Rational
Мохан К. Джадхав, Мансур Ахмед

О данной серии

Все чаще Web-сервисы становятся основными компонентами в бизнес-приложениях. С появлением таких парадигм, как сервис-ориентированная архитектура (Service-Oriented Architecture, SOA), разработчики все больше внимания уделяют Web-сервисам. При этом вопросы тестирования Web-сервисов для важных сервис-ориентированных приложений приобретюет большую значимость. В результате быстрого создания и развертывания сложных Web-сервисов перед группой обеспечения качества возникают дополнительные проблемы. Автоматизация тестирования Web-сервисов может помочь группе эффективно управлять объемом работ.

Тестирование Web-сервисов обычно включает следующие задачи:

  1. Генерирование клиентского или скелетного кода для Web-сервиса;
  2. Определение входных данных теста;
  3. Вызов Web-сервиса при помощи клиентского или скелетного кода;
  4. Сверка реального и ожидаемого отклика.

Из всех перечисленных действий наибольших усилий требуют генерирование скелетного кода и верификация отклика.

Для генерирования скелетного кода для Web -сервиса на базе соответствующего WSDL-файла существуют различные инструменты; однако сгенерированный код может быть частным; возможно, его придется генерировать заново при каждом изменении WSDL. Одним из решений данной проблемы может стать отказ от генерации клиентского или скелетного кода и вызов Web-сервиса непосредственно через общий HTTP-клиент. Позже в этой серии статей вы познакомитесь с одним из таких наборов инструментов, предоставляемых API Apache Commons HttpClient (далее - HttpClient).

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

В нашей серии статей рассказывается о методике автоматизации тестирования типичного Web-сервиса с использованием нескольких технологий, в том числе, JUnit, HttpClient и Apache XMLUnit (далее в этой статье- XMLUnit). Методика демонстрируется на платформе разработки, которую предлагает IBM Rational(R) Software Architect.

Активизация системы безопасности для Web-сервиса

В части 1 рассказывалось о том, как создать учебный Web-сервис, который возвращает список пользователей. Теперь вы сможете с помощью данного учебного руководства использовать на Web-сервисе систему безопасности. Чтобы использовать систему безопасности, выполните следующие шаги:

  1. Откройте Rational Software Architect;

  2. Выберите команду Window > Open Perspective > Java;

  3. Разверните элемент Sample Project;

  4. Выполните двойной щелчок на элементе Deployment Descriptor;

  5. Перейдите на вкладку Security, как показано на рисунке 1.

    Рисунок 1. Вкладка Security в дескрипторе развертывания
    Вкладка Security в дескрипторе развертывания

    Далее мы создадим новую роль для нашего приложения. Позже мы предоставим пользователям, принадлежащим к этой конкретной роли, привилегии доступа к Web-сервису;

  6. В секции Security Roles нажмите кнопку Add для создания новой роли;

  7. В диалоговом окне Add Security Role введите имя роли и ее описание, например, SampleRole;

  8. Нажмите кнопку Finish , чтобы закрыть окно Add Security Role, как показано на рисунке 2;

    Рисунок 2. Добавление роли безопасности
    Добавление роли безопасности

  9. В секции Security Constraints нажмите кнопку Add для создания нового ограничения безопасности. Определяя это ограничение, в действительности вы накладываете ограничения на то, какие роли к каким ресурсам будут обращаться;

  10. В окне Add Constraints введите имя ограничения, например, Sample Constraint, как показано на рисунке 3;

    Рисунок 3. Добавление ограничения
    Добавление ограничения

  11. Нажмите кнопку Next.

  12. В секции Add Web Resource введите сведения, показанные на рисунке 4;

    Рисунок 4. Добавление Web- ресурса
    Добавление Web-ресурса

  13. Нажмите кнопку Finish;

  14. В секции Authorization Roles нажмите кнопку Add , чтобы предоставить роли разрешение на доступ к Web-сервису, как показано на рисунке 5;

    Рисунок 5. Разрешения роли
    Разрешения роли

  15. В окне Add Authorization Constraint выделите роль SampleRole и введите описание, например, такое: Sample Auth Constraint;

  16. Нажмите кнопку Finish.

    Теперь мы определим тип транспортной гарантии, которую необходимо обеспечить между клиентом и сервером. Для нашего примера Web-сервиса выберите вариант без гарантии;

  17. Перейдите в секцию User Data Constraint на вкладке Security, показанную на рисунке 6;

    Рисунок 6. Ограничение пользовательских данных
    Ограничение пользовательских данных

  18. Из раскрывающегося списка Type выберите NONE;

  19. Сохраните эту конфигурацию, выбрав команды File > Save;

  20. Разверните EAR-файл для проекта SampleProject и выполните двойной щелчок на элементе Deployment Descriptor, как показано на рисунке 7;

    Рисунок 7. Дескриптор развертывания EAR
    Дескриптор развертывания EAR

  21. Перейдите на вкладку Security и нажмите кнопку Gather. Мастер выполнит сбор всех ролей, определенных для приложения. Например, он добавит в список роль SampleRole, как показано на рисунке 8.

    Рисунок 8. Сбор ролей
    Сбор ролей

    Далее мы добавим в роль SampleRole пользователя;

  22. Создайте в локальной операционной системе нового пользователя с именем SampleUser и паролем SampleUser. Это имя будет использоваться для доступа к Web -сервису;

  23. Нажмите на SampleRole и установите флажок в поле Users/Groups;

  24. Добавьте имя пользователя SampleUser;

  25. Сохраните конфигурацию;

  26. Разверните приложение, нажав правой кнопкой мыши на SampleProject и выбрав команду Run As.

Активизация системы безопасности на сервере приложений WebSphere Application Server

В предыдущем разделе мы использовали систему безопасности на учебном Web-сервисе и развернули этот Web-сервис на сервере приложений WebSphere Application Server. В этом разделе мы активизируем систему безопасности на сервере приложений WebSphere Application Server.

  1. Откройте консоль WebSphere Administrator. Как правило, для этих целей можно использовать URL http://localhost:9060/admin;

  2. Перейдите к категории Security > Global Security;

  3. Выберите ссылку Custom в категории User Registries;

  4. Введите любые имя пользователя и пароль в поле Server user ID, вам придется использовать эти данные для доступа к реестру пользователей WebSphere Application Server; нажмите кнопку Apply , чтобы применить изменения.

    Примечание: Если вы уже задали идентификатор пользователя и пароль, переходите к следующему шагу;

  5. Вернитесь к Security > Global Security;

  6. Установите флажок Enable global security. Убедитесь, что флажок Enforce Java 2 security снят, как показано на рисунке 9;

    Рисунок 9. Активизация глобальной системы безопасности
    Активизация глобальной системы безопасности

  7. Убедитесь, что вариант Local OS выбран в раскрывающемся списке Active user registry;

  8. Примените изменения.

    Далее мы сопоставим пользователей ролям приложений в WebSphere Application Server;

  9. Перейдите к категории Applications > Enterprise Applications, как показано на рисунке 10;

    Рисунок 10. Enterprise applications
    Enterprise applications

  10. Нажмите мышью на ссылке SampleProjectEAR, как показано на рисунке 11;

    Рисунок 11. Пример EAR-файла
    Пример EAR-файла

  11. Нажмите на ссылку Map security roles to users/groups в секции Additional Properties, как показано на рисунке 12;

    Рисунок 12. Сопоставление пользователей ролям безопасности
    Сопоставление пользователей ролям безопасности

  12. Выберите роль SampleRoleи нажмите кнопку Look up users;

  13. Нажмите кнопку Search, как показано на рисунке 13;

    Рисунок 13. Поиск ролей
    Поиск ролей

  14. Выберите пользователя, например, SampleUser, которого вы создали в локальной операционной системе;

  15. Нажмите кнопку >>, чтобы добавить имя пользователя в список, расположенный с правой стороны;

  16. Примените изменения;

  17. Нажмите кнопки OK на всех страницах, чтобы сохранить изменения в главной (master) конфигурации;

  18. Перезапустите WebSphere Application Server.

Верификация безопасности Web-сервиса

В предыдущем разделе мы активизировали систему безопасности для учебного Web -сервиса и настроили параметры безопасности WebSphere Application Server. В этом разделе мы убедимся в том, что система безопасности на Web-сервисе активизирована.

Чтобы проверить, активизирована ли система безопасности на Web-сервисе, выполните следующие шаги:

  1. Откройте Web-браузер;
  2. Введите URL Web-сервиса. Браузер предложит ввести имя пользователя и пароль;
  3. Введите SampleUser и SampleUser в качестве имени пользователя и пароля, которые вы выбрали для этого примера. Если система безопасности на Web- сервисе активизирована, вы увидите сообщение Web-сервиса Hi there, this is a Web service!

Тестирование защищенного Web-сервиса

Поскольку мы активизировали систему безопасности на Web-сервисе, придется изменить тестовый код в файле SampleHttpClient.java, который вы создали в части 2. Сначала измените метод invokeWebService() method в классе, как показано в листинге 1.

Листинг 1

                    
package com.ibm.ws.sample.test;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthPolicy;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.StringRequestEntity;

public class SampleHttpClient 
{
  public static String invokeWebService(String webServiceURL,
  String  requestXMLPath) throws FileNotFoundException, Exception
  {
    PostMethod post = null;
    HttpClient client = new HttpClient();
    try 
    {
      // Читаем  SOAP-запрос из файла.
      StringBuffer requestFileContents = new StringBuffer();
      BufferedReader bufferedReader = new BufferedReader(new FileReader(requestXMLPath));
      String line = null;
		
      while((line = bufferedReader.readLine()) != null)
      {
        requestFileContents.append(line);
      }

      post = new PostMethod(webServiceURL);
      post.setRequestHeader("Accept", "application/soap+xml, 
        application/dime, multipart/related, text/*");
      post.setRequestHeader("SOAPAction", "");

      /*
       * 
       * SECURITY CODE START
       * 
       * */
      
      UsernamePasswordCredentials defaultcreds = new 
        UsernamePasswordCredentials("SampleUser","sampleuser");
      client.getState().setCredentials(AuthScope.ANY, defaultcreds);

      ArrayList authPrefs = new ArrayList(3);
      authPrefs.add(AuthPolicy.BASIC);
      authPrefs.add(AuthPolicy.NTLM);
      authPrefs.add(AuthPolicy.DIGEST);
      client.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, authPrefs);
      client.getParams().setAuthenticationPreemptive(true);
      
      // Для обеспечения безопасности
      //client.getState().setCredentials(authScope, credentials);
      post.setDoAuthentication(true);

      /*
       * 
       * SECURITY CODE END
       * 
       * */

      // Запрашиваемый контент будет извлекаться непосредственно из потока ввода.
      RequestEntity entity = new StringRequestEntity(requestFileContents.toString(), 
        "text/xml",  "utf-8");
      post.setRequestEntity(entity);
      
      // Возвращает число, показывающее статус отклика	    
      int result = client.executeMethod(post);
      String response = post.getResponseBodyAsString();
      return response;
    } 
    finally 
    {
      // После того, как все сделано, освободите соединение в пул соединений
      post.releaseConnection();
     }
  }
}

Обратите внимание на то, что код изменился - в него добавлены новые строки между комментариями , относящимися к безопасности. Код в контрольном примере JUnit изменять не придется, потому что он делегирует вызов Web-сервиса классу SampleHttpClient. Кроме того, обратите внимание на то, что регистрационные данные пользователя передаются через объект UsernamePasswordCredentials .

И наконец, чтобы протестировать Web-сервис, запустите контрольный пример, как описывалось в части 2. Сверьте ожидаемый и реальный отклики от Web-сервиса.

Заключение

В этой статье мы на практике изучили процесс автоматизации тестирования защищенного Web-сервиса. В частности, вы научились:

  • Определять параметры безопасности на Web-сервисе;
  • Настраивать параметры безопасности на сервере приложений WebSphere Application Server;
  • Верифицировать безопасность Web-сервиса;
  • Тестировать Web-сервис при помощи HttpClient и XMLUnit.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 23.10.2008 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
IBM RATIONAL Clearcase Floating User License + Sw Subscription & Support 12 Months
IBM RATIONAL Rose Enterprise Floating User License + Sw Subscription & Support 12 Months
Rational ClearQuest Floating User License
IBM Rational Functional Tester Floating User License
Rational ClearCase Multisite Floating User License
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
CASE-технологии
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Компьютерные книги. Рецензии и отзывы
3D и виртуальная реальность. Все о Macromedia Flash MX.
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100