Utilizando os Serviços Automatizáveis TPTP

O TPTP fornece vários serviços automatizáveis que podem ser chamados de fora do contexto do ambiente de trabalho do eclipse. Os serviços incluem a execução do teste, a interrogação dos resultados do teste e a publicação dos resultados do testes.

Este tópico de ajuda explica como utilizar os serviços automatizáveis TPTP integrados para fazer o seguinte:

Serviço de Execução de Teste

O serviço de execução de teste é fornecido para a ativação, execução e geração programáticas dos resultados do teste.  O serviço de execução de teste agrupa a funcionalidade de subordinação de execução de teste existente e torna obsoleto os métodos atuais de subordinação de execução de teste independentes.  Com o serviço de execução de teste, os testes podem ser ativados utilizando um Eclipse headless a partir de scripts ant, scripts de shell e de programas arbitrários.  Vários testes poderão ser executados ao mesmo tempo se houver memória suficiente na máquina de execução (cada execução de serviço requer atualmente uma instância separada do host do Eclipse).  Mesmo que os testes estejam em execução em máquinas remotas utilizando recursos de execução de teste remotos e implementação do TPTP, a máquina do consumidor do serviço é aquela que executa as instâncias de host do Eclipse.

Propriedades do Serviço

Consulte o material de referência sobre as propriedades suportadas do serviço de execução de teste -- as mesmas propriedades são válidas entre os adaptadores de automatização do cliente.  Para scripts Ant, um conjunto de tarefas ant simples é fornecido para definir propriedades do serviço e executar o serviço.  Para scripts de shell, as propriedades são especificadas no paradigma de linha de comandos esperado (utilizando traços para propriedades, seguido de espaço e, em seguida, de um valor, por exemplo).  Para programas Java, os jars do cliente de automatização serão referidos e utilizados para configurar propriedades e controlar a execução do serviço.  Alguns adaptadores do cliente podem ter opções adicionais que serão requeridas para esse ambiente de cliente específico (ou oferecidas como recursos extras a partir desse adaptador).

Pacote de Estrutura de Serviço Automatizável

Os componentes do serviço automatizável TPTP são compactados no plug-in org.eclipse.hyades.execution representado por três arquivos jar, algum XML no plugin.xml e algumas entradas no arquivo MANIFEST.MF.

  1. tptp-automation-client.jar (o bit de código reduzido necessário para estabelecer o lado cliente do barramento de serviço, ativar o Eclipse, se necessário, e executar serviços de forma headless; esse jar será referido ao executar testes a partir da linha de comandos e scripts de shell, assim como ao executar testes a partir de código Java arbitrário).
  2. \tptp-automation-server.jar (o servidor de automatização TPTP, carregado on-demand conforme os serviços são consultados e executados utilizando a estrutura, implementa o ponto de extensão de aplicativos núcleo do Eclipse, utilizado como intermediário e localizador de serviços)
  3. ant-tptp.jar (esse jar possui o mesmo conteúdo do tptp-automation-client.jar, mas é renomeado para consistência com outras bibliotecas de tarefas ant)

Executando Testes a partir de Scripts Ant

Assegure-se de que o ant esteja instalado adequadamente se os testes tiverem que ser executados fora de uma instância em execução do Eclipse -- consulte a documentação do ant para configurá-lo adequadamente.  Além da instalação padrão do ant, copie também o ant-tptp.jar para o diretório lib ant juntamente a outras tarefas.  Se você estiver executando a partir do Eclipse, o ant já estará instalado, contudo, certifique-se de incluir o ant-tptp.jar na guia de tarefas adicionais da configuração de ativação de ant ou na seção Entradas Globais da página de preferências Caminho de Classe Ant.   O script ant de amostra incorporado a seguir é um exemplo de script ant nomeado "test.xml" que executa um teste nomeado testA na pasta unit-tests do projeto de teste.  O projeto de teste está localizado no espaço de trabalho especificado de "d:\development\workspace" e a instância do host do Eclipse é especificada como "d:\development\eclipse".  Consulte a lista de referência de propriedades suportadas para obter outras combinações válidas de propriedades.

O exemplo a seguir utiliza a tarefa de teste TPTP, embora também seja possível executar um teste utilizando a tarefa de automatização TPTP.  A tarefa de automatização mais generalizada é uma tarefa ant para a execução de serviços automatizáveis TPTP arbitrários, que contrasta com a tarefa de teste TPTP mais específica.  A tarefa de teste é uma tarefa segura criada especificamente para ativar o serviço de execução de teste.  Há mais exemplos de scripts ant no pacote org.eclipse.hyades.automation.test da pasta de origem do cliente de automatização src do plug-in org.eclipse.hyades.execution.

<project name="Script de Teste de Tarefas Ant do TPTP"
 default="test"
 xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant">

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

 <descrição>
  Este script ant testa os adaptadores de clientes de tarefas ant de automatização TPTP
  e também podem ser utilizados para testar a execução de base dos serviços automatizáveis
  TPTP por meio do servidor de automatização TPTP
 </descrição>

 <!-- Executar conjuntos de teste TPTP -->
 <target
name="test" description="Executa os Conjuntos de Teste TPTP utilizando as Tarefas
Ant do TPTP"> 

   <!--
Executar um conjunto de teste TPTP utilizando a tarefa de teste e fornecendo o espaço de trabalho
-->
   <tptp:test
     workspace="D:\development\workspace" 
     project="tests"
     suite="unit-tests/testA.testsuite"
     synchronicity="synchronous"/>

  </target>
</project>

Executando Vários Testes e Interrogando seus Resultados a partir de Scripts Ant

Assegure-se de que você tenha configurado corretamente o ant para executar serviços automatizáveis TPTP (consulte a seção acima sobre execução de testes do ant.) O exemplo a seguir mostra como utilizar a tarefa tptp:execution para executar vários testes e como utilizar a tarefa tptp:interrogation para interrogar os resultados dessas execuções de teste. Ambas as tarefas ant aceitam vários filesets e/ou filelists de ant, permitindo que você utilize curingas ou especifique diretamente vários arquivos como entradas para as tarefas. Neste exemplo, executamos todos os conjuntos de testes no projeto TPTPJUnitTests e o conjunto de todos os arquivos .execution resultantes é retornado como um filelist na variável ant fornecida (neste caso, "tptp.test.results"). Em seguida, transmitimos esse filelist como entrada para o serviço tptp:interrogation, que interrogará cada um desses arquivos de execução para determinar um veredito geral e designá-lo à variável ant fornecida (neste caso, "tptp.test.verdict").

<project name="Tutorial de Serviços Automatizáveis TPTP"
default="main" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <!-- Definir propriedades comuns para todos o serviços automatizáveis --> <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 propriedades de script local, que variam por instalação --> <property name="project.dir" value="${tptp.test.workspace}\${tptp.test.project}"/>
<target name="main" depends="test-execution, test-results-interrogation"/>
<!-- Executar conjuntos de testes utilizando o nome do resultado padrão --> <target name="test-execution"> <echo message="Executando conjunto de testes..." /> <tptp:execution resultsrefid="tptp.test.results"> <fileset dir="${project.dir}">     <include name="**/*.testsuite"/> </fileset> </tptp:execution> </target>
<!-- Interrogar resultados do conjunto de testes para veredito --> <target name="test-results-interrogation"> <echo message="Interrogando resultados do conjunto de testes..." /> <condition property="tptp.test.success">     <tptp:interrogation verdictproperty="tptp.test.verdict">         <filelist refid="tptp.test.results"/>     </tptp:interrogation> </condition> <echo message="O veredito do resultado do teste geral é: '${tptp.test.verdict}'" /> </target>
</project>

Gerando Relatórios de Teste a partir de Scripts Ant

Assegure-se de que você tenha configurado corretamente o ant para executar serviços automatizáveis TPTP (consulte a seção acima sobre execução de testes do ant.) O exemplo a seguir mostra como utilizar a tarefa tptp:execution para executar vários testes e como utilizar a tarefa tptp:publication para gerar relatórios baseados no BIRT a partir dos resultados dessas execuções de teste. A tarefa de publicação também aceita vários filesets e/ou filelists de ant, permitindo que você utilize curingas ou especifique diretamente vários arquivos como entradas. Neste exemplo, executamos todos os conjuntos de testes no projeto TPTPJUnitTests e o conjunto de todos os arquivos .execution resultantes é retornado como um filelist na variável ant fornecida (neste caso, "tptp.test.results"). Em seguida, transmitimos esse filelist como entrada para o serviço tptp:publication, que gerará um relatório de execução TPTP utilizando o modelo de relatório padrão (TestExecution.rptdesign, localizado no plug-in org.eclipse.tptp.test.report.birt), colocando-o no local especificado (neste caso, c:\temp\report.html.)

<project name="Tutorial de Serviços Automatizáveis TPTP"
default="main" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <!-- Definir propriedades comuns para todos o serviços automatizáveis --> <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 propriedades de script local, que variam por instalação --> <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"/>
<!-- Executar conjuntos de testes utilizando o nome do resultado padrão --> <target name="test-execution"> <echo message="Executando conjunto de testes..." /> <tptp:execution resultsrefid="tptp.test.results"> <fileset dir="${project.dir}">     <include name="**/*.testsuite"/> </fileset> </tptp:execution> </target>
<!-- Publicar relatório de resultados do conjunto de testes -->
<target name="test-results-publication"> <echo message="Publicando o relatório de resultados do conjunto de testes..." /> <tptp:publication report="${report.publication.location}/report.html">     <filelist refid="tptp.test.results"/> </tptp:publication> </target>
</project>

Customizando Relatórios de Teste a partir de Scripts Ant

Você pode customizar o comportamento da tarefa tptp:publication especificando um modelo de relatório BIRT diferente, por exemplo, o TabularReport.rptdesign localizado no diretório de modelos do plugin org.eclipse.tptp.test.report.birt. Você também pode customizar o comportamento utilizando o serviço de publicação publish-testsuites e fornecendo conjuntos de teste como a entrada para o serviço de publicação em vez dos arquivos de resultados da execução do teste. Se você utilizar o serviço de publicação publish-testsuites e transmitir arquivos do conjunto de testes como entrada para o serviço de publicação, também deverá especificar uma data de início e de encerramento para a janela de relatório (que será utilizada para consultar o espaço de trabalho para localizar todos os resultados da execução nessa janela de tempo). O exemplo a seguir mostra como executar um relatório em todos os conjuntos de testes no projeto Test1, selecionando cada resultado da execução nos últimos 60 dias e gerando o relatório utilizando o design de relatório Tabular.

<project name="Tutorial de Serviços Automatizáveis TPTP"
default="main" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <!-- Definir propriedades comuns para todos o serviços automatizáveis --> <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 propriedades de script local, que variam por instalação --> <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"/>
<!-- Executar o relatório --> <target name="main" depends="test-results-publication"/>
<target name="set-date-range">     <!-- Utilizar mecanismos ant tstamp para especificar o intervalo de data desejado -->     <!-- Este exemplo utiliza um intervalo entre hoje e 60 dias anteriores -->     <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>
<!-- Publicar relatório de resultados do conjunto de testes --> <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>

Executando Testes a partir da Linha de Comandos e de Scripts de Shell

Os testes podem ser executados diretamente a partir da linha de comandos e de scripts de shell com as propriedades de teste tomando a forma de argumentos da linha de comandos.  Os adaptadores do cliente de automatização TPTP fornecem um arquivo .bat e um arquivo .cmd para utilização no Windows e um arquivo .sh fornecido para utilização no sistema operacional Linux.  É possível especificar longos conjuntos de argumentos e/ou argumentos repetidos freqüentemente em um arquivo de configuração para minimizar a quantidade de digitação necessária para executar o serviço de execução de teste a partir da linha de comandos.  O adaptador do cliente de automatização shell manifesta-se como um arquivo de texto (para o arquivo ou o script de batch) e um componente Java complementar -- ambos devem existir para executar testes a partir da linha de comandos.  Todos os adaptadores do cliente de automatização TPTP fornecidos podem ser localizados no tptp-automation-client.jar, embora o ant-tptp.jar replique alguns dos códigos de adaptador na forma de um jar ant (isso foi feito para manter o jar da tarefa TPTP nomeado consistentemente com as outras tarefas ant disponíveis).

As propriedades do serviço de execução de teste são configuradas prefixando os nomes das propriedades com um hífen e especificando ainda o diretório home ou raiz do Eclipse.

Executando Testes a partir de Aplicativos e de Plug-ins Java

Os testes podem ser ativados a partir de qualquer aplicativo Java e, realmente, os outros adaptadores de automatização do cliente, como os adaptadores ant e shell, utilizam o adaptador Java internamente para ser fixado ao barramento do serviço.  O único requisito para execução de testes a partir de algum código Java é certificar-se de que o tptp-automation-client.jar seja referido adequadamente (no Eclipse, isso significa ter a biblioteca no caminho de construção do projeto Java) e, naturalmente, todos os requisitos TPTP comuns também se aplicam, como a necessidade de ter o agent controller em execução. 

O adaptador do cliente de automatização Java fornece uma API muito simples para executar testes com todas as propriedades especificáveis contidas em um objeto de propriedades Java padrão.  Segue um exemplo para execução do mesmo teste conforme apresentado no exemplo de script ant anterior.  Observe que o identificador de serviço transmitido para o método de execução é aquele do serviço de execução de teste TPTP (este serviço suporta todos os tipos de teste TPTP base) -- também é possível executar outros serviços automatizáveis, se disponíveis, mas variando o identificador e as propriedades configuradas no código a seguir.

// Criar o adaptador Java associado ao home Eclipse especificado
AutomationClientAdapter automation = new AutomationClientAdapter
  ("d:\\development\\eclipse");

// Criar e configurar um objeto de propriedades
Properties properties = new Properties();
properties.setProperty("workspace", "D:\\development\\workspace");
properties.setProperty("project", "tests");
properties.setProperty("suite", "unit-tests/testA.testsuite");

// Executar o serviço nomeado a seguir utilizando as propriedades configuradas
automation.execute("org.eclipse.hyades.test.tools.core.execute", properties);

Conceitos Relacionados
Visão Geral da Estrutura de Serviços Automatizáveis

Tarefas Relacionadas
Ativando Testes de Scripts e Aplicativos

Referências Relacionadas
Propriedades Suportadas do Serviço de Execução de Teste