СТАТЬЯ
30.01.02

Тестирование приложений J2EE с помощью Rational PurifyPlus (Часть 1)
 

© Горан Бегик (Goran Begic), Rational Software
Переведено БНТП по заказу Interface Ltd.

Ранее, значительное количество пользователей спрашивали меня, как использовать Rational PurifyPlus для приложений на Java, выполняемых на стороне сервера. Некоторые советы общего характера можно получить из оперативной справки, поставляемой вместе с PurifyPlus, или же поискать ответ в базе данных Rational Technical Support. Однако этих советов может оказаться явно недостаточно при работе со всеми возможными средами развертывания - например, такими, как сервер приложений Java, хостирующий и выполняющий серверные компоненты Java.И, кроме того, появление на рынке большого числа серверов приложений Java еще больше усложняет эту задачу.В этой статье я представлю проверенный и надежный способ использования PurifyPlus для тестирования сервлетов и серверных страниц Java (JSP), выполняющихся на сервере Apache Jakarta Tomcat, версия 4. Это же решение можно применить для коммерческих серверов приложений Java; я успешно «вычистил» самые разные приложения J2EE, выполняемые на сервере WebLogic компании BEA, версии 5.1, 6.0 и 6.1, а также на сервере WebSphere компании IBM, версии 3.5 и 4.

О сервере Tomcat проекта Jakarta

Jakarta представляет собой проект разработки ПО с открытым исходным кодом, поддерживаемый компанией Sun. Главной целью этого проекта является создание свободно распространяемого серверного решения J2EE, с качеством, не уступающим коммерческим разработкам. Приложение Tomcat составляет главную часть этого проекта, и многие люди зачастую воспринимают это название как синоним всего проекта Jakarta. Tomcat не является полномасштабным сервером приложений Java, а всего лишь машиной обработки сервлетов и серверных страниц JSP, чего, впрочем, более чем достаточно для развертывания и тестирования JSP и приложений сервлетов Java. Tomcat может выполняться как самостоятельное приложение, так и интегрироваться в web-сервер Apache. Лично я решил использовать Tomcat потому, что он очень устойчив, надежен и, что немаловажно, бесплатно доступен. Дополнительную информацию о Tomcat и проекте Jakarta можно найти в списке ссылок в конце этой статьи. Web-страница, указанная в разделе ссылок, также содержит ссылку, по которой можно загрузить исполняемые файлы Tomcat и исходный код.

СОВЕТ: Я рекомендую установить Tomcat в каталог, имя которого не содержит пробелов. Потом будет проще включить каталоги Tomcat в переменную classpath, например, при компиляции сервлетов.
О Rational PurifyPlus

PurifyPlus представляет собой законченное решение, предназначенное для тестирования программных средств, в том числе и Java-приложений. Этот пакет состоит из трех модулей:

Полная оценочная версия Rational PurifyPlus может быть загружена с web-сайта Rational. Оценочная лицензия рассчитана на 14 дней. Rational Purify, Quantify, и PureCoverage также доступны на следующих сайтах отдельных инструментов Rational: Rational Suite DevelopmentStudio, Rational Suite TestStudio, и Rational Suite Enterprise.

Эти три инструментальные средства обеспечивают не только полную поддержку для Java, но также поддерживают и Visual C/C++, Visual Basic, и приложения .NET. В этой статье, при упоминании PurifyPlus, я имею в виду версию 2001А Rational PurifyPlus. Конечно же, для тестирования Java-приложений на стороне сервера с помощью Rational PurifyPlus, вы должны инсталлировать эти приложения на серверной машине.

СОВЕТ: При установке Rational PurifyPlus, выберите опцию пользовательской настройки и затем отметьте опцию: "Добавить Purify (а также Quantify и PureCoverage) в системный path." Это не является установкой по умолчанию, и весьма пригодится при запуске инструментов PurifyPlus из командной строки.

О сервлетах и серверных страницах Java

Сервлеты и приложения Java выполняются на стороне сервера, и их основным предназначением служит создание контента для web-страниц в соответствии с запросом клиента. Сторона клиента обычно представлена web-браузером с загруженной web-страницей, на которой пользователь вводит данные, которые далее будут обработаны сервлетом, запущенным на стороне сервера. Результат работы сервлета отображается на web-странице, загруженной в браузер на клиентской стороне.

Серверные страницы Java (JSP) представляют собой в основном HTML-страницы, содержащие специальные теги, позволяющие либо встраивать код Java в страницу, либо предоставлять доступ к JavaBean и сервлетам, запущенным на стороне сервера. Rational PurifyPlus не может проверять синтаксис HTML, но способна тестировать код Java из серверных страниц, следя за событиями, поступающими от виртуальной машины Java (JVM).

За дальнейшей информацией о создании сервлетов и серверных страниц Java, см. статью Khawar Ahme, LoïcJulien Enterprise Java and Rational Rose в февральском выпуске (2001 г.) The Rational Edge.

Подготовка сервлетов и серверных страниц Java к тестированию с помощью Rational PurifyPlus

PurifyPlus имеет два основных уровня сбора данных: уровень методов и уровень строк. Для тестирования приложений Java на уровне методов, вам не нужно проводить перекомпиляцию тестируемого Java-приложения для сбора всей информации, относящейся к методам. Если вам нужно собрать информацию по строкам, то тогда придется перекомпилировать код Java для включения в него символьной отладочной информации. Для включения символьной информации в файлы классов Java, их следует перекомпилировать с параметром -g (компилятор компании Sun).

>javac -g MyServlet.java

Вся информация о Java-приложениях, выполняемых на Sun Java 2-совместимых виртуальных машинах, будет собираться с помощью JVMPI (Java Virtual Machine Profiling Interface – интерфейс профилирования виртуальной машины Java). Обязательным условием является использования виртуальной машины Java, полностью совместимой со спецификациями Sun Java 2. Кроме того, Rational PurifyPlus также поддерживает JVM компании Microsoft.

При компиляции сервлетов вам следует включить библиотеку сервлетов servlet.jar в переменную среды classpath. Эта библиотека инсталлируется вместе с Tomcat и находится в каталоге <Tomcat home>\common\lib. В качестве примера ниже представлена командная строка для компиляции MyServlet.java для создания файла с символьной отладочной информацией:

Javac -g -classpath <<Tomcat home>\common\lib\servlet.jar>MyServlet.java

Подготовка среды Windows для тестирования серверных страниц и сервлетов Java с помощью Rational PurifyPlus

Переменная среды

JAVA_HOME

указывает домашний каталог для виртуальной машины Java, принятой по умолчанию. Таким образом, также указывается виртуальная машина Java, с которой будет работать Rational PurifyPlus. Для правильной настройки выполнения программы на Java и возможности использования PurifyPlus, вам следует выполнить следующую команду, перед тем как вы в первый раз начнете профилирование нового сеанса Java:

pstart <or qstart, or cstart> -setup

Этой командой будет обновлен файл политик Java для выбора среды выполнения Java (JRE - Java Run-time Environment).

Ну а теперь давайте посмотрим на еще одну переменную среды:

JAVA_OPTIONS (или IBM_JAVA_OPTIONS для IBM JVM)

Как уже говорилось ранее, Rational PurifyPlus собирает всю информацию о приложении Java, используя интерфейс профилирования виртуальной машины Java (JVMPI). Так как PurifyPlus и JVM выполняются в качестве двух различных процессов, Java-процесс требует загрузки совместно используемой библиотеки PurifyPlus, называемой PureJVMPI. Эта библиотека прослушивает события JVM, собирает информацию о выполнении программы, выдаваемую JVMPI, и отсылает эту информацию PurifyPlus. Эта динамически связываемая библиотека загружается при помощи указания дополнительной опции при запуске выполнимого файла Java:-Xrun. Ниже приведен пример того, как PurifyPlus может быть запущена из командной строки:

>java -XrunPureJVMPI:Purify Java_App (или
>java -XrunPureJVMPI:Quantify Java_App или

>java -XrunPureJVMPI:Coverage Java_App)

Для профилирования Java-приложений, выполняемых на стороне сервера, вам потребуется создать вручную специальную системную переменную среды, с использованием опции –Xrun, которая будет запускать PurifyPlus каждый раз при активизации JVM. Для Sun JVM имя переменной будет _JAVA_OPTIONS и значение этой переменной должно быть:

-XrunPureJVMPI:Purify (или
-XrunPureJVMPI:Quantify  или
-XrunPureJVMPI:Coverage)

Если вы используете JVM компании IBM (что необходимо при работе на сервере приложений Java WebSphere), то в этом случае имя переменной среды должно быть IBM_JAVA_OPTIONS.

Вышеупомянутая опция, указанная в переменной среды _JAVA_OPTIONS, будет запускать Rational Purify (или Quantify, или PureCoverage) каждый раз при запуске Tomcat, и Purify (или Quantify, или PureCoverage) будет автоматически начинать сбор данных для процесса Java. Вы можете не включать в отчет данные, собранные от тех частей Java-процесса, которые не относятся к тестированию сервлетов и JSP, с использованием как предопределенных фильтров, так и PurifyPlus Filter Manager.

Подготовка среды сервера приложений Java к работе с Rational PurifyPlus

Для работы Rational PurifyPlus с сервером приложений Java, крайне важно указать одну и ту же переменную среды JAVA_HOME как для сервера, так и инструмента PurifyPlus. Для Apache Tomcat, вы можете непосредственно установить эту переменную, выполнив команду:

SET JAVA_HOME=<путь к установочному каталогу JRE>

Для серверов BEA WebLogic и IBM WebSphere, вы можете модифицировать командные файлы, используемые для установки переменных среды выполнения сервера, изменив значение переменной JAVA_HOME так, как показано ниже.

Подготовка PurifyPlus к сбору данных по приложению Java, выполнямом на сервере Apache Tomcat

Для того, чтобы запустить сбор информации Rational PurifyPlus о вашем сервлете или серверной странице Java, выполняющихся на Apache Tomcat, перед тестированием вы должны создать собственный набор предопределенных фильтров.

Фильтры PurifyPlus

В PurifyPlus предусмотрены две возможности фильтрации неотносящихся к тестированию данных. Первая возможность заключается в установке предопределенных фильтров для того инструмента, который вы планируете использовать (Rational PurifyPlus, Quantify или PureCoverage). Фильтр представляет собой список пакетов Java, для которых не нужно собирать данные. Этот список приводится в разделе [Prefilter] файла Profile.ini, который находится в родительском каталоге каждого из приложений PurifyPlus.

Каждый пакет Java, указанный в списке, должен быть с новой строки. Давайте изучим пример, показывающий, как предварительная фильтрация работает с функциями PurifyPlus.

Рис. 1. Файл Profile.ini для Rational Purify

Допустим, что мы хотим отключить филирование пакета Java com.sun. Если мы указали com.sun. (обратите внимание на точку в конце строки) в качестве строки в разделе фильтрации Profile.ini, тогда этот файл и все входящие пакеты будут исключены при выполнении сбора данных PurifyPlus во время тестирования (см. рис. 1). Для предварительной фильтрации индивидуальных классов вы можете указать их полные имена (сначала, как обычно, идет имя пакета) без заключительной точки. Например, com.rational.MyClass будет фильтровать класс MyClass пакета com.rational. Если вы укажете только имя класса (например, MyClass), тогда этот класс будет фильтроваться во всех пакетах. PurifyPlus не поддерживает фильтрацию по индивидуальным методам класса.

PurifyPlus Filter Manager

Второй способ фильтрации данных заключается в использовании Filter Manager, доступ к которому можно получить с помощью графического интерфейса пользователя каждого из инструментов (см. рис. 2A и 2B). Filter Manager создает специальный двоичный файл фильтрации для тестирования приложения Java. Он может быть использован только после проведения профилирования или сбора данных.

Рис. 2A. Основное окно PurifyPlus Filter Manager в Rational Quantify

Файлы классов, проверяемые в списке, будут исключены из отчетов, но данные, собранные для них, будут сохранены в итоговых результатах (т.е., в ячейке "Time", находящейся в нижнем правом углу окна Filter Manager, показанного на рис. 2A).

СОВЕТ: За один раз вы можете проверить большое количество классов (например, все классы Java.*), с помощью мыши маркировав их в списке классов, удерживая при этом нажатой клавишу CTRL или SHIFT. Нажатие правой клавишей мыши на маркированном наборе классов приведет к появлению всплывающего окна, а затем вы можете выбрать "Enable" для того, чтобы создать фильтры сразу для всех маркированных Java-классов.

Рис. 2B. Использование PurifyPlus Filter Manager в Rational PureCoverage

При запуске Tomcat в PurifyPlus, я рекомендую следующий список фильтров, находящийся в файле Profile.ini для каждого из средств PurifyPlus (Purify, Quantify, PureCoverage):

org.omg. javax.servlet. com.sun. org.apache. org.xml.
org.w3c. sun.

Для других серверных приложений Java, вам понадобится создать другие фильтры. См. мои СОВЕТЫ по поводу того, как применять Rational PurifyPlus с серверами Java-приложений BEA WebLogic и IBM WebSphere.

Часть 2

Дополнительную информацию Вы можете получить в компании Interface Ltd.

Обсудить на форуме Rational Software
Отправить ссылку на страницу по e-mail


Interface Ltd.
Тel/Fax: +7(095) 105-0049 (многоканальный)
Отправить E-Mail
http://www.interface.ru
Ваши замечания и предложения отправляйте автору
По техническим вопросам обращайтесь к вебмастеру
Документ опубликован: 30.01.02