TPTP fournit plusieurs services automatisables que vous pouvez appeler hors d'un contexte de plan de travail Eclipse. Ces services comprennent l'exécution de test, l'interrogation et la publication des résultats de test.
La présente rubrique d'aide décrit le mode d'emploi des services automatisables TPTP intégrés pour effectuer les opérations suivantes :
Le service d'exécution de test est fourni pour programmer le lancement, l'exécution et la génération des résultats de test. Ce service encapsule la fonctionnalité Test Execution Harness existante et rend obsolète les méthodes Test Execution Harness autonomes en cours. A l'aide du service d'exécution de test, les tests peuvent être lancés à l'aide d'un programme Eclipse sans interface utilisateur (headless) à partir de scripts ant, de scripts shell et de programmes arbitraires. Plusieurs tests peuvent être exécutés en même temps à condition qu'il y ait suffisamment de mémoire sur la machine (chaque exécution du service nécessite actuellement une instance hôte Eclipse distincte). Même si les tests s'effectuent sur des machines distantes via le déploiement et les fonctions d'exécution de test à distance TPTP, la machine du client du service est celle qui exécute les instances hôte Eclipse.
Consultez les éléments de référence des propriétés du service d'exécution de test prises en charge -- ces mêmes propriétés sont valides sur les mécanismes d'automatisation du client. Pour les scripts ant, il s'agit d'un ensemble de tâches Ant simples, fourni pour définir les propriétés du service et exécuter le service. Pour les scripts de shell, les propriétés sont indiquées dans le paradigme de ligne de commande attendu (utilisant des tirets pour les propriétés suivies d'un espace et d'une valeur pour l'instance). Pour les programmes Java, les fichiers JAR du client d'automatisation sont référencés et utilisés pour définir les propriétés et contrôler l'exécution du service. Certains adaptateurs du client peuvent comporter d'autres options requises pour l'environnement particulier de ce client (ou proposées comme fonctions supplémentaires de cet adaptateur).
Les composants du service automatisable TPTP sont regroupés dans le plug-in org.eclipse.hyades.execution et représentés par trois fichiers jar, du code XML dans le fichier plugin.xml et quelques entrées dans le fichier MANIFEST.MF.
tptp-automation-client.jar
(bit de poids léger
du code, nécessaire pour établir le côté client du bus de service,
lancer Eclipse (le cas échéant), et exécuter les services en mode "headless". Ce fichier jar
sera référencé lors de l'exécution des tests à partir de la ligne de commande et des
scripts de shell, ainsi que lors de l'exécution des tests à partir de code Java arbitraire).tptp-automation-server.jar
(le serveur d'automatisation TPTP,
chargé à la demande lors de l'interrogation et de l'exécution des services
à l'aide de la structure, implémente le point d'extension des applications Eclipse
(core), et sert de courtier et de localisateur de service.)ant-tptp.jar
(ce fichier jar a le même contenu
que le fichier tptp-automation-client.jar mais il est renommé par
souci de cohérence avec d'autres bibliothèques de tâches ant.)Vérifiez que Ant est correctement installé si les tests doivent s'exécuter hors d'une instance Eclipse en cours d'exécution -- consultez la documentation Ant pour vous en assurer. Parallèlement à l'installation Ant standard, copiez le fichier ant-tptp.jar dans le répertoire ant lib avec les autres tâches. Si vous exécutez les tests dans Eclipse, Ant est déjà installé mais vous devez inclure le fichier ant-tptp.jar dans l'onglet des tâches supplémentaires de la configuration de lancement Ant ou dans la section Entrées globales de la page des préférences du chemin d'accès aux classes Ant. L'exemple imbriqué ci-après est un exemple de script Ant nommé "test.xml" qui exécute le test appelé testA dans le dossier unit-tests du projet de test. Le projet de test se trouve dans l'espace de travail spécifié : "d:\development\workspace" et l'instance hôte Eclipse est indiquée par "d:\development\eclipse". Consultez la liste de référence des propriétés prises en charge pour d'autres combinaisons de propriétés admises.
L'exemple ci-après utilise la tâche de test TPTP bien qu'il soit également possible d'exécuter un test à l'aide de la tâche d'automatisation TPTP. La tâche d'automatisation la plus courante est une tâche Ant conçue pour l'exécution de services automatisables TPTP arbitraires très différente de la tâche de test TPTP plus spécifique. La tâche de test est une tâche sans type créée spécifiquement pour lancer le service d'exécution de test. D'autres exemples de script Ant sont inclus dans le package org.eclipse.hyades.automation.test du dossier source src-automation-client du plug-in org.eclipse.hyades.execution.
<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>
Vérifiez que vous avez correctement configuré Ant pour l'exécution des services automatisables TPTP
(voir section ci-dessus sur l'exécution de tests à partir de scripts Ant.) L'exemple ci-dessous indique
comment utiliser la tâche tptp:execution pour exécuter plusieurs tests et la tâche
tptp:interrogation pour en interroger les résultats.
Ces deux tâches Ant acceptent plusieurs jeux de fichiers (filesets
) et/ou
listes de fichiers (filelists
) Ant, permettant d'utiliser des caractères génériques ou
d'indiquer plusieurs fichiers comme entrées de ces tâches. Dans cet exemple, il s'agit de
l'exécution de toutes les suites de tests dans le projet TPTPJUnitTests, et de l'obtention de l'ensemble des fichiers
.execution en résultant sous la forme d'une liste de fichiers (filelist
)
dans la variable Ant fournie (dans ce cas "tptp.test.results".) Cette liste
est ensuite transférée comme entrée dans le service tptp:interrogation,
qui interroge alors chacun de ces fichiers d'exécution pour déterminer un verdict
d'ensemble qui sera affecté à la variable Ant fournie (dans ce cas
"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>
Vérifiez que vous avez correctement configuré Ant pour l'exécution des services automatisables TPTP
(voir section ci-dessus sur l'exécution de tests à partir de scripts Ant.) L'exemple ci-dessous indique
comment utiliser la tâche tptp:execution pour exécuter plusieurs tests et la tâche
tptp:publication pour générer des rapports de test BIRT à partir des résultats d'exécution de ces tests. La tâche de publication accepte également plusieurs jeux de fichiers
(filesets
) et/ou listes de fichiers (filelists
) Ant, permettant
d'utiliser des caractères génériques ou d'indiquer directement plusieurs fichiers en entrée. Dans cet exemple, il s'agit de
l'exécution de toutes les suites de tests dans le projet TPTPJUnitTests, et de l'obtention de l'ensemble des fichiers
.execution en résultant sous la forme d'une liste de fichiers (filelist
)
dans la variable Ant fournie (dans ce cas "tptp.test.results".) Cette liste
est ensuite transférée comme entrée dans le service tptp:publication,
qui génère un rapport d'exécution TPTP à l'aide du modèle de rapport par défaut
(TestExecution.rptdesign, figurant dans le plug-in org.eclipse.tptp.test.report.birt),
et l'insère à l'emplacement indiqué (dans ce cas 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>
Vous pouvez personnaliser le comportement de la tâche tptp:publication en indiquant un autre modèle de rapport BIRT, par exemple TabularReport.rptdesign figurant dans le répertoire de modèles du plug-in org.eclipse.tptp.test.report.birt. Vous pouvez également personnaliser le comportement en utilisant le service de publication 'publish-testsuites' et en fournissant des suites de tests comme entrées dans le service de publication à la place des fichiers de résultats d'exécution de test. Si vous utilisez ce service et transférez les fichiers de suite de tests comme entrées dans le service de publication, vous devez également spécifier une date de début et de fin dans la fenêtre du rapport (ces informations seront utilisées pour interroger l'espace de travail et rechercher tous les résultats d'exécution dans cet intervalle de temps.) L'exemple ci-dessous indique comment exécuter un rapport sur toutes les suites de tests dans le projet Test1, en sélectionnant tous les résultats d'exécution depuis les 60 derniers jours et en générant le rapport à l'aide de du modèle de rapport tabulaire (Tabular Report Design).
<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>
Les tests peuvent être exécutés directement à partir de la ligne de commande et des scripts de shell, les propriétés du test prenant la forme d'arguments de ligne de commande. Les adaptateurs de client d'automatisation TPTP fournissent les fichiers .bat et .cmd à utiliser sous Windows et un fichier .sh destiné au système d'exploitation Linux. Il est possible d'indiquer de longs ensembles d'arguments et/ou des arguments répétés à plusieurs reprises dans un fichier config pour minimiser la saisie nécessaire au lancement de l'exécution du service de test via la ligne de commande. L'adaptateur du client d'automatisation du shell se présente sous la forme d'un fichier texte (pour le fichier de commandes ou le script) et d'un composant Java supplémentaire -- ces deux éléments doivent exister pour exécuter les tests via la ligne de commande. Tous les adaptateurs de client d'automatisation TPTP figurent dans le fichier tptp-automation-client.jar bien que le fichier ant-tptp.jar réplique une partie du code des adaptateurs sous la forme d'un fichier ant jar (et ce, pour maintenir une certaine cohérence entre le nom du fichier jar de la tâche TPTP et les autres tâches Ant disponibles).
Les propriétés du service d'exécution de test sont définies en ajoutant un trait d'union comme préfixe dans les noms de propriétés et en s'assurant que le répertoire home ou racine d'Eclipse est bien spécifié.
Les tests peuvent être lancés à partir d'une application Java et en fait, les autres adaptateurs d'automatisation du client tels que les adaptateurs Ant et shell utilisent l'adaptateur Java en interne pour se connecter au bus du service. La seule condition requise pour l'exécution des tests à partir de code Java est de s'assurer que le fichier tptp-automation-client.jar est correctement référencé (dans Eclipse, il s'agit de vérifier que la bibliothèque se trouve dans le chemin de génération du projet Java). Bien entendu, toutes les conditions requises TPTP habituelles sont également applicables, par exemple la nécessité pour le contrôleur d'agent d'être en cours d'exécution.
L'adaptateur du client d'automatisation Java fournit une interface de programmation simple pour l'exécution des tests, incluant toutes les propriétés à indiquer dans un objet de propriétés Java standard. L'exemple suivant reprend l'exécution du test présentée dans l'exemple précédent avec le script ant. Notez que l'identificateur du service utilisé dans la méthode d'exécution (execute) est l'identificateur du service d'exécution de test TPTP (ce service prend en charge tous les types de test TPTP de base) -- il est également possible d'exécuter d'autres services automatisables disponibles mais en changeant l'identificateur et les propriétés configurées dans le code ci-dessous.
// Créer l'adaptateur Java associé au répertoire principal d'Eclipse AutomationClientAdapter automation = new AutomationClientAdapter ("d:\\development\\eclipse"); // Créer et configurer un objet de propriétés Properties properties = new Properties(); properties.setProperty("workspace", "D:\\development\\workspace"); properties.setProperty("project", "tests"); properties.setProperty("suite", "unit-tests/testA.testsuite"); // Exécuter le service nommé ci-dessous à l'aide des propriétés configurées automation.execute("org.eclipse.hyades.test.tools.core.execute", properties);
Concepts connexes
Présentation de l'infrastructure des services automatisables
Tâches connexes
Lancement des tests à partir de scripts et d'applications
Références connexes
Propriétés prises en charge par le service d'exécution de test
(C) Copyright IBM Corporation 2005,2006. All Rights Reserved. (C) Copyright IBM France 2005,2006. Tous droits réservés.