TPTP включает в себя несколько служб автоматизации, которые можно вызывать вне контекста рабочей среды Eclipse. Службы включают в себя выполнение тестов, а также запрос и публикацию результатов тестов.
В этом разделе справки рассказано об использовании встроенных служб автоматизации TPTP для решения следующих задач:
Служба выполнения тестов предназначена для автоматизации запуска и выполнения тестов и формирования результатов. Служба выполнения тестов заменила методы выполнения тестов из прежних версий системы и поддерживает все возможности этих методов. Служба выполнения тестов позволяет запускать тесты из консольных сеансов Eclipse с помощью сценариев ant, сценариев оболочки и обязательных программ. При наличии достаточного объема памяти в системе выполнения можно выполнять несколько тестов одновременно (в текущей версии Eclipse каждому экземпляры службы нужен отдельный экземпляр хоста Eclipse). Даже если тесты выполняются в удаленных системах на платформе удаленного выполнения тестов TFTP, системой выполнения считается система, в которой работают экземпляры хоста Eclipse.
Описание свойств можно найти в справке по свойствам поддерживаемой службы выполнения тестов. Во всех адаптерах автоматизации клиентов действует один и тот же комплект свойств. Для сценариев ant предусмотрен набор простых задач, позволяющих задавать свойства службы и выполнять службу. Для сценариев оболочки параметры нужно указывать в командной строке в следующем формате: знак минус, имя свойства, пробел и значение свойства. При выполнении программ на Java применяются файлы jar клиента автоматизации, и эти же файлы используются для настройки свойств и управления выполнением службы. В некоторых адаптерах клиентов могут быть предусмотрены дополнительные опции, необходимые для среды конкретного клиента или управляющие выполнением дополнительных функций конкретного адаптера.
Компоненты автоматизируемых служб TPTP входят в состав модуля org.eclipse.hyades.execution, состоящего из трех файлов jar, кода XML в файле plugin.xml и нескольких записей в файле MANIFEST.MF.
tptp-automation-client.jar
(небольшой фрагмент кода, необходимого для настройки шины
службы на стороне клиента, запуска Eclipse и выполнения служб в консольном режиме; этот файл jar
используется при выполнении тестов из командной строки, а также при выполнении сценариев оболочки в рамках
тестов на основе обязательного кода на Java).tptp-automation-server.jar
(сервер автоматизации TPTP, загружаемый при вызове и выполнении
служб в среде автоматизации; этот сервер реализует базовую точку расширения приложений Eclipse, используется
в качестве посредника и средства поиска служб). ant-tptp.jar
(этот файл jar содержит тот же код, что файл tptp-automation-client.jar; он
переименован для обеспечения совместимости с библиотеками других задач ant). Если тесты будут выполняться вне экземпляра Eclipse, проверьте правильность установки ant. Дополнительную информацию об этом можно найти в документации по ant. После установки ant нужно скопировать файл ant-tptp.jar в каталог библиотек ant. Если тесты выполняются внутри Eclipse, пакет ant уже установлен, однако все равно необходимо убедиться в том, что файл ant-tptp.jar указан на вкладке дополнительных задач в конфигурации запуска ant или в разделе глобальных записей на странице параметров Ant Classpath. Ниже приведен пример сценария ant в файле "test.xml", выполняющего тест testA в папке unit-tests проекта теста. Проект теста находится в рабочей области "d:\development\workspace", а экземпляр хоста Eclipse находится в папке "d:\development\eclipse". Другие допустимые сочетания параметров приведены в списке поддерживаемых свойств.
В следующем примере используется задача теста TPTP, хотя вместо нее может применяться и задача автоматизации TPTP. Задачи автоматизации - это более широкий класс задач ant, предназначенных для выполнения обязательных автоматизируемых служб TPTP, тогда как задачи теста TPTP более узкоспециализированные. Задачи теста снабжены защитой типов и специально разработаны для запуска службы выполнения тестов. В пакете org.eclipse.hyades.automation.test из папки клиента автоматизации модуля org.eclipse.hyades.execution приведены другие примеры сценариев ant.
<project name="TPTP Ant Tasks Test Script" default="test" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <property name="eclipse.home" value="D:\development\eclipse"/> <description> This ant script tests the TPTP automation ant task client adapters and also can be used to test the underlying execution of TPTP automatable services via the TPTP automation server </description> <!-- Execute TPTP test suites --> <target name="test" description="Executes TPTP Test Suites using default TPTP Ant Tasks"> <!-- Execute a TPTP test suite using the test task and providing the workspace --> <tptp:test workspace="D:\development\workspace" project="tests" suite="unit-tests/testA.testsuite" synchronicity="synchronous"/> </target> </project>
Убедитесь, что вы правильно настроили ant для запуска служб автоматизации
TPTP (см. предыдущий раздел о
запуске тестов из ant.) В приведенном ниже примере показано, как использовать
задачу tptp:execution для запуска нескольких тестов и как воспользоваться
задачей tptp:interrogation для запроса результатов выполнения тестов.
Обе эти задачи ant допускают использование нескольких атрибутов ant
fileset
и/или filelist
, что позволяет применять
символы подстановки или непосредственно перечислять несколько файлов в качестве
исходных данных задачи. В данном примере выполняются все комплекты тестов из
проекта TPTPJUnitTests, а полученный набор файлов .execution возвращается в
виде списка filelist
в указанной нами переменной ant (в данном
случае это "tptp.test.results"). После этого мы передаем filelist
в качестве входного параметра службе tptp:interrogation, которая запрашивает
каждый файл, выносит общий вердикт и заносит его в указанную нами переменную ant (в данном случае это
"tptp.test.verdict").
<project name="Учебник по службам автоматизации TPTP"
default="main" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <!-- Общие свойства для всех служб автоматизации --> <property name="tptp.test.workspace" value="C:\eclipsecon\eclipse\workspace"/> <property name="tptp.test.project" value="TPTPJUnitTests" /> <property name="tptp.test.connection" value="tptp:rac://localhost:10002/default"/> <property name="tptp.automation.eclipse" value="C:\eclipseconwb_birt\eclipse" />
<!-- Локальные свойства сценария, разные в разных установленных экземплярах --> <property name="project.dir" value="${tptp.test.workspace}\${tptp.test.project}"/>
<target name="main" depends="test-execution, test-results-interrogation"/>
<!-- Выполнить тесты с использованием имен результатов по умолчанию --> <target name="test-execution"> <echo message="Executing test suite..." /> <tptp:execution resultsrefid="tptp.test.results"> <fileset dir="${project.dir}"> <include name="**/*.testsuite"/> </fileset> </tptp:execution> </target>
<!-- Запросить результаты выполнения тестов для вердикта --> <target name="test-results-interrogation"> <echo message="Interrogating test suite results..." /> <condition property="tptp.test.success"> <tptp:interrogation verdictproperty="tptp.test.verdict"> <filelist refid="tptp.test.results"/> </tptp:interrogation> </condition> <echo message="Общий вердикт: '${tptp.test.verdict}'" /> </target>
</project>
Убедитесь, что вы правильно настроили ant для запуска служб автоматизации
TPTP (см. предыдущий раздел о
запуске тестов из ant.) В приведенном ниже примере показано, как использовать
задачу tptp:execution для запуска нескольких тестов и как воспользоваться
задачей tptp:publication для генерации отчетов BIRT на основании результатов
выполнения тестов. задача публикации также допускает использование нескольких
атрибутов ant filesets
и/или filelists
, что позволяет
применять символы подстановки или непосредственно перечислять несколько файлов
в качестве исходных данных. В данном примере выполняются все комплекты тестов
из проекта TPTPJUnitTests, а полученный набор файлов .execution возвращается в
виде списка filelist
в указанной нами переменной ant (в данном
случае это "tptp.test.results"). Затем мы передаем filelist
на
вход службы tptp:publication, которая генерирует отчет выполнения TPTP с
помощью шаблона отчета по умолчанию (TestExecution.rptdesign во встраиваемом
модуле org.eclipse.tptp.test.report.birt) и размещает его в указанном каталоге
(в данном случае это c:\temp\report.html).
<project name="Учебник по службам автоматизации TPTP"
default="main" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <!-- Общие свойства для всех служб автоматизации --> <property name="tptp.test.workspace" value="C:\eclipsecon\eclipse\workspace"/> <property name="tptp.test.project" value="TPTPJUnitTests" /> <property name="tptp.test.connection" value="tptp:rac://localhost:10002/default"/> <property name="tptp.automation.eclipse" value="C:\eclipseconwb_birt\eclipse" />
<!-- Локальные свойства сценария, разные в разных установленных экземплярах --> <property name="project.dir" value="${tptp.test.workspace}\${tptp.test.project}"/> <property name="report.publication.location" location="c:/temp" />
<target name="main" depends="test-execution, test-results-publication"/>
<!-- Выполнить тесты с использованием имен результатов по умолчанию --> <target name="test-execution"> <echo message="Executing test suite..." /> <tptp:execution resultsrefid="tptp.test.results"> <fileset dir="${project.dir}"> <include name="**/*.testsuite"/> </fileset> </tptp:execution> </target>
<!-- Опубликовать отчет с результатами -->
<target name="test-results-publication"> <echo message="Publishing test suite results report..." /> <tptp:publication report="${report.publication.location}/report.html"> <filelist refid="tptp.test.results"/> </tptp:publication> </target>
</project>
Вы можете настроить алгоритм выполнения задачи tptp:publication, указав нужный шаблон отчета BIRT, например, TabularReport.rptdesign, находящийся в шаблоне каталогов встраиваемого модуля org.eclipse.tptp.test.report.birt. Кроме того, изменить алгоритм можно, воспользовавшись службой публикации publish-testsuites, и указав в качестве исходных данных вместо файлов результатов тестовые комплекты. При использовании службы публикации publish-testsuites и передаче ей в качестве исходных данных тестовых комплектов необходимо также задать начальную и конечную дату для окна отчета (эти сведения будут применяться для поиска в рабочей области всех результатов выполнения, попадающих в указанный интервал времени). Приведенный ниже пример иллюстрирует создание отчета по всем тестовым комплектам в проекте Test1 путем выбора каждого из отчетов, созданных за последние 60 дней и генерации отчета с помощью шаблона Tabular.
<project name="Учебник по службам автоматизации TPTP"
default="main" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <!-- Общие свойства для всех служб автоматизации --> <property name="tptp.test.workspace" value="C:\eclipsecon\eclipse\workspace"/> <property name="tptp.test.project" value="TPTPJUnitTests" /> <property name="tptp.test.connection" value="tptp:rac://localhost:10002/default"/> <property name="tptp.automation.eclipse" value="C:\eclipseconwb_birt\eclipse" />
<!-- Локальные свойства сценария, разные в разных установленных экземплярах --> <property name="project.dir" value="${tptp.test.workspace}\${tptp.test.project}"/> <property name="report.publication.location" location="c:/temp" /> <property name="tptp.publication.service" value="org.eclipse.tptp.test.report.birt.publish-testsuites"/>
<!-- Генерация отчета --> <target name="main" depends="test-results-publication"/>
<target name="set-date-range"> <!-- Используем стандартные механизмы меток времени ant для задания требуемого временного интервала --> <!-- В данном примере используются 60 дней, предшествующие текущей дате --> <tstamp> <format property="startDateTime" pattern="MM/dd/yyyy hh:mm aa" offset="-60" unit="day"/> </tstamp> <tstamp> <format property="endDateTime" pattern="MM/dd/yyyy hh:mm aa"/> </tstamp> </target>
<!-- Публикация результатов --> <target name="test-results-publication" depends="set-date-range"> <echo message="Публикация отчетов о результатах выполнения теста..." /> <tptp:publication report="${report.dir}/report.html" reportTemplateLocation="C:\TPTP_TestPass\ReportBuild\eclipse\plugins\org.eclipse.tptp.test.report.birt_4.2.0.v200605180959\templates\TabularReport.rptdesign" startDateTime="${startDateTime}" endDateTime="${endDateTime}" > <fileset dir="${project.dir}"> <include name="**/*.testsuite" /> </fileset> </tptp:publication> </target>
</project>
Тесты можно выполнять напрямую из командной строки и из сценариев оболочки. В обоих случаях параметры тестов должны быть указаны в командной строке. В состав адаптеров клиента автоматизации TPTP входят файлы .bat и .cmd для операционной системы Windows и файл .sh для операционной системы Linux. Чтобы упростить команды выполнения тестов в командной строке, можно сохранить повторяющиеся и часто используемые параметры в файле конфигурации. В состав адаптера клиента автоматизации оболочки входят текстовый файл (для пакетных заданий и сценариев) и дополнительный компонент Java - и файл, и компонент необходимы для выполнения тестов из командной строки. Все адаптеры автоматизации клиентов TPTP находятся в файле tptp-automation-client.jar, хотя в файле ant-tptp.jar продублирован код некоторых адаптеров для совместимости с другими задачами ant.
Для того чтобы задать параметры службы выполнения теста, нужно указать перед их именами дефисы. Кроме того, в командной строке необходимо указать домашний или корневой каталог Eclipse.
Тесты можно запускать из любых приложений Java. Более того, другие адаптеры автоматизации клиентов, например адаптеры ant и адаптеры оболочки, пользуются адаптером Java для работы с шиной служб. Для выполнения тестов из приложений и модулей Java нужно обеспечить доступ к файлу tptp-automation-client.jar (в Eclipse для этого нужно добавить данную библиотеку в путь компоновки проекта Java), а также обеспечить выполнение всех стандартных требований TPTP, например наличие рабочего контроллера агента.
Адаптер клиентов автоматизации Java снабжен очень простым API для выполнения тестов с передачей всех параметров в стандартном объекте свойств Java. Ниже приведен пример выполнения того же теста, что в предыдущем примере сценария ant. Обратите внимание на то, что в метод execute передается идентификатор службы выполнения тестов TPTP (эта служба поддерживает все основные типы тестов TPTP). Таким же способом можно выполнять и другие автоматизируемые службы, соответствующим образом изменив идентификатор службы и набор параметров.
// Create the Java adapter associated with the specified Eclipse home AutomationClientAdapter automation = new AutomationClientAdapter ("d:\\development\\eclipse"); // Create and configure a properties object Properties properties = new Properties(); properties.setProperty("workspace", "D:\\development\\workspace"); properties.setProperty("project", "tests"); properties.setProperty("suite", "unit-tests/testA.testsuite"); // Execute the service named below using the configured properties automation.execute("org.eclipse.hyades.test.tools.core.execute", properties);
Связанные концепции
Обзор среды автоматизируемых служб
Связанные задачи
Запуск тестов из сценариев и приложений
Связанные справочники
Поддерживаемые параметры службы выполнения тестов
(C) Copyright IBM Corporation 2005,2006. Все права защищены.