Utilizar los servicios automatizables de TPTP

TPTP proporciona varios servicios automatizables que pueden invocarse desde fuera del contexto del entorno de trabajo de Eclipse. El servicio incluye la ejecución de prueba, la interrogación de resultados de prueba y la publicación de resultados de prueba.

En este tema de ayuda se explica cómo utilizar los servicios automatizables de TPTP incorporados para hacer lo siguiente:

Servicio de ejecución de prueba

Se proporciona el servicio de ejecución de prueba para el lanzamiento y la ejecución programáticos y la generación de resultados de la prueba. El servicio de ejecución de prueba engloba la funcionalidad de arnés de ejecución de prueba existente y deja en desuso los métodos de arnés de ejecución de prueba autónomos actuales.  Utilizando el servicio de ejecución de prueba, las pruebas pueden lanzarse con una instancia autónoma de Eclipse desde scripts ant, scripts shell y programas arbitrarios. Pueden ejecutarse varias pruebas al mismo tiempo si hay memoria suficiente en la máquina en ejecución (actualmente cada ejecución de servicio necesita una instancia de host de Eclipse aparte.) Incluso aunque las pruebas se ejecuten en sistemas remotos utilizando las características de ejecución de pruebas remotas de TPTP y el despliegue, el sistema del consumidor de servicio es el que ejecuta las instancias de host de Eclipse.

Propiedades de servicio

Consulte el material acerca de las propiedades de servicio de ejecución de pruebas soportadas: las mismas propiedades son válidas para los adaptadores de automatización de clientes. Para scripts ant, se proporciona un conjunto de tareas ant simples para establecer propiedades de servicio y ejecutar el servicio. Para scripts shell, las propiedades se especifican en el paradigma de línea de mandatos esperado (utilizando guiones para las propiedades seguidos de un espacio en blanco y después un valor por ejemplo.) Para los programas Java, se hará referencia a los archivos jar de cliente de automatización y se utilizarán par establecer propiedades y controlar la ejecución del servicio. Algunos adaptadores de cliente pueden tener opciones adicionales necesarias para ese entorno de cliente determinado (o que el adaptador ofrece como características extra.)

Empaquetado de infraestructuras de servicio automatizable

Los componentes del servicio automatizable de TPTP se empaquetan en el plug-in org.eclipse.hyades.execution representado con tres archivos jar, algo de XML en el plugin.xml y algunas entradas en el archivo de manifiesto MANIFEST.MF.

  1. tptp-automation-client.jar (el código ligero necesario para establecer el lado del cliente del bus del servicio, lanzar Eclipse si es necesario y ejecutar servicios en modalidad autónoma, se hará referencia a este archivo jar al ejecutar pruebas desde la línea de mandatos y scripts shell así como al ejecutar pruebas desde código Java arbitrario.)
  2. tptp-automation-server.jar (el servidor de automatización de TPTP, cargado bajo demanda según se pregunta a los servicios y estos se ejecutan utilizando la infraestructura, implementa el punto de extensión de aplicaciones Eclipse utilizado como el intermediario y el ubicador de servicios)
  3. ant-tptp.jar (este jar tiene el mismo contenido que el tptp-automation-client.jar pero se ha redenominado para ser coherente con otras bibliotecas de tarea ant)

Ejecutar pruebas desde scripts ant

Asegúrese de que ant esté adecuadamente instalado si se van a ejecutar pruebas fuera de una instancia de Eclipse en ejecución: consulte la documentación de ant para configurar esto adecuadamente. Además de la instalación estándar de ant, copie también el archivo ant-tptp.jar en el directorio lib de ant conjuntamente con las otras tareas. Si la ejecución se realiza dentro de Eclipse, ant ya está instalado aunque debe asegurarse de incluir el archivo ant-tptp.jar en la pestaña de tareas adicionales de la configuración de lanzamiento de ant o en la sección Entradas globales de la página de preferencias de Vía de acceso de clases de Ant.  El script ant de ejemplo incorporado que se proporciona a continuación es un ejemplo de un script ant llamado "test.xml" que ejecuta una prueba llamada testA en la carpeta unit-tests del proyecto test. El proyecto test se encuentra en el espacio de trabajo especificado "d:\development\workspace" y la instancia host de Eclipse es "d:\development\eclipse". Consulte la lista de propiedades soportadas para otras combinaciones de propiedades válidas.

El ejemplo siguiente utiliza la tarea test TPTP aunque también es posible ejecutar una prueba utilizando la tarea automation de TPTP.  La tarea automation más general es una tarea ant para ejecutar servicios automatizables de TPTP arbitrarios que contrasta con la tarea test de TPTP más específica. La tarea test es una tarea a prueba de tipos creada específicamente para lanzar el servicio de ejecución de pruebas. Encontrará más ejemplos de script ant en el paquete org.eclipse.hyades.automation.test de la carpeta fuente src-automation-client del plug-in org.eclipse.hyades.execution.

<project name="Script de prueba de tareas ant de TPTP"
 default="test"
 xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant">

<property name="eclipse.home" value="D:\development\eclipse"/>

 <description>
  Este script ant prueba los adaptadores de cliente de tareas ant de automatización de
  TPTP y también puede utilizarse para probar la ejecución subyacente de los servicios
  automatizables de TPT a través del servidor de automatización de TPTP
 </description>

 <!-- Ejecutar suites de prueba de TPTP -->
 <target
name="test" description="Ejecuta suites de prueba de TPTP utilizando tareas
ant de TPTP"> 

   <!--
Ejecutar una suite de pruebas de TPTP con la tarea test y proporcionando el espacio de trabajo
-->
   <tptp:test
     workspace="D:\development\workspace" 
     project="tests"
     suite="unit-tests/testA.testsuite"
     synchronicity="synchronous"/>

  </target>
</project>

Ejecutar varias pruebas y consultar sus resultados desde scripts ant

Asegúrese de haber configurado adecuadamente ant para ejecutar los servicios automatizables de TPTP (consulte la sección anterior acerca de la ejecución de pruebas desde ant.) El ejemplo siguiente muestra cómo utilizar la tarea tptp:execution para ejecutar varias pruebas y cómo utilizar la tarea tptp:interrogation para consultar el resultado de esas ejecuciones de prueba. Ambas tareas aceptan varios fileset y o filelist de ant, lo que permite utilizar comodines o especificar varios archivos como entradas para las tareas. En este ejemplo, ejecutaremos todas las suites de prueba en el proyecto TPTPJUnitTests y se nos devolverá el conjunto de todos los archivos .execution resultantes como filelist en la variable ant que proporcionamos (en este caso "tptp.test.results".) A continuación, pasaremos ese filelist como entrada al servicio tptp:interrogation que consultará cada uno de esos archivos de ejecución para determinar un veredicto general y lo asignará a la variable ant que proporcionaremos (en este caso "tptp.test.verdict".)

<project name="Guía de aprendizaje de servicios automatizables de TPTP"
default="main" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <!-- Definir propiedades comunes para todos los servicios automatizables --> <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" />
<!-- Definir propiedades locales de script que pueden variar por instalación --> <property name="project.dir" value="${tptp.test.workspace}\${tptp.test.project}"/>
<target name="main" depends="test-execution, test-results-interrogation"/>
<!-- Ejecutar suites de prueba utilizando nombre de resultados predeterminado --> <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>
<!-- Consultar veredicto en resultados de suite de prueba --> <target name="test-results-interrogation"> <echo message="Consultar resultados de suite de prueba..." /> <condition property="tptp.test.success">     <tptp:interrogation verdictproperty="tptp.test.verdict">         <filelist refid="tptp.test.results"/>     </tptp:interrogation> </condition> <echo message="El veredicto del resultado de prueba general es: '${tptp.test.verdict}'" /> </target>
</project>

Generar informes de prueba desde scripts ant

Asegúrese de haber configurado adecuadamente ant para ejecutar los servicios automatizables de TPTP (consulte la sección anterior acerca de la ejecución de pruebas desde ant.) El ejemplo siguiente muestra cómo utilizar la tarea tptp:execution para ejecutar varias pruebas y cómo utilizar la tarea tptp:publication para generar informes basados en BIRT a partir de los resultados de esas ejecuciones de prueba. La tarea de publicación también acepta varios fileset y/o filelist de ant, lo que permite utilizar comodines o especificar directamente varios archivos como entradas. En este ejemplo, ejecutaremos todas las suites de prueba en el proyecto TPTPJUnitTests y se nos devolverá el conjunto de todos los archivos .execution resultantes como filelist en la variable ant que proporcionamos (en este caso "tptp.test.results".) Después pasaremos ese filelist como entrada al servicio tptp:publication que generará un informe de ejecución de TPTP utilizando la plantilla de informes predeterminada (TestExecution.rptdesign, que se encuentra en el plug-in org.eclipse.tptp.test.report.birt), situándolo en la ubicación especificada (en este caso c:\temp\report.html.)

<project name="Guía de aprendizaje de servicios automatizables de TPTP"
default="main" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <!-- Definir propiedades comunes para todos los servicios automatizables --> <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" />
<!-- Definir propiedades locales de script que pueden variar por instalación --> <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"/>
<!-- Ejecutar suites de prueba utilizando nombre de resultados predeterminado --> <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>
<!-- Publicar informe de resultados de suite de prueba -->
<target name="test-results-publication"> <echo message="Publicar informe de resultados de suite de prueba..." /> <tptp:publication report="${report.publication.location}/report.html">     <filelist refid="tptp.test.results"/> </tptp:publication> </target>
</project>

Personalizar informes de prueba desde scripts ant

Puede personalizar el comportamiento de la tarea tptp:publication especificando una plantilla de informe BIRT diferente, por ejemplo TabularReport.rptdesign, que se encuentra en el directorio de plantillas del plug-in org.eclipse.tptp.test.report.birt. También puede personalizar el comportamiento utilizando el servicio de publicación publish-testsuites y proporcionando suites de prueba como entrada para el servicio de publicación en lugar de estos archivos de resultados de ejecución de prueba. Si utiliza el servicio de publicación publish-testsuites y pasa los archivos de suite de pruebas como entrada al servicio de publicación, también debe especificar una fecha de inicio y finalización para la ventana de informe (que se utilizará para consultar el espacio de trabajo y buscar todos los resultados de ejecución dentro de esa ventana temporal.) El ejemplo siguiente muestra cómo ejecutar un informe de todas las suites de prueba del proyecto Test1, seleccionando cada resultado de ejecución de los últimos 60 días y utilizando el diseño de informe Tabular para generar el informe.

<project name="Guía de aprendizaje de servicios automatizables de TPTP"
default="main" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <!-- Definir propiedades comunes para todos los servicios automatizables --> <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" />
<!-- Definir propiedades locales de script que pueden variar por instalación --> <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"/>
<!-- Ejecutar el informe --> <target name="main" depends="test-results-publication"/>
<target name="set-date-range">     <!-- Utilizar mecanismos tstamp ant estándar para especificar el rango de fechas deseado -->     <!-- Este ejemplo utiliza un rango definido entre hoy y los 60 días anteriores -->     <tstamp>         <format property="startDateTime" pattern="MM/dd/aaaa hh:mm aa" offset="-60" unit="day"/>     </tstamp>     <tstamp>         <format property="endDateTime" pattern="MM/dd/aaaa hh:mm aa"/>     </tstamp> </target>
<!-- Publicar informe de resultados de suite de prueba --> <target name="test-results-publication" depends="set-date-range"> <echo message="Publishing test suite results report..." /> <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>

Ejecutar pruebas desde la línea de mandatos y scripts shell

Las pruebas pueden ejecutarse directamente desde la línea de mandatos y desde scripts shell con las propiedades de prueba en forma de argumentos de línea de mandatos. Los adaptadores del cliente de automatización de TPTP proporcionan archivos .bat y .cmd para utilizarlos en Windows y se proporciona un archivo .sh para utilizarlo en el sistema operativo Linux. Es posible especificar conjuntos largos de argumentos y/o de argumentos repetidos con frecuencia en un archivo config para minimizar el tecleo necesario para ejecutar el servicio de ejecución de prueba desde la línea de mandatos. El adaptador del cliente de automatización de shell se manifiesta como un archivo de texto (para el archivo por lotes o el script) y un componente Java complementario; ambos deben existir para ejecutar pruebas desde la línea de mandatos. Todos los adaptadores de clientes de automatización proporcionados por TPTP pueden encontrarse en tptp-automation-client.jar aunque ant-tptp.jar replica parte del código de adaptador en forma de un archivo jar ant (esto se hizo para que el nombre del archivo jar de tareas de TPTP fuera coherente con las otras tareas ant disponibles.)

Las propiedades del servicio de ejecución de pruebas se establecen prefijando los nombres de propiedad con un guión, asegurándose de que también especifiquen el directorio inicial o raíz de Eclipse.

Ejecutar pruebas desde aplicaciones Java y plug-ins

Las pruebas pueden lanzarse desde cualquier aplicación Java y, de hecho, los otros adaptadores de automatización de clientes como los adaptadores ant y shell, utilizan internamente el adaptador java para engancharse al bus de servicio. El único requisito para ejecutar pruebas desde código Java consiste en asegurarse de que se haga referencia adecuadamente a tptp-automation-client.jar (en Eclipse esto significa tener la biblioteca en la vía de acceso de construcción del proyecto Java) y por supuesto, también deben cumplirse todos los requisitos habituales de TPTP, como por ejemplo que el controlador de agentes debe estar ejecutándose. 

El adaptador del cliente de automatización Java proporciona una API muy simple para ejecutar pruebas con todas las propiedades especificables contenidas en un objeto de propiedades Java estándar. A continuación se proporciona un ejemplo para ejecutar la misma prueba presentada en el ejemplo de script ant anterior. Tenga en cuenta que el identificador de servicio pasado al método execute es el identificador de servicio para el servicio de ejecución de prueba de TPTP (este servicio soporta todos los tipos de prueba de TPTP básicos); también es posible ejecutar otros servicios automatizables, si están disponibles, pero variando el identificador y las propiedades configuradas en el código siguiente.

// Crear el adaptador Java asociado al directorio de instalación de Eclipse especificado
AutomationClientAdapter automation = new AutomationClientAdapter
  ("d:\\development\\eclipse");

// Crear y configurar un objeto de propiedades
Properties properties = new Properties();
properties.setProperty("workspace", "D:\\development\\workspace");
properties.setProperty("project", "tests");
properties.setProperty("suite", "unit-tests/testA.testsuite");

// Ejecutar el servicio denominado a continuación utilizando las propiedades configuradas
automation.execute("org.eclipse.hyades.test.tools.core.execute", properties);

Conceptos relacionados
Visión general de la infraestructura de servicios automatizable

Tareas relacionadas
Lanzar pruebas desde scripts y aplicaciones

Consultas relacionadas
Propiedades de servicio de ejecución de prueba soportadas