Работа со службами автоматизации TPTP

TPTP включает в себя несколько служб автоматизации, которые можно вызывать вне контекста рабочей среды Eclipse. Службы включают в себя выполнение тестов, а также запрос и публикацию результатов тестов.

В этом разделе справки рассказано об использовании встроенных служб автоматизации TPTP для решения следующих задач:

Служба выполнения тестов

Служба выполнения тестов предназначена для автоматизации запуска и выполнения тестов и формирования результатов.  Служба выполнения тестов заменила методы выполнения тестов из прежних версий системы и поддерживает все возможности этих методов.      Служба выполнения тестов позволяет запускать тесты из консольных сеансов Eclipse с помощью сценариев  ant, сценариев оболочки и обязательных программ.  При наличии достаточного объема памяти в системе выполнения можно выполнять несколько тестов одновременно   (в текущей версии Eclipse  каждому экземпляры службы нужен отдельный экземпляр хоста Eclipse).    Даже если тесты выполняются в удаленных системах на платформе удаленного выполнения тестов TFTP, системой выполнения считается система, в которой работают экземпляры хоста Eclipse.  

Свойства службы

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

Пакеты среды автоматизируемых служб

Компоненты автоматизируемых служб TPTP входят в состав модуля org.eclipse.hyades.execution, состоящего из трех  файлов  jar, кода XML в файле plugin.xml и нескольких записей в файле MANIFEST.MF.

  1. tptp-automation-client.jar (небольшой фрагмент кода, необходимого для настройки шины службы на стороне клиента, запуска Eclipse и выполнения служб в консольном режиме; этот файл jar используется при выполнении тестов из командной строки, а также при выполнении сценариев оболочки в рамках тестов на основе обязательного кода на Java).
  2. tptp-automation-server.jar (сервер автоматизации TPTP, загружаемый при вызове и выполнении служб в среде автоматизации; этот сервер реализует базовую точку расширения приложений Eclipse, используется в качестве посредника и средства поиска служб).
  3. ant-tptp.jar (этот файл jar содержит тот же код, что файл tptp-automation-client.jar; он переименован для обеспечения совместимости с  библиотеками других задач  ant).

Запуск тестов из сценариев 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

Убедитесь, что вы правильно настроили 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

Убедитесь, что вы правильно настроили 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>

Настройка отчетов по тестам из сценариев ant

Вы можете настроить алгоритм выполнения задачи 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

Тесты можно запускать из любых приложений 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);

Связанные концепции
Обзор среды автоматизируемых служб

Связанные задачи
Запуск тестов из сценариев и приложений

Связанные справочники
Поддерживаемые параметры службы выполнения тестов