A FitNesse egy webszerver, egy wiki és egy automatizált szoftvertesztelő eszköz. Ward Cunningham integrált tesztelési keretrendszere alapján készült, és az egységteszt helyett az elfogadási tesztelést támogatja. Megkönnyíti a rendszer működésének részletes és olvasható leírását.

FitNesse
Programozási nyelvJava
Kategóriaszabad és nyílt forráskódú szoftver
LicencCommon Public License

A FitNesse lehetővé teszi, hogy a rendszer felhasználói speciálisan formázott inputot adjanak meg (a formátum a nem programozók számára is hozzáférhető). Ezt a bemenetet a rendszer értelmezi, és automatikusan létrehozza a teszteket. Ezeket a teszteket a rendszer végrehajtja, és a kimenetet visszaküldi a felhasználónak. Ennek a megközelítésnek az az előnye, hogy nagyon gyors visszajelzést kapunk a felhasználóktól. A tesztelendő rendszer fejlesztőjének támogatást kell nyújtania (bizonyos konvencióknak megfelelő, "fixtures" nevű osztályok.)

A FitNesse Java nyelven íródott Micah Martin, Robert C. Martin és mások közreműködésével.[1] A program először csak a Java-t támogatta, de idővel más nyelvekhez is hozzáadtak (C++, Python, Ruby, Delphi, C# stb.).

A FitNesse alapelvei szerkesztés

FitNesse mint tesztelési módszer szerkesztés

A FitNesse-t eredetileg egy jól használható interfésznek tervezték a Fit keretrendszer alapján. Szándéka, hogy támogassa a black-box teszt elfogadási és regressziós tesztelésének agilis stílusát. Ebben a tesztelési stílusban a funkcionális tesztelők egy szoftverfejlesztési projektben együttműködnek a szoftverfejlesztőkkel egy tesztelési csomag kifejlesztésében.

A FitNesse tesztelés a fekete dobozos tesztelés jelölésén alapul, amelyben a tesztelt rendszert fekete doboznak tekintjük, és az előre meghatározott bemenetekre válaszul generált kimenetek alapján teszteljük. A funkcionális tesztelő felelős a tesztek funkcionális értelemben vett megtervezéséért és a FitNesse eszközben való kifejezéséért, míg a szoftverfejlesztő felelős a FitNesse eszköznek a tesztelt rendszerhez való csatlakoztatásáért, hogy a FitNesse végre tudja hajtani a tesztet és össze tudja hasonlítani a tényleges kimenetet a várt kimenettel.

A Fit for Developing Software-ben leírt tesztelési módszer mögött az a gondolat áll, hogy a tesztelők és a fejlesztők kötelező együttműködése javítja a rendszer és a követelmények kölcsönös megértését azáltal, hogy arra kényszeríti a két csoportot, hogy közös nyelvet fejlesszenek ki, miközben megtanulnak együtt kommunikálni.

FitNesse mint tesztelő eszköz szerkesztés

A Fitnesse a teszteket a bemenetek és a várható kimenetek összességeként írja le. Ezek a csatolások egy döntési tábla kifejezett változatai. A FitNesse több ilyen változatot is támogat, a kifejezetten döntési tábláktól kezdve a lekérdezéseket végrehajtó táblákon át a tesztelési szkripteket kifejező táblákig (azaz az eredmény eléréséhez követendő lépések szó szerinti sorrendje). A legáltalánosabb forma egy teljesen szabad formátumú tábla, amely a teszttervezők által tetszőlegesen értelmezhető. Minden tesztet azonban valamilyen táblázat formájában fejeznek ki.

A FitNesse teljes mértékben a tesztek egyszerű létrehozására összpontosít, lehetővé téve a tesztelők és fejlesztők számára, hogy a tesztek végrehajtásának mechanikája helyett a minőségi tesztek létrehozására összpontosítsanak. A FitNesse működési módját tekintve a tesztek egyszerű létrehozása három tényezőt foglal magában:

  1. Táblázatok létrehozása egyszerű.
  2. A táblázatok egyszerű fordítása a tesztelt rendszer hívásaira.
  3. Könnyű és rugalmasságot tesz lehetővé a tesztek dokumentálásában.

A követelmények teljesítése érdekében a FitNesse a wiki mechanizmust használja. A wikik klasszikusan lehetővé teszik a HTML-oldalak egyszerű és gyors létrehozását, és különösen leegyszerűsítik a táblázatok kifejezését. Ezek a tulajdonságok teszik az alap WikiWiki nyelvet ideális választássá a FitNesse "felhasználói felületére": egyrészt lehetővé teszi a nagyon szabad formájú táblázatok egyszerű kifejezését, másrészt a táblázatok tartalmát meglehetősen egyszerűre korlátozza. szöveg. Ez azt jelenti, hogy a WikiWiki nyelv bármilyen formájú táblázatot képes kezelni, amely egy adott teszthez szükséges, és ugyanakkor a táblázatok tartalmát alfanumerikus szövegre korlátozza, amely könnyen leképezhető egy szoftverhívásba. Végül, mivel a FitNesse minden tesztje egy wikioldal, minden teszttáblázat beágyazható a wiki szövegébe; ez lehetővé teszi a funkcionális tesztelők számára, hogy gyors, ésszerű elrendezésű leíró szöveget illesszenek be.

FitNesse mint szoftvereszköz szerkesztés

A FitNesse egy Java nyelven kifejlesztett eszköz, amelyet egyetlen végrehajtható jar fájlként szállítanak ki. A végrehajtható fájl tartalmaz egy wikimotort, egy beágyazott webszervert, egy tesztelőmotort és minden olyan erőforrást (képeket, stíluslapokat stb.), amelyek a FitNesse saját stílusának megfelelő webhely létrehozásához szükségesek.

A FitNesse nagyon nagy hangsúlyt fektet a tesztelési eszközként való könnyű használatra. Az összes szükséges összetevővel együtt kerül szállításra: végrehajtáskor az eszköz elindít egy beágyazott webszervert, amely lehetővé teszi a tesztoldalak lokális vagy az interneten keresztüli elérhetőségét ugyanolyan könnyedén. A beágyazott szerver meglehetősen könnyűsúlyú. Laptopról és szervergépről is futtatható.

Indításkor az eszköz saját Wiki-motort telepít a beágyazott szerverére. Ez a Wiki-motor hasonlóan az egyszerűségre összpontosít, ami azt jelenti, hogy nem igényel háttéradatbázist a futtatásához — egyszerűen létrehoz egy fájl alapú gyűjteményt a Wiki- oldalakból, amelyeket a Wiki-motor értelmez, és a beágyazott webszerver szolgál ki. Az eszköz által létrehozott alapértelmezett wiki tartalmazza a FitNesse felhasználói útmutatóját és néhány példát. Az alapértelmezett dokumentumtárat mindennel kiegészítve hozzák létre, ami egy alapértelmezett wiki FitNesse stílusban való közzétételéhez szükséges (azaz az összes kép, stíluslap, JavaScript fájl és így tovább az alap wikioldal-tárral együtt jön létre).

A wikimotor meglehetősen egyszerű. A wikimotorokban megszokott összes alapvető szolgáltatást kínálja: keresőmotort, oldalankénti felülvizsgálati előzményeket és fájláttekintést. Néhány újrafaktorálási műveletet is kínál, amelyek lehetővé teszik a fájlok törlését, áthelyezését és átnevezését. Ezenkívül a wikimotor kínál néhány tesztspecifikus szolgáltatást, például szabványos gombokat a tesztek futtatásához, az egyes tesztoldalak és tesztcsomagok meghatározásának módjait, valamint a teszteredmények történelmi áttekintését a trendelemzés érdekében. Végül a motor kínál néhány kisebb biztonsági lehetőséget az oldalak zárolásához és a wikihez való hozzáférés biztosításához.

Teszt végrehajtása szerkesztés

A FitNesse rendszeren belüli tesztelés tesztenként négy összetevőből áll:

  • A tesztet döntési táblázatként kifejező wiki oldal.
  • Tesztmotor, amely értelmezi a wiki oldalt.
  • Egy tesztberendezés, amelyet a tesztelő motor hív meg, és viszont meghívja a tesztelt rendszert.
  • A tesztelés alatt álló rendszer, amelyet tesztelnek.

Két komponenst készít a fejlesztő csapat: a wiki oldalt és a fixture-t (természetesen a tesztelés alatt álló rendszert is, de a black-box teszt szempontjából csak kettőt). A wiki oldal tartalmaz valamilyen döntési táblázatot, amely egy tesztet fejez ki. Például teszteket fejezhet ki egy osztást végrehajtó komponensre (a példa a FitNesse kétperces példában megadott példán alapul):

Osztályozási komponens teszt
Számláló értéke A nevező értéke Eredmény?
10 2 5.0
10 5 2.0
5 2 2.5

A kapcsolatot az általános tesztelő motor és a tesztelt rendszer között egy Java kódrészlet, az úgynevezett fixtúra biztosítja. A fenti táblázat esetében ez a kód így nézhet ki:

public class DivisionComponentTest extends ColumnFixture {
    private double num;
    private double denom;

    public void setNumeratorValue (double numerator) {
        num = numerator;
    }

    public void setDenominatorValue (double denominator) {
        denom = denominator;
    }

    public double result() {
        return SystemUnderTest.divide (num, denom);
    }
}

A wiki oldal és a fixture közötti leképezés egy egyszerű CamelCase-re konvertáló leképezés. Ez a leképezés minden táblafejlécre vonatkozik, és a fixture osztály nevének, valamint a fixture metódusainak azonosítására szolgál. A kérdőjelre végződő fejléc a berendezésből kiolvasandó értékként értelmeződik, a többi fejléc pedig a fixture bemenetének minősül. A fixture metódusai a döntési táblázat oszlopsorrendjében kerülnek meghívásra, balról jobbra.

A fent leírt tényleges leképezést (valamint a rögzítési módszerek előhívását) egy tesztelőmotor végzi. A FitNesse két ilyen motort támogat: a Fit motort és a SLIM motort.

Fit szerkesztés

Több, mint egy motor, a Fit önmagában egy tesztelési keretrendszer. Egyesíti a funkciókat a tesztek meghívására, a wiki oldalak értelmezésére és a kimeneti oldalak generálására. A FitNesse eredetileg a Fit keretrendszer köré épült, ez ihlette az eszköz nevét.

A Fit egy olyan keretrendszer, amely a tesztelés során számos felelősséget egyesít, ahelyett, hogy a felelősségeket szépen szétválasztaná. A szoftverfejlesztő árat fizet ezért a tényért, mivel a Fit motor rögzítőelemeinek örökölniük kell a Fit keretrendszer alaposztályait. Ez kényelmetlen lehet a Java-ban, mivel ez azt jelenti, hogy a keretrendszer a fejlesztője egyetlen esélyét elhasználja az osztályöröklődésre. Ez azt is jelenti, hogy a lámpatest természeténél fogva nehézsúlyú szerkezet. Ezek a megfontolások késztették a FitNesse csapatát az elmúlt években arra, hogy áttérjenek a SLIM tesztmotorra.

SLIM szerkesztés

A SLIM (angolul: Simple List Invocation Method, azaz egyszerű lista meghívó módszer) a Fitnesz alternatívája. A SLIM motor a Slim Protocol megvalósítása. Ahelyett, hogy a wiki-alapú tesztelés összes elemét kombinálná, a SLIM motor csak a fixture meghívására koncentrál; külön szerverként fut, amelyet a FitNesse wikimotor távolról hív meg. A wikioldal értelmezése és az eredményoldal generálása mostantól a wikimotor része.

A SLIM motor sokkal könnyebb lámpatesteket tesz lehetővé, amelyek egyszerű POJO-k. Ezeknek a fixture-eknek nem szükséges semmilyen keretosztályt kiterjeszteni vagy használni, ami leegyszerűsíti a tervezésüket, és lehetővé teszi a lámpatest tervezőnek, hogy a tesztelés alatt álló rendszer megfelelő és legegyszerűbb meghívására koncentráljon. Ezenkívül nyitva tartja az öröklési útvonalat, lehetővé téve a fixture fejlesztők számára, hogy szükség esetén fixture hierarchiákat hozzanak létre.

Hivatkozások szerkesztés

  1. Robert: The Three Rules of TDD. butunclebob.com. (Hozzáférés: 2019. augusztus 23.)

Fordítás szerkesztés

Ez a szócikk részben vagy egészben a FitNesse című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.

Könyvek szerkesztés

További információk szerkesztés

Kapcsolódó szócikkek szerkesztés