A FitNesse egy acceptance tesztelési keretrendszer, melynek célja hogy a teszteket készítő fejlesztők és a területi szakértők közti szakadékot megszüntesse, azáltal hogy a szakértők számára is elérhetővé teszi a tesztek kezelését és végrehajtását.
Működésileg egy saját web-szerveren futó wiki site, amely strukturált és könnyen olvasható formában teszi elérhetővé a teszteket. A teszteket wikis formázással megadott táblázatok reprezentálják, melyekhez egy-egy Fixture java osztály tartozik. A Fixture osztályok teremtik meg a kapcsolatot a wikis táblázatok és a java tesztkód között. A táblázatok input adatokat és a várt output adatot tartalmazzák, valamint a Fixture kód elérhetőségét. A FitNesse egyszerű felépítése és koncepciói nagyban hozzájárulnak a kiváló használhatóságához, melyek lehetővé teszik széleskörű alkalmazását!
FitNesse telepítése és a menüstruktúra ismertetése
A FitNesse telepítése és indítása nagyon egyszerű! Töltsük le a legfrisebb fitnesse.jar-t a FitNesse hivatalos oldaláról, majd másoljuk be abba a könyvtárba ahova telepíteni szeretnénk, végül adjuk ki a java -jar fitnesse.jar -p 6666 parancsot. Amennyiben a 80-as port már foglalt, a –p opcióval jelölhetünk ki egy szabad portot. A parancs futtatása után létrejön a FitNesseRoot nevű könyvtár a sablon wiki oldalakkal feltöltve, melyet a http://localhost:6666/ címen tekinthetünk meg.
Ahhoz hogy a felvett oldalt használni tudjuk válasszuk ki az Edit menüt, majd a megjelenő wiki szerkesztő felületen írjuk be az oldal nevét, esetleg töröljük a számunkra szükségtelen részeket az oldalról.
Rövid áttekintés a baloldali menük funkcióiról:
- Edit: Az aktuális - jobb oldalon megjelenő - wiki oldal tartalmának szerkesztése.
- Properties: Az aktuális wiki oldal tulajdonságainak szerkesztése.
- Page Type: Az oldal típusának meghatározása, ami lehet egyszerű wiki oldal, teszt oldal vagy suite oldal.
- Actions: A baloldalt megjelenő akció funkcionalitású menüelemek meghatározása.
- Navigation: A baloldalt megjelenő navigációt biztosító menüelemek kiválasztása.
- Securtiy: Biztonsági megszorítások az aktuális wiki oldalra vonatkozólag.
- Refactor: Az aktuális wiki oldal törlése, átnevezése vagy új helyre mozgatása.
- Where Used: Az aktuális wiki oldal más oldalakon történő hivatkozásait mutatja.
- Search: Kifejezés keresése a wiki oldalakon.
- Files: A fájlrendszerbeli könyvtárstruktúra áttekintése és böngészése.
- Versions: Az aktuális wiki oldal módosítás utáni verzióinak megtekintése és visszaállási lehetőség egy korábbi verzióra. (rollback)
- Recent Changes: A legutóbbi változások teljes wiki struktúrát tekintve.
- User Guide: Általános ismertető a FitNesse keretrendszerről.
- Test History: Az elindított tesztek sikerességéről kaphatunk információkat.
- Suite: A suite oldalak esetén megjelenő menüelem, amivel a suite alatt lévő teszteseteket futtathatjuk a wiki oldalon keresztül.
- Test: Az adott oldalhoz tartozó teszteset futtatása a wiki oldalról indítva.
FitNesse Suite létrehozása és konfigurálása
Az ExampleTestSuite oldal létrehozásához kattintsunk a cím melletti ”add child” linkre majd adjuk meg az oldal típusát és nevét, végül kattintsunk az add gombra.
A mentés után megjelenő oldalon az ExampleTestSuite[?]-re kattintva létrehozhatjuk magát a wiki oldalt. Ha az újonnan létrehozott oldal baloldali menüjében nem jelent volna meg a Suite menüelem, akkor a Properties menü alatt módosítsuk a megfelelőre.
Az ExampleTestSuite oldalon kerül definiálásra a classpath valamint két Fitnesse változó a define kulcsszó megadásával. A classpath sorokkal a szükséges könyvtárak és a Fixture kódot tartalmazó class ill. jar helyét adhatjuk meg, a define kulcsszóval pedig a teszteseteknél is használni kívánt változókat definiálhatjuk. Azáltal, hogy a classpath és a define értékeket az ExampleTestSuite-nál adjuk meg, a hierarchiában alatta lévő suite-okra és tesztekre (pl.: ExampleTest) is tovább öröklődnek, bár az alsóbb szinteken szükség szerint felüldefiniálhatók.
FitNesse teszt létrehozása és futtatása
Zárszó
A cikk folytatása hamarosan következik...!
FitNesse teszt létrehozása és futtatása
A következőkben egy egyszerű String összefűzési funkció tesztelését fogom ismertetni a ColumnFixture felhasználásával.
Az ExampleTestSuite véglegesítése után, a suite alá vegyünk fel egy ExampleTest oldalt az ”add child” linkre kattintással úgy hogy az oldal típusa test legyen, majd hozzuk létre a tesztesethez tartozó táblázatot. A táblázat első sorában definiáljuk a Fixture osztályt (MyFitnesseTest), valamint a felhasználni kívánt változókat melyek a Fixture osztályban a getArgs() metódussal érhetők el. A táblázat második sora az oszlop neveket tartalmazza (username, password), melyeket a Fixture osztályban publikus mezőként kell megadni, valamint a tesztmetódust. (testConcatenation). A táblázat további sorai a bemeneti adatokat és a kimenet elvárt eredményeit tartalmazzák, melyek egy-egy teszt lefutásnak felelnek meg.
Az ExampleTestSuite véglegesítése után, a suite alá vegyünk fel egy ExampleTest oldalt az ”add child” linkre kattintással úgy hogy az oldal típusa test legyen, majd hozzuk létre a tesztesethez tartozó táblázatot. A táblázat első sorában definiáljuk a Fixture osztályt (MyFitnesseTest), valamint a felhasználni kívánt változókat melyek a Fixture osztályban a getArgs() metódussal érhetők el. A táblázat második sora az oszlop neveket tartalmazza (username, password), melyeket a Fixture osztályban publikus mezőként kell megadni, valamint a tesztmetódust. (testConcatenation). A táblázat további sorai a bemeneti adatokat és a kimenet elvárt eredményeit tartalmazzák, melyek egy-egy teszt lefutásnak felelnek meg.
A teszthez tartozó Fixture osztály kódja az alábbi forráskódrészleten látható:
Az elkészült tesztet az ExampleTestSuite oldalon látható suite gombra klikkelve vagy az ExampleTest oldal test gombjára kattintva indíthatjuk el, melynek eredményét egyből megtekinthetjük az oldalon.
FitNesse oldalstruktúra kialakítása
package fitnesse.example; import fit.ColumnFixture; public class MyFitnesseTest extends ColumnFixture{ public String username; public String password; public String testConcatenation(){ System.out.println(username); System.out.println(password); System.out.println("myVariable1: "+getArgs()[0]); System.out.println("myVariable2: "+getArgs()[1]); return new StringBuilder() .append(username) .append(password) .append(getArgs()[0]) .append(getArgs()[1]).toString(); } }
Az elkészült tesztet az ExampleTestSuite oldalon látható suite gombra klikkelve vagy az ExampleTest oldal test gombjára kattintva indíthatjuk el, melynek eredményét egyből megtekinthetjük az oldalon.
FitNesse oldalstruktúra kialakítása
A tesztek végrehajtását teszt oldalanként vagy suite-onként van lehetőségünk elindítani. Egy suite, teszteket és további suite-okat tartalmazhat. A wiki oldal struktúrát úgy érdemes kialakítani, hogy készítünk egy gyökér suite oldalt ahova további suite oldalakat veszünk fel, majd az alsóbb szintekre helyezzük a tesztoldalakat. Ez a kialakítás azért hasznos, mert a suite-ok csoportba fogják a teszteket így a tesztek futtatását is ezen csoportok alapján hajthatjuk végre. A suite-os csoportosítás további előnye, hogy a classpath ill. változó deklarációk is öröklődnek a hierarchiában lentebb található suite-okra és tesztekre, így azokat elég csak a felsőbb szinten megadni. Persze egy alsóbb szinten deklarált változó mindig erősebb hatókörrel bír, így névegyezés esetén az alsóbb szintű fog érvényre jutni.
Zárszó
A wiki-s táblázat alapú tesztek az olvashatóságot és a karbantarthatóságot tekintve is előnyösebbek a programozott tesztekkel szemben, igaz a kiegészítő kódok elkészítésére időt kell szánni.
A cikk folytatása hamarosan következik...!
Nincsenek megjegyzések:
Megjegyzés küldése
Megjegyzés: Megjegyzéseket csak a blog tagjai írhatnak a blogba.