TPTP heeft diverse automatiseerbare services, die buiten de context van de Eclipse-workbench kunnen worden aangeroepen. De services zijn er voor het uitvoeren van tests, het onderzoeken van de testresultaten en het publiceren van de testresultaten.
In dit Help-onderwerp kunt u lezen hoe u de ingebouwde automatiseerbare TPTP-services kunt benutten voor het uitvoeren van de volgende taken:
De testuitvoeringsservice is beschikbaar gesteld voor het programmatisch starten, verwerken en genereren van testresultaten. De testuitvoeringsservice benut de bestaande testuitvoeringsfunctionaliteit en maakt de huidige standalone methoden voor testuitvoering overbodig. Door middel van de uitvoeringsservice kunnen tests via Ant-scripts, shell-scripts en willekeurige programma's worden gestart in een Eclipse-instance zonder titel. Er kunnen meerdere tests tegelijk worden uitgevoerd, mits er voldoende geheugen beschikbaar is op de computer. (Voor elke service-uitvoering is een afzonderlijke Eclipse-instance nodig die als host fungeert.) Zelfs als tests op computers op afstand worden uitgevoerd met behulp van de TPTP-functies voor testuitvoering en ingebruikname, fungeert de computer van de servicegebruiker als host voor de Eclipse-instances.
Raadpleeg het naslagmateriaal bij de ondersteunde eigenschappen van de testuitvoeringsservice. De eigenschappen zijn ook geschikt voor clientautomatiseringadapters. Voor Ant-scripts is een aantal eenvoudige Ant-taken beschikbaar voor het instellen van service-eigenschappen en het uitvoeren van de service. Als u met shell-scripts werkt, kunnen de eigenschappen volgens de syntaxisvoorschriften worden opgegeven op de opdrachtregel. (Typ bijvoorbeeld een streepje voor de eigenschap, gevolgd door een spatie en vervolgens een waarde.) Als u met Java-programma's werkt, wordt naar de JAR-bestanden van de automatiseringsclient verwezen voor het instellen van eigenschappen en het besturen van de service-uitvoering. Sommige clientadapters kunnen aanvullende opties verstrekken, die vanwege een bepaalde clientomgeving nodig kunnen zijn of als extra functionaliteit worden aangeboden.
De TPTP-componenten voor automatiseerbare services zijn in de plugin org.eclipse.hyades.execution ingepakt en worden aangeduid door drie JAR-bestanden, enige code in het bestand plugin.xml en enkele vermeldingen in het bestand MANIFEST.MF.
tptp-automation-client.jar
: Voor het tot stand brengen van de clientzijde van de servicebus, het starten van Eclipse indien dat nodig is en het uitvoeren van services zonder titel, wordt naar dit JAR-bestand verwezen wanneer tests met de opdrachtregel, via shell-scripts of via willekeurige Java-code worden uitgevoerd. tptp-automation-server.jar
: DE TPTP-automatiseringsserver, die wordt geladen zodra services worden opgevraagd en door het framework wordt uitgevoerd, implementeert het kernextensiepunt van Eclipse voor toepassingen. Dit dient voor het regelen en opsporen van services. ant-tptp.jar
: Dit JAR-bestand is qua inhoud gelijk aan het bestand tptp-automation-client.jar maar heeft een andere naam om consistent te zijn met andere taakbibliotheken van Ant. Zorg ervoor dat Ant correct is geļnstalleerd wanneer tests buiten een actieve Eclipse-instance zullen worden uitgevoerd. Voor de juiste instelling kunt u de documentatie van Ant raadplegen. Naast de standaard Ant-installatie moet u ook het bestand ant-tptp.jar kopiėren naar de bibliotheekmap van Ant, samen met de andere taken. Als u een test in Eclipse wilt uitvoeren, is Ant al geļnstalleerd. Zorg er wel voor dat u ant-tptp.jar opneemt op het tabblad voor aanvullende taken van de Ant-startconfiguratie of in de sectie 'Globale vermeldingen' van het Ant-klassenpad. Hieronder vindt u een voorbeeld van een Ant-script, "test.xml", waarmee de test testA kan worden uitgevoerd vanuit de map unit-tests van het testproject. Het testproject bevindt zich in het werkgebied "d:\ontwikkeling\werkgebied" en de Eclipse-hostinstance is "d:\ontwikkeling\eclipse". Raadpleeg de naslaglijst van ondersteunde eigenschappen voor andere mogelijke eigenschappencombinaties.
In het onderstaande voorbeeld wordt de TPTP-testtaak gebruikt, maar het is ook mogelijk een test uit te voeren met de TPTP-automatiseringstaak. De algemenere automatiseringstaak is een Ant-taak waarmee willekeurige automatiseerbare TPTP-services kunnen worden uitgevoerd, dit in tegenstelling tot de specifiekere TPTP-testtaak. De testtaak is een kent typbeveiliging en is speciaal ontworpen voor het starten van de testuitvoeringsservice. Het pakket org.eclipse.hyades.automation.test in de bronmap src-automation-client van de plugin org.eclipse.hyades.execution bevat meer voorbeelden van Ant-scripts.
<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> Dit Ant-script test de clientadapters van de Ant-taak voor TPTP-automatisering en kan bovendien worden gebruikt om de onderliggende uitvoering van automatiseerbare services te testen via de TPTP-automatiseringsserver. </description> <!-- TPTP-testsuites uitvoeren --> <target name="test" description="Voert TPTP-testsuites uit met standaard TPTP Ant-taken."> <!-- Een TPTP-testsuite uitvoeren met de testtaak en het werkgebied opgeven --> <tptp:test workspace="D:\ontwikkeling\werkgebied" project="tests" suite="unit-tests/testA.testsuite" synchronicity="synchronous"/> </target> </project>
Zorg ervoor dat Ant juist is ingesteld voor het uitvoeren van automatiseerbare TPTP-services.
(Zie de sectie hierboven voor het uitvoeren van tests met Ant.)
In het onderstaande voorbeeld ziet u hoe u de taak tptp:execution kunt gebruiken voor het uitvoeren van meerdere
tests en hoe u de taak tptp:interrogation kunt gebruiken voor het onderzoeken van de resultaten die de uitvoeringen
van de tests opleveren.
In beide Ant-taken kunnen de elementen filesets
en/of filelists
meerdere keren
worden gebruikt, waardoor u rechtstreeks jokertekens kunt gebruiken of rechtstreeks meerdere bestanden
als invoer voor de taken kunt opgeven. In dit voorbeeld worden alle testsuites uit het project TPTPJUnitTests
uitgevoerd en wordt de reeks EXECUTION-bestanden geretourneerd als filelist
in
de opgegeven Ant-variabele (hier "tptp.test.results"). Vervolgens wordt het element filelist
als invoer aan de service tptp:interrogation doorgegeven, zodat alle uitvoeringsbestanden worden onderzocht
om een algeheel oordeel te vellen. Dit oordeel wordt daarna aan de opgegeven Ant-variabele
(hier "tptp.test.verdict") toegewezen.
<project name="Zelfstudieprogramma van automatiseerbare TPTP-services"
default="main" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <!-- Algemene eigenschappen voor alle automatiseerbare services definiėren --> <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" />
<!-- Lokale eigenschappen voor het script definiėren, afhankelijk van de installatie --> <property name="project.dir" value="${tptp.test.workspace}\${tptp.test.project}"/>
<target name="main" depends="test-execution, test-results-interrogation"/>
<!-- Testsuites uitvoeren met standaardnaam voor resultaten --> <target name="test-execution"> <echo message="De testsuite wordt uitgevoerd..." /> <tptp:execution resultsrefid="tptp.test.results"> <fileset dir="${project.dir}"> <include name="**/*.testsuite"/> </fileset> </tptp:execution> </target>
<!-- Resultaten van testsuite onderzoeken en oordeel vellen --> <target name="test-results-interrogation"> <echo message="De resultaten van de testsuite worden onderzocht..." /> <condition property="tptp.test.success"> <tptp:interrogation verdictproperty="tptp.test.verdict"> <filelist refid="tptp.test.results"/> </tptp:interrogation> </condition> <echo message="Algeheel oordeel van testresultaten: '${tptp.test.verdict}'" /> </target>
</project>
Zorg ervoor dat Ant juist is ingesteld voor het uitvoeren van automatiseerbare TPTP-services. (Zie de sectie hierboven voor het uitvoeren van tests met Ant.) In het onderstaande voorbeeld ziet u hoe u de taak tptp:execution kunt gebruiken voor het uitvoeren van meerdere tests en hoe u de taak tptp:publication kunt gebruiken voor het genereren van op BIRT gebaseerde rapporten aan de hand van de resultaten die de uitvoeringen van de tests opleveren. In de publicatietaak kunnen de elementen filesets
en/of filelists
meerdere
keren worden gebruikt, waardoor u rechtstreeks jokertekens kunt gebruiken of rechtstreeks
meerdere bestanden als invoer kunt opgeven. In dit voorbeeld worden alle testsuites uit het project TPTPJUnitTests uitgevoerd en wordt de reeks EXECUTION-bestanden geretourneerd als filelist
in de opgegeven Ant-variabele (hier "tptp.test.results"). Vervolgens
wordt het element filelist
als invoer aan de service tptp:publication
service doorgegeven, zodat er een TPTP-uitvoeringsrapport kan worden gegenereerd op basis
van de standaardrapportsjabloon (TestExecution.rptdesign in de plugin
org.eclipse.tptp.test.report.birt). Het rapport wordt in de opgegeven locatie geplaatst (hier c:\temp\report.html).
<project name="Zelfstudieprogramma van automatiseerbare TPTP-services"
default="main" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <!-- Algemene eigenschappen voor alle automatiseerbare services definiėren --> <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" />
<!-- Lokale eigenschappen voor het script definiėren, afhankelijk van de installatie --> <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"/>
<!-- Testsuites uitvoeren met standaardnaam voor resultaten --> <target name="test-execution"> <echo message="De testsuite wordt uitgevoerd..." /> <tptp:execution resultsrefid="tptp.test.results"> <fileset dir="${project.dir}"> <include name="**/*.testsuite"/> </fileset> </tptp:execution> </target>
<!-- Rapport met resultaten van testsuite publiceren -->
<target name="test-results-publication"> <echo message="Het rapport met testsuiteresultaten wordt gepubliceerd..." /> <tptp:publication report="${report.publication.location}/report.html"> <filelist refid="tptp.test.results"/> </tptp:publication> </target>
</project>
U kunt het gedrag van de taak tptp:publication aanpassen door een andere BIRT-rapportsjabloon op te geven, zoals TabularReport.rptdesign in de map templates van de plugin org.eclipse.tptp.test.report.birt. Ook kunt u het gedrag aanpassen door de publicatieservice publish-testsuites te gebruiken en testsuites in plaats van resultaatbestanden van testuitvoeringen als invoer aan de publicatieservice door te geven. Als u de publicatieservice publish-testsuites publication gebruikt en testsuitebestanden als invoer aan de service doorgeeft, moet u ook een begin- en een einddatum opgeven voor het rapportvenster (voor het opvragen van alle uitvoeringsresultaten in de workbench die binnen de tijdsperiode vallen). In het onderstaande voorbeeld ziet u hoe u een rapport kunt uitvoeren voor alle testsuites in het project Test1, waarbij u alle uitvoeringsresultaten van de afgelopen 60 dagen opneemt en het rapport genereert met een tabellarisch rapportontwerp.
<project name="Zelfstudieprogramma van automatiseerbare TPTP-services"
default="main" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <!-- Algemene eigenschappen voor alle automatiseerbare services definiėren --> <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" />
<!-- Lokale eigenschappen voor het script definiėren, afhankelijk van de installatie --> <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"/>
<!-- Rapport uitvoeren --> <target name="main" depends="test-results-publication"/>
<target name="set-date-range"> <!-- Standaardmechanismen van Ant voor tijdaanduiding gebruiken om het gewenste datumbereik in te stellen --> <!-- Het bereik in dit voorbeeld ligt tussen vandaag en 60 dagen geleden --> <tstamp> <format property="startDateTime" pattern="dd-MM-yyyy hh:mm" offset="-60" unit="day"/> </tstamp> <tstamp> <format property="endDateTime" pattern="dd-MM-yyyy hh:mm"/> </tstamp> </target>
<!-- Rapport met resultaten van testsuite publiceren --> <target name="test-results-publication" depends="set-date-range"> <echo message="Het rapport met testsuiteresultaten wordt gepubliceerd..." /> <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>
Tests kunnen rechtstreeks worden uitgevoerd met de opdrachtregel en shell-scripts. De testeigenschappen moeten daarbij als opdrachtregelargumenten worden opgegeven. De TPTP-automatiseringsclientadapters bieden een BAT- en een CMD-bestand voor Windows en een SH-bestand voor het besturingssysteem Linux. U kunt lange reeksen argumenten en/of vaak gebruikte argumenten in een configuratiebestand zetten, zodat het uitvoeren van de testuitvoeringsservice vanaf de opdrachtregel minder typwerk vereist. De shell-automatiseringsclientadapter is een tekstbestand (voor het batchbestand of het script) met een aanvullende Java-component. Voor het uitvoeren van tests met de opdrachtregel hebt u zowel het tekstbestand als de component nodig. Alle verstrekte automatiseringsclientadapters van TPTP vindt u in het bestand tptp-automation-client.jar. Het bestand ant-tptp.jar bevat echter een gedeeltelijke kopie van de adaptercode (om de naam van het JAR-taakbestand consistent te houden met andere Ant-taken).
De eigenschappen van de testuitvoeringsservice kunnen worden ingesteld door een streepje vóór de namen van de eigenschappen te plaatsen. Denk eraan dat u ook de installatiemap van Eclipse opgeeft.
Tests kunnen vanuit elke Java-toepassing worden gestart. De Java-adapter wordt zelfs intern door de andere clientautomatiseringsadapter (zoals de Ant- en shelladapters) gebruikt om de servicebus aan te koppelen. Als u tests vanuit Java-code wilt uitvoeren, moet u er alleen voor zorgen dat de verwijzing naar het bestand tptp-automation-client.jar juist is. (In Eclipse moet de bibliotheek daarvoor in het buildpad van het Java-project zijn opgenomen.) Natuurlijk zijn ook alle andere vereisten van TPTP van toepassing. Zo moet onder meer de agentcontroller actief zijn.
De Java-automatiseringsclientadapter biedt eenvoudige API voor het uitvoeren van tests, waarbij alle eigenschappen in één standaard Java-eigenschappenobject zijn opgenomen. Hieronder ziet u een voorbeeld, waarbij de test uit het hierboven gedemonstreerde Ant-script wordt uitgevoerd. De service-identificatie die aan de uitvoerende methode wordt doorgegeven, behoort bij de TPTP-testuitvoeringsservice. (Deze service ondersteunt alle basistesttypen van TPTP.) U kunt ook eventuele andere automatiseerbare services uitvoeren, maar u moet dan wel een andere identificatie en andere eigenschappen opgeven.
// De Java-adapter maken die aan de opgegeven Eclipse-installatiedirectory is gekoppeld AutomationClientAdapter automation = new AutomationClientAdapter ("d:\\development\\eclipse"); // Een eigenschappenobject maken en configureren Properties properties = new Properties(); properties.setProperty("workspace", "D:\\development\\workspace"); properties.setProperty("project", "tests"); properties.setProperty("suite", "unit-tests/testA.testsuite"); // De onderstaande service uitvoeren met de geconfigureerde eigenschappen automation.execute("org.eclipse.hyades.test.tools.core.execute", properties);
Verwante concepten
Overzicht van het framework voor automatiseerbare services
Verwante taken
Tests uitvoeren met scripts en toepassingen
Verwante onderwerpen
Ondersteunde eigenschappen van
de testuitvoeringsservice
(C) Copyright IBM Corporation 2005,2006. Alle rechten voorbehouden.