A TPTP automatizálható szolgáltatások használata

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:

Tesztvégrehajtási szolgáltatás

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.

Szolgáltatás tulajdonságai

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

Automatizálható szolgáltatás keretrendszer csomag

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.

  1. 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).
  2. 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).
  3. 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.

Tesztek futtatása Ant parancsfájlokból

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>

Több teszt futtatása és az eredmények lekérdezése Ant parancsfájlokból

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>

Tesztjelentések készítése Ant parancsfájlokból

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>

Tesztjelentések személyre szabása Ant parancsfájlokból

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>

Tesztek futtatása a parancssorból és parancsértelmező parancsfájlokból

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.

Tesztek futtatása Java alkalmazásokból és bedolgozókból

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