O TPTP fornece vários serviços automatizáveis que podem ser invocados a partir de contexto externo à área de trabalho do eclipse. Os serviços incluem execução de testes, interrogação dos resultados dos testes e publicação dos resultados dos testes.
Este tópico de ajuda explica como utilizar os serviços automatizáveis de TPTP incorporados para executar os seguintes procedimentos:
O serviço de execução de testes é fornecido para o lançamento programático, execução e geração de resultados de testes. O serviço de execução de testes reinicia ciclicamente a funcionalidade do utilitário de execução de testes existente e desactualiza os métodos de instalação da execução de testes autónoma actual. Ao utilizar o serviço de execução de testes, os testes podem ser iniciados através da utilização de um Eclipse sem cabeçalho de scripts ant, de procedimentos base e de programas arbitrários. Podem ser executados vários testes ao mesmo tempo, desde que haja memória suficiente na máquina que os está a executar (cada serviço de execução requer actualmente uma instância de sistema central do Eclipse separada). Mesmo que os testes estejam a ser executados em máquinas remotas que utilizem as funções e a implementação de execução remota de testes TPTP, a máquina do consumidor é a máquina que executa as instâncias do sistema central do Eclipse.
Consulte o material de referência nas propriedades de serviço da execução de testes suportada -- as mesmas propriedades são válidas para os adaptadores de automatização do cliente. Para os scripts ant, é facultado um conjunto de tarefas ANT simples para configurar as propriedades do serviço e para o executar. Para os procedimentos base, as propriedades são especificadas no paradigma da linha de comandos esperada (através da utilização de traços para as propriedades seguidos de espaço e de um valor por instância). Para programas Java, os jars de automatização do cliente será referenciado e utilizado para definir propriedades e controlar a execução do serviço. Alguns adaptadores de clientes poderão ter opções adicionais que são requeridas por um determinado ambiente do cliente (ou oferecidas como funções extra de um adaptador).
Os componentes automatizáveis do serviço TPTP são empacotadas dentro do plug-in org.eclipse.hyades.execution representado com três ficheiros jar, alguns XML no plugin.xml e algumas entradas no ficheiro MANIFEST.MF.
tptp-automation-client.jar
(a parte leve de um código necessária
para estabelecer o lado do cliente do bus de serviço, para lançar o Eclipse se
for necessário e para executar serviços sem cabeçalho, este jar será
referenciado quando estiverem a ser executados testes a partir da linha de
comandos e procedimentos base, assim como quando estiverem a ser executados
testes de código Java arbitrários).
tptp-automation-server.jar
(o servidor de automatização
TPTP, carrega a pedido à medida que os serviços são interrogados e executados,
através da utilização da estrutura, implementa o ponto de extensão das aplicações do núcleo
do Eclipse, é utilizado como corretor e localizador de serviço)
ant-tptp.jar
(este jar tem os mesmos conteúdos do
tptp-automation-client.jar, mas muda de nome de modo a ser
consistente com outras bibliotecas de tarefa ANT)Certifique-se que o ant está instalado correctamente se pretender executar testes fora de uma instância do Eclipse em execução -- refira a documentação do ant para configurar isto correctamente. Para além da instalação padrão do ant, copie também o ant-tptp.jar para o directório ant lib juntamente com as outras tarefas. Se estiver a executar dentro do Eclipse, a função ant já se encontra instalada embora deva ser incluído o ant-tptp.jar no separador de tarefas adicionais da configuração inicial ant ou na secção Entradas globais da página de preferências Classpath Ant. O script ant da amostra incorporada que se segue é um exemplo de um script ant denominado "test.xml" que exclui um teste denominado testA dentro da pasta unit-tests do projecto de teste. O projecto de teste está localizado na área de trabalho específica de "d:\development\workspace" e a instância do sistema central do Eclipse está especificada para ser "d:\development\eclipse". Consulte a lista de referência das propriedades suportadas para ver outras combinações válidas de propriedades.
O exemplo abaixo utiliza a tarefa de teste TPTP, apesar de também ser possível executar um teste através da utilização da tarefa de automatização TPTP. A tarefa de automatização mais geral é uma tarefa ant para executar arbitrariamente serviços de automatização o que contrasta com tarefas de teste TPTP mais específicas. A tarefa de teste é uma tarefa de segurança do tipo especificamente criada para lançar o serviço de execução de testes. Estão incluídos mais exemplos de scripts ant no pacote org.eclipse.hyades.automation.test da pasta de origem org.eclipse.hyades.execution plug-in's src-automation-client.
<nome do projecto="Script de Teste de Tarefas Ant do TPTP" default="test" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <nome da propriedade="eclipse.home" valor="D:\development\eclipse"/> <decrição> Este script ant testa os adaptadores de tarefas ant de automatização de clientes de TPTP e também pode ser utilizado para testar a execução subjacente de serviços automatizáveis TPTP através do servidor de automatização TPTP </description> <!-- Executar séries de testes TPTP --> <detino nome="test" descrição="Executa séries de testes TPTP através da utilização de Tarefas Ant da TPTP predefinidas"> <!-- Executar uma série de teste TPTP através da utilização da tarefa de teste e facultando o espaço de trabalho --> <tptp:test espaço de trabalho="D:\development\workspace" projecto="tests" série="unit-tests/testA.testsuite" sincronicidade="synchronous"/> </target> </project>
Certifique-se de que a função ant foi correctamente configurada para executar
serviços automatizáveis de TPTP (consulte o tópico
secção anterior em testes
executados a partir de ant.) O exemplo seguinte indica como utilizar a tarefa
de execução tptp para executar vários testes e como utilizar a tarefa de
interrogação tptp para interrogar os resultados das execuções de teste.
Ambas as tarefas ant permitem váriosfilesets
e/ou
filelists
, permitindo a utilização de caracteres globais ou a especificação
directa de vários ficheiros como entradas nas tarefas. Neste exemplo, é executado todo
o conjunto de testes no projecto TPTPJUnitTests e o conjunto de todos os
ficheiros .execution resultantes é devolvido como filelist
na
variável ant fornecida (neste caso "tptp.test.results".) A
filelist
é transferida como entrada para o serviço de interrogação
tptp que irá interrogar cada um dos ficheiros de execução para determinar um
veredicto total e irá atribuí-lo à variável ant fornecida (neste caso
"tptp.test.verdict".)
<project name="TPTP Automatable Services Tutorial"
default="main" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <!-- Define common properties for all automatable services --> <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" />
<!-- Define script-local properties, that vary by installation --> <property name="project.dir" value="${tptp.test.workspace}\${tptp.test.project}"/>
<target name="main" depends="test-execution, test-results-interrogation"/>
<!-- Execute test suites using default results name --> <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>
<!-- Interrogate test suite results for verdict --> <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="The overall test result verdict is: '${tptp.test.verdict}'" /> </target>
</project>
Certifique-se de que a função ant foi correctamente configurada para executar
serviços automatizáveis de TPTP (consulte o tópico
secção anterior em testes
executados a partir de ant.) O exemplo seguinte indica como utilizar a tarefa
de execução tptp para executar vários testes e como utilizar a tarefa de
publicação tptp para gerar relatórios de base BIRT a partir dos resultados das
execuções de teste.
A tarefa de publicação também aceita vários filesets
e/ou
filelists
ant, permitindo a utilização de caracteres globais ou a
especificação de vários ficheiros como entradas. Neste
exemplo, é executado todo o conjunto de testes no projecto TPTPJUnitTests e o
conjunto de todos os ficheiros .execution resultantes é devolvido como
filelist
na variável ant fornecida (neste caso
"tptp.test.results".) A filelist
é transferida como entrada para
o serviço de publicação tptp, que irá gerar um relatório de execução TPTP
utilizando o modelo de relatório predefinido (TestExecution.rptdesign,
localizado no plugin org.eclipse.tptp.test.report.birt), colocando-o no local
especificado (neste caso, c:\temp\report.html.)
<project name="TPTP Automatable Services Tutorial"
default="main" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <!-- Define common properties for all automatable services --> <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" />
<!-- Define script-local properties, that vary by installation --> <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"/>
<!-- Execute test suites using default results name --> <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>
<!-- Publish test suite results report -->
<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>
É possível personalizar o comportamento da tarefa de publicação tptp, se especificar um modelo de relatório BIRT diferente, por exemplo TabularReport.rptdesign, localizado no directório modelos de plugin org.eclipse.tptp.test.report.birt. Também é possível personalizar o comportamento utilizando o serviço de publicação publish-testsuites e fornecer conjuntos de testes como entrada para o serviço de publicação em vez de ficheiros de resultados de execução. Se utilizar o serviço de publicação publish-testsuites e transferir ficheiros de conjunto de testes como entrada para o serviço de publicação, deve também especificar uma data de início e de fim na janela de relatório (que será utilizada para proceder à consulta do espaço de trabalho para localizar todos os resultados de execução dentro dessa janela de tempo.) O exemplo seguinte indica o procedimento para executar um relatório em todos os conjuntos de testes no projecto Test1, seleccionando cada resultado de execução dos últimos 60 dias e gerando o relatório através da concepção de relatório de tabela.
<project name="TPTP Automatable Services Tutorial"
default="main" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <!-- Define common properties for all automatable services --> <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" />
<!-- Define script-local properties, that vary by installation --> <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"/>
<!-- Run the report --> <target name="main" depends="test-results-publication"/>
<target name="set-date-range"> <!-- Use standard ant tstamp mechanisms to specify the desired date range --> <!-- This example uses a range between today and 60 days days prior --> <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>
<!-- Publish test suite results report --> <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>
Podem ser executados testes directamente a partir de linhas de comando e de procedimentos base se as propriedades de teste tomarem a forma de argumentos de comandos de linha. Os adaptadores TPTP de automatização do cliente facultam um ficheiro .bat e .cmd para ser utilizado no Windows e um ficheiro .sh facultado para ser utilizado no sistema operativo do Linux. Pode especificar conjuntos grandes de argumentos e/ou argumentos repetidos com frequência num ficheiro config de modo a minimizar a quantidade de escrita necessária para executar um serviço de execução de teste a partir de uma linha de comandos. O adaptador de interface de automatização do cliente manifesta-se como um ficheiro de texto (para o ficheiro de comandos ou para o script) e como um componente complementar Java -- ambos devem existir para que seja possível executar testes a partir da linha de comandos. Todos os adaptadores automatizados do cliente facultados pelo TPTP podem ser encontrados em tptp-automation-client.jar, apesar de o ant-tptp.jar replicar alguns dos códigos do adaptador na forma de um ant jar (isto foi feito para que o jar da tarefa TPTP denominado seja consistente com as outras tarefas ant disponíveis).
As propriedades do serviço de execução de testes são configuradas ao atribuir um hífen como prefixo aos nomes das propriedades, assegurando-se que especifica o início do Eclipse ou o directório raiz.
Os testes podem ser iniciados a partir de qualquer aplicação Java e, na verdade, os outros adaptadores de automatização de clientes, tais como os adaptadores ant e de interface, utilizam o adaptador Java internamente para se introduzirem no bus de serviço. O único requisito para executar testes a partir de um código Java é certificar-se que o tptp-automation-client.jar está correctamente referenciado (no Eclipse isto traduz-se por ter a biblioteca no caminho de construção do projecto Java) e que todos os requerimentos típicos da TPTP também se aplicam, como por exemplo, o Controlador de Agentes tem de estar a ser executado.
O adaptador Java de automatização do cliente faculta um API muito simples para a execução de testes com todas as propriedades especificáveis contidas num objecto padrão de propriedades Java. Segue-se um exemplo de uma execução do mesmo teste como foi introduzido no exemplo anterior de script ant. Repare que o cartão de identificação de serviço que passou para o método de execução é o identificador de serviço para o serviço de execução de testes TPTP (este serviço suporta todos os tipos de teste TPTP base) -- é também possível executar outros serviços automatizáveis, se estiverem disponíveis, ao variar o cartão de identificação e as propriedades configuradas no código que se encontra abaixo.
// 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);
Conceitos relacionados
Descrição geral da estrutura automatizável de serviços
Tarefas relacionadas
Lançar
testes a partir de scripts e de aplicações
Referências relacionadas
Propriedades
do serviço de execução de testes suportado
(C) Copyright IBM Corporation 2005,2006. Todos os direitos reservados.