A TPTP számos automatizálható szolgáltatást biztosít, amelyek az Eclipse munkaterületen kívülről is meghívhatók. Ilyen szolgáltatás például a tesztvégrehajtás, a tesztelési eredmények lekérdezése és a tesztelési eredmények közzététele.
Ez a témakör írja le, hogyan használhatók a TPTP beépített automatizálható szolgáltatásai az alábbi célokra:
A tesztvégrehajtási szolgáltatás a teszteredmények programozható indítására, végrehajtására és előállítására szolgál. A tesztvégrehajtás szolgáltatás átalalkítja a meglévő tesztvégrehajtás szolgáltatást, és fölöslegessé teszi az aktuális önálló tesztvégrehajtási befogó módszereket. A tesztvégrehajtás szolgáltatással a teszteket el lehet indítani megjelenítés nélküli ant parancsfájlokkal, parancsértelmező parancsfájlokkal és egy tetszőleges programmal is. Több teszt futtatható egy időben, feltéve hogy a futtató gép elegendő memóriával rendelkezik (minden aktuális szolgáltatás futtatás különálló Eclipse hoszt egyedet igényel). Még ha a tesztek TPTP távoli tesztvégrehajtási szolgáltatásokat és környezeteket használó távoli gépeken futnak is, a szolgáltatást igénybe vevő ügyfél gépe az, ami az Eclipse hosztpéldányokat futtatja.
Nézze meg a támogatott tesztvégrehajtási szolgáltatások tulajdonságainak leírását -- ugyanazok a tulajdonságok érvényesek az ügyfél automatizálási adapterein. Ant parancsfájloknál egyszerű Ant feladatok biztosítják a szolgáltatások tulajdonságaiit és a teszt végrehajtását. Héj parancsfájloknál a tulajdonságok a várt parancssori nézetben vannak megadva (a tulajdonságok előtt kötőjellel, utánuk pedig szóköz, és az érték). Java programoknál az automatizálási ügyfél JAR fájljai állítják be a tulajdonságokat és vezérlik a szolgáltatás végrehajtását. Egyes ügyfél adaptereknek lehetnek további beállításaik is, melyek az adott ügyfél környezethez szükségesek (vagy az adapter extra szolgáltatásaként szolgál).
A TPTP automaitzálható szolgáltatás összetevők az org.eclipse.hyades.execution bedolgozóba vannak csomagolva, amit három JAR fájl képvisel, néhány XML a plugin.XML fájlban, illetve pár bejegyzés a MANIFEST.MF fájlban.
tptp-automation-client.jar
(azon egyszerű kódrész, ami a
szolgáltatásbusz ügyfél oldali indítására szolgál, valamint szükség szerint az
Eclipse indítására és szolgáltatásot megjelenítés nélküli végrehajtásáhot; ez a JAR
fájl a hivatkozott tesztek parancssorból futtatásakor, parancsértelmező
parancsfájloknál, illetve tetszőleges Java kód futtatásakor).tptp-automation-server.jar
(a TPTP automatizálási kiszolgáló,
ami igény szerint kerül betöltésre a szolgáltatások keretrendszerrel kérdezésekor és
végrehajtásakor; megvalósítja a központi Eclipse alkalmazások kiterjesztési pontját,
közvetítőként és szolgáltatáskeresőként).ant-tptp.jar
(ennek a JAR fájlnak ugyanaz a tartalma, mint a
tptp-automation-client.jar fájlnak, de át lett nevezve, hogy konzisztens
legyen más Ant feladat függvénytárakkal.Ha a tesztek futtatása egy futó Eclipse példányon kívülről történik, akkor győződjön meg róla, hogy az Ant megfelelően telepítve van - szükség esetén forduljon az Ant dokumentációhoz a megfelelő beállításokért. Az általános Ant telepítésen kívül másolja át az ant-tptp.jar fájlt is az Ant lib könyvtárába a többi feladat mellé. Ha az Eclipse környezetben történik a futtatás, akkor az Ant eszköz már telepítve van, ettől függetlenül győződjön meg róla, hogy az ant-tptp.jar fájl szerepel az Ant indítási konfiguráció kiegészítő feladatai közt vagy az Ant osztályútvonal beállítási oldal Globális bejegyzések szakaszában. A lent látható beágyazott Ant parancsfájl minta a "test.xml" Ant parancsfájl példája, ami egy testA nevű tesztet hajt végre a tesztprojekt unit-tests mappájában. A tesztprojekt a megadott munkaterületen van ("d:\development\workspace"), az Eclipse hosztpéldány pedig "d:\development\eclipse". A tulajdonságok további érvényes kombinációinak támogatott tulajdonságaiért forduljon a referencialistához.
A lenti példa a TPT tesztfeladatot használja, bár a tesztet a TPTP automatizálási feladatával is végre lehetne hajtani. Az általánosabb automatizálási feladat tetszőleges TPTP automatizálható szolgáltatások végrehajtására egy Ant feladat, ami szemben áll a specifikusabb TPTP teszt feladattal. A teszt feladat egy típusbiztos feladat, külön a tesztvégrehajtási szolgáltatás indítására létrehozva. Az org.eclipse.hyades.execution bedolgozó src-automation-client forrásmappájának org.eclipse.hyades.automation.test csomagja további Ant parancsfájl példákat tartalmaz.
<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>
Győződjön meg róla, hogy az Ant megfelelően be van állítva a TPTP
automatizálható szolgáltatások futtatására (az Ant segítségével végzett
tesztfuttatásról a fenti
szakasz nyújt további információkat). Az alábbi példa bemutatja,
hogyan használható a tptp:execution feladat több teszt lefuttatására, és
hogyan kérdezhető le ezeknek a tesztvégrehajtásoknak az eredménye a
tptp:interrogation feladat segítségével.
Mindkét említett Ant feladat több Ant fileset
és
filelist
bejegyzést is elfogad, így a helyettesítő karakterek
használata mellett közvetlenül is megadhat több fájlt a feladatok
bemeneteként. A példában a TPTPJUnitTests projekt összes tesztkészletének
végrehajtására kerül sor, az eredményül kapott .execution fájlok pedig a
megadott Ant változó (jelen esetben "tptp.test.results")
filelist
elemeként kerül visszaadásra. Ezután ezt a
filelist
fájllistát kapja meg bemenetként a
tptp:interrogation szolgáltatás, amely aztán a végrehajtási fájlok
egyenkénti lekérdezésével állapítja meg az átfogó ítéletet, és rendeli ezt
hozzá a megadott változóhoz (jelen esetben "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>
Győződjön meg róla, hogy az Ant megfelelően be van állítva a TPTP
automatizálható szolgáltatások futtatására (az Ant segítségével végzett
tesztfuttatásról a fenti
szakasz nyújt további információkat). Az alábbi példa bemutatja,
hogyan használható a tptp:execution feladat több teszt lefuttatására, és
hogyan állíthatók elő BIRT alapú jelentések a tesztvégrehajtások
eredményeiből a tptp:publication feladat segítségével.
A közzétételi feladat is elfogad több Ant fileset
és
filelist
bejegyzést, így a helyettesítő karakterek használata
mellett közvetlenül is megadhat több fájlt a feladatok bemeneteként. A példában a TPTPJUnitTests projekt összes tesztkészletének
végrehajtására kerül sor, az eredményül kapott .execution fájlok pedig a
megadott Ant változó (jelen esetben "tptp.test.results")
filelist
elemeként kerül visszaadásra. Ezt a
filelist
elemet veszi át a tptp:publication szolgáltatás,
majd ennek felhasználásával állít elő egy TPTP végrehajtási jelentést az
alapértelmezett jelentéssablon (az org.eclipse.tptp.test.report.birt
bedolgozóban található TestExecution.rptdesign) alapján. Az elkészült
jelentést a megadott helyre (jelen esetben c:\temp\report.html) írja ki.
<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>
A tptp:publication feladatot az org.eclipse.tptp.test.report.birt bedolgozó templates könyvtárában található különböző BIRT jelentéssablonok (például TabularReport.rptdesign) megadásával személyre lehet szabni. Ezen kívül a viselkedés is módosítható oly módon, hogy a publish-testsuites közzétételi szolgáltatást használja, és a közzétételi szolgáltatásnak a tesztkészleteket adja meg bemenetként, nem a tesztvégrehajtás eredményéül kapott fájlokat. Ha a publish-testsuites közzétételi szolgáltatást használja, és tesztkészlet fájlokat ad át a közzétételi szolgáltatás bemeneteként, akkor meg kell adni a jelentési ablak kezdeti és befejező dátumát is. Ezen időtartam alapján lesz lekérdezve a munkaterület a végrehajtási eredmények irányában. Az alábbi példa azt mutatja be, hogyan lehet jelentést készíteni a Test1 projekt összes tesztkészletéről, az elmúlt 60 nap összes végrehajtási eredményének kiválasztásával, és a táblázatos jelentéssablon felhasználásával.
<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>
Teszteket lehet futtani közvetlenül parancssorból és parancsértelmező parancsfájlokból is; a teszt tulajdonságok a parancssori paraméterek alakját veszik fel. A TPTP automatizálási ügyféladapterek .bat és .cmd fájlokat biztosítanak Windows rendszerre, .sh fájlokat pedig Linux operációs rendszerre. A hosszabb paraméterhalmazokat és/vagy a gyakran ismételt paramétereket meg lehet adni egy konfigurációs fájlban, csökkentve a tesztvégrehajtás parancssorból indításához szükséges gépelés mennyiségét. A parancsértelmező automatizálási ügyféladapter szövegfájlként jelenik meg (a szövegfájlhoz), illetve kiegészítő Java összetevőként -- mindkettőnek léteznie kell a tesztek parancssorból futtatásához. Mindegyik, TPTP biztosította automatizálási ügyféladapter megtalálható a tptp-automation-client.jar fájlban, bár az ant-tptp.jar bizonyos adapter kódokat replikál egy Ant JAR fájl formájában (hogy a TPTP feladat JAR fájl elnevezése konzisztens legyen a többi rendelkezésre álló Ant feladatokkal).
A tesztvégrehajtási szolgáltatás tulajdonságainak beállítása a tulajdonságnevek kötőjellel ellátásával történik, valamint az Eclipse saját könyvtár vagy gyökérkönyvtár megadásával.
Teszteket bármilyen Java alkalmazásból lehet indítani, és valójában a többi ügyfél automatizálási adapterek (például az Ant vagy a parancsértelmező) belül a Java adapterrel csatlakozik a szolgáltatás buszhoz. Tesztek Java kódból futtatásának mindössze egy követelménye van: a tptp-automation-client.jar fájl megfelelő hivatkozása (az Eclipse környezetben ez annyit jelent, hogy a függvénytárnak szerepelnie kell a Java projekt összeépítési útvonalában), és természetesen minden tipikus TPTP követelménynek is teljesülnie kell (például futnia kell az ügynökvezérlőnek).
A Java automatizálási ügyfél igen egyszerű API felületet biztosít tesztek végrehajtásához. Minden megadható tulajdonság egy szabványos Java tulajdonság objektumban van tárolva. Lent látható egy példa, ami ugyanazt a tesztet hajtja végre, mint a korábbi Ant parancsfájl példa. A végrehajtás metódusnak átadott szolgáltatásazonosító a TPTP tesztvégrehajtási szolgáltatás azonosítója (ez a szolgáltatás támogatja az összes alapvető TPTP teszttípust) -- a lenti kódban beállított azonosító és tulajdonságok változtatásával végrehajthatóak más automatizálható szolgáltatások is.
// 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);
Kapcsolódó fogalmak
Az automatizálható szolgáltatás keretrendszer áttekintése
Kapcsolódó feladatok
Tesztek indítása parancsfájlokból és alkalmazásokból
Kapcsolódó leírások
Támogatott tesztvégrehajtó szolgáltatások tulajdonságai
(C) Copyright IBM Corporation 2005,2006. Minden jog fenntartva.