Automatisierbare TPTP-Services verwenden

TPTP bietet verschiedene automatisierbare Services, die außerhalb des Kontextes der Eclipse-Workbench aufgerufen werden können. Die Services schließen die Testausführung, die Abfrage von Testergebnissen und die Publizierung von Testergebnissen mit ein.

In diesem Hilfethema wird erläutert, wie die integrierten, automatisierbaren TPTP-Services für folgende Aufgaben verwendet werden können:

Testausführungsservice

Der Testausführungsservice wird für den programmgestützten Start, die Ausführung und die Generierung von Testergebnissen zur Verfügung gestellt.Der Testausführungsservice verwendet die vorhandene Nutzungsfunktionalität der Testausführung wieder und macht die aktuellen Nutzungsmethoden der Standalone-Testausführung überflüssig.Bei Verwendung des Testausführungsservice können Tests mit Hilfe einer automatischen Eclipse-Datei von ant-Scripts, Shellprozeduren und beliebigen Programmen gestartet werden.Mehrere Tests können gleichzeitig ausgeführt werden, wenn genügend Speicher auf dem ausführenden System zu Verfügung steht (jede Serviceausführung erfordert momentan eine separate Eclipse-Hostinstanz.Selbst wenn Tests auf fernen Systemen mit den Testausführungsfunktionen und der Implementierung für den Remotezugriff ausgeführt werden, ist das System des Serviceverbrauchers das System, das die Eclipse-Hostinstanzen ausführt.

Serviceeigenschaften

Lesen Sie im Referenzmaterial zu den Eigenschaften des unterstützten Testausführungsservice nach. Dieselben Eigenschaften gelten für alle Clientautomatisierungsadapter.Für ant-Scripts steht eine Gruppe einfacher ant-Tasks zur Verfügung, um die Serviceeigenschaften festzulegen und den Service auszuführen.Für Shellprozeduren sind die Eigenschaften im erwarteten Befehlszeilenkonzept vordefiniert (wobei von einem Leerzeichen gefolgte Gedankenstriche für Eigenschaften verwendet werden, an die sich ein Wert für die Instanz anschließt).Für Java-Programme werden die jars des Automatisierungsclients referenziert und für die Definition von Eigenschaften und die Steuerung der Serviceausführung verwendet.Einige Clientadapter verfügen möglicherweise über weitere Optionen, die für die jeweilge Clientumgebung erforderlich sind (oder als zusätzliche Funktion von diesem Adapter angeboten werden).

Automatisierbare Servicegerüstkonfektionierung

Die automatisierbaren TPTP-Servicekomponenten werden innerhalb des Plug-ins org.eclipse.hyades.execution gepackt und durch drei JAR-Dateien, einen kleinen XML-Teil in plugin.xml und einige Einträge in der Datei MANIFEST.MF dargestellt.

  1. tptp-automation-client.jar (Die Light-Version des Codes, der für den Aufbau der Clientseite des Servicebus, den Start von Eclipse bei Bedarf und die automatische Ausführung der Services benötigt wird. Diese JAR-Datei wird referenziert, wenn Tests von der Befehlszeile und von Shellprozeduren ausgeführt werden. Sie wird auch referenziert, wenn Tests von beliebigen Java-Code ausgeführt werden.
  2. tptp-automation-server.jar (der TPTP-Automatisierungsserver, der bei Bedarf als Services geladen wird, wird unter Verwendung eines Gerüsts abgefragt und ausgeführt, er implementiert den Erweiterungspunkt der Eclipse-Kernanwendung und wird als Broker und Servicezeiger verwendet)
  3. ant-tptp.jar (diese JAR-Datei verfügt über denselben Inhalt wie tptp-automation-client.jar, wurde jedoch umbenannt, um mit anderen ant-Taskbibliothek konsistent zu sein)

Tests von einem ant-Script ausführen

Stellen Sie sicher, dass ant ordnungsgemäß installiert ist, falls Tests außerhalb einer laufenden Eclipse-Instanz ausgeführt werden müssen. Lesen Sie die ordnungsgemäße Installation in der ant-Dokumentation nach.Zusätzlich zur ant-Standardinstallation kopieren Sie bitte ebenfalls die Datei ant-tptp.jar zusammen mit den anderen Tasks in das ant-lib-Verzeichnis.Wenn bei der Ausführung innerhalb von Eclipse bereits ant installiert ist, stellen Sie auch sicher, dass die Datei ant-tptp.jar in der zusätzlichen Registerkarte 'Tasks' der ant-Startkonfiguration oder im Abschnitt für globale Einträge auf der Benutzervorgabenseite für den Ant-Klassenpfad eingeschlossen ist.Das eingebettete ant-Beispielscript weiter unten ist ein Beispiel eines ant-Scripts mit dem Namen "test.xml", das einen Test mit dem Namen testA innerhalb des Einheitentestordners des Testprojekts ausführt.Das Testprojekt befindet sich im angegebenen Arbeitsbereich von "d:\development\workspace", und die Eclipse-Hostinstanz wird als "d:\development\eclipse" angegeben.Lesen Sie in der Referenzliste der unterstützten Eigenschaften nach, welche Kombinationen von Eigenschaften gültig sind.

Das Beispiel verwendet die TPTP-Testtask, obwohl es auch möglich ist, einen Test während der TPTP-Automatisierungsaufgabe auszuführen.Die allgemeinere Automatisierungstask ist eine ant-Task zur Ausführung beliebiger automatisierbare TPTP-Services, die im Gegensatz zur spezifischeren TPTP-Testtask stehen.Die Testtask ist eine typsichere Task, die speziell zum Starten des Testausführungsservice erstellt wurde.Weitere ant-Scriptbeispiele sind im Paket org.eclipse.hyades.automation.test des Quellenordners src-automation-client des Plug-ins org.eclipse.hyades.execution enthalten.

<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>

Mehrere Tests ausführen und deren Ergebnisse aus ant-Scripts abfragen

Stellen Sie sicher, dass Sie ant ordnungsgemäß konfiguriert haben, um automatisierbare TPTP-Services auszuführen (Informationen zur Ausführung von Tests über ant finden Sie im obigen Abschnitt.) Das Beispiel unten zeigt, wie die Task tptp:execution zur Ausführung mehrerer Tests verwendet wird, und wie die Tasks tptp:interrogation zur Abfrage von Ergebnissen dieser Testausführungen verwendet wird. Beide ant-Tasks akzeptieren mehrere filesets und/oder filelists und ermöglichen Ihnen die Verwendung von Platzhalterzeichen oder die direkte Angabe mehrerer Dateien als Eingaben in die Tasks. In diesem Beispiel führen Sie alle Testprogramme im Projekt TPTPJUnitTests aus, und die Gruppe aller Ergebnisdateien mit der Erweiterung .execution wird als filelist in der von Ihnen zur Verfügung gestellten ant-Variable (in diesem Fall "tptp.test.results") zurückgegeben. Sie geben diese filelist als Eingabe an den Service tptp:interrogation weiter, der jede dieser Ausführungsdateien abfragt, um ein allgemeines Urteil zu fällen, Dieses Urteil wird einer von Ihnen zur Verfügung gestellten ant-Variablen (in diesem Fall "tptp.test.verdict") zugeordnet.

<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>

Testberichte von ant-Scripts generieren

Stellen Sie sicher, dass Sie ant ordnungsgemäß konfiguriert haben, um automatisierbare TPTP-Services auszuführen (Informationen zur Ausführung von Tests über ant finden Sie im obigen Abschnitt.) Das Beispiel unten zeigt, wie die Task tptp:execution zur Ausführung mehrerer Tests verwendet wird, und wie die Tasks tptp:publication zur Generierung von Berichten auf BIRT-Basis aus den Ergebnissen dieser Testausführungen verwendet wird. Die Publizierungstask akzeptiert auch mehrere ant-filesets und/oder filelists und ermöglicht Ihnen die Verwendung von Platzhalterzeichen oder die direkte Angabe mehrerer Dateien als Eingaben. In diesem Beispiel führen Sie alle Testprogramme im Projekt TPTPJUnitTests aus, und die Gruppe aller Ergebnisdateien mit der Erweiterung .execution wird als filelist in der von Ihnen zur Verfügung gestellten ant-Variable (in diesem Fall "tptp.test.results") zurückgegeben. Sie übergeben anschließend diese filelist als Eingabe an den Service tptp:publication, der einen TPTP-Ausführungsbericht unter Verwendung der Standardberichtsschablone (TestExecution.rptdesign, gefunden im Plug-in org.eclipse.tptp.test.report.birt) generiert und diesen an die angegebene Position (in diesem Fall c:\temp\report.html) stellt.

<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>

Testbericht von ant-Scripts anpassen

Sie können das Verhalten der Task tptp:publication anpassen, indem Sie eine andere BIRT-Berichtsschablone angeben. Zum Beispiel TabularReport.rptdesign, die im Schablonenverzeichnis des Plug-ins org.eclipse.tptp.test.report.birt gefunden wurde. Sie können ferner das Verhalten anpassen, indem Sie den Publizierungsservice der Publizierungstestprogramme verwenden und Testprogramme als Eingabe für den Publizierungsservice an Stelle der Dateien mit den Ausführungsergebnissen zur Verfügung stellen. Wenn Sie den Publizierungsservice der Publizierungstestprogramme verwenden und Testprogrammdateien als Eingabe an den Publizierungsservice übergeben, müssen Sie ferner ein Start- und ein Enddatum für das Berichtsfenster angeben (das zur Abfrage des Arbeitsbereichs verwendet wird, um alle Ausführungsergebnisse innerhalb dieses Zeitfensters zu finden). Das Beispiel unten zeigt die Ausführung eines Berichts für alle Testprogramme im Projekt Test1, wobei alle Ausführungsergebnisse der letzten 60 Tagen ausgewählt werden und der Bericht unter Verwendung des tabellarischer Berichtsdesigns generiert wird.

<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>

Tests von der Befehlszeile und von Shellprozeduren ausführen

Tests können direkt von der Befehlszeile und über Shellprozeduren ausgeführt werden, wobei die Testeigenschaften die Form von Befehlszeilenparametern annehmen.Die TPTP-Automatisierungsclientadapter bieten eine Datei mit der Erweiterung .bat und eine Datei mit der Erweiterung .cmd zur Verwendung innerhalb von Windows und eine Datei mit der Erweiterung .sh, die für die Verwendung innerhalb des Linux-Betriebssystems zur Verfügung steht.Es ist möglich, eine lange Gruppe von Argumenten anzugeben, und/oder häufig wiederholte Argumente in einer Konfigurationsdatei (config) zusammenzufassen, um die notwendigen Eingaben für die Ausführung des Testausführungsservice in der Befehlszeile zu minimieren.Der Shell-Automatisierungsclientadapter manifestiert eine Testdatei (für die Stapeldatei oder das Script) und eine komplementäre Java-Komponente, die beide für die Ausführung von Tests über die Befehlszeile vorhanden sein müssen.Alle von TPTP zur Verfügung gestellten Automatisierungsclientadapter können in tptp-automation-client.jar gefunden werden, obwohl die Datei ant-tptp.jar einige Teile des Adaptercodes in Form einer ant-JAR-Datei nachbildet (dies erfolgt, um die Namensgebung der TPTP-Task-JAR-Datei mit anderen verfügbaren ant-Tasks konsistent zu halten).

Die Eigenschaften des Testausführungsservices werden durch vorherige Festlegung der Eigenschaftennamen mit einem Bindestrich definiert, wobei sichergestellt wird, dass auch das Ausgangsverzeichnis oder Stammverzeichnis von Eclipse angegeben wird.

Tests von Java-Anwendung und Plug-ins ausführen

Tests können von einer beliebigen Java-Anwendung gestartet werden und die anderen Adapter für die Clientautomatisierung wie zum Beispiel die ant- und Shell-Adapter, verwenden in der Tat intern Java-Adapter für die Anbindung in den Servicebus.Die einzige Anforderung für die Ausführung von Tests von Java-Code besteht darin, sicherzustellen, dass die tptp-automation-client.jar ordnungsgemäß referenziert wird (in Eclipse bedeutet dies, dass sich die Bibliothek im Erstellungspfad des Java-Projekts befindet), und natürlich dass alle typischen TPTP-Anforderungen, wie zum Beispiel dass der Agentencontroller aktiv sein muss, ebenso angewendet werden. 

Der Adapter für den Java-Automatisierungsclient bietet eine sehr einfache API für die Testausführung, wobei alle angebbaren Eigenschaften in einem Standardobjekt für Java-Eigenschaften enthalten sind.Es folgt ein Beispiel zur Ausführung desselben Tests wie beim vorherigen ant-Script-Beispiel.Beachten Sie, dass die Servicekennung, die an die Ausführungsmethode übergeben wird, die Servicekennung für den TPTP-Testausführungsservice ist (dieser Service unterstützt alle wesentlichen TPTP-Testtypen). Es ist ferner möglich, andere automatisierbare Services (falls verfügbar) auszuführen, wobei die im Code unten konfigurierte Kennung und die Eigenschaften geändert werden müssten.

// 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);

Verwandte Konzepte
Übersicht über das automatisierbare Servicegerüst

Zugehörige Tasks
Tests von Scripts und Anwendungen starten

Zugehörige Verweise
Unterstützte Eigenschaften für Testausführungsservice