Homepage » Toolkit » 9 A PHP legjobb automatizált tesztelési keretei

    9 A PHP legjobb automatizált tesztelési keretei

    Hosszú órákat töltöttél a PHP-kód hibakeresésében? Nos, a legtöbb programozó számára valószínűleg nem a legizgalmasabb kihívás, de van egy megoldás, amely segíthet lerövidíteni ezt az unalmas feladatot. Automatizált tesztelés jelentősen javíthatja a PHP fejlesztésének munkafolyamatát az előzetes írásbeli tesztek lehetővé tétele a fejlesztési folyamat meghajtására.

    Ebben a hozzászólásban megpróbáljuk megérteni miért olyan finom az automatizált tesztelés, hogyan működik, és mi van a legjobb vizsgálati keretek elkezdhetsz.

    Miért fontos a tesztelés

    A kezdő PHP fejlesztők nem írnak teszteket a kódjukra. A legtöbbünk megkezdte pályafutását az új funkciók és funkciók tesztelésével, amelyeket a böngészőablakban egyenként írtunk, és amikor valami rosszul mentünk, abszolút tudtunk arról, hogy mit tegyünk.

    A kódok tesztelése írható a fejfájás értékes hibakeresési idejével és óráival. Amikor a nem tesztelt kód a gyártásba kerül, akkor valószínűleg nem lesz olyan szép értékelés. Tehát mit tehetünk?

    Valószínűleg a legjobb ötlet létrehoz egy produktív tesztelési munkafolyamatot amelyben saját tesztkódunkat kell írni, amely ellenőrzi, hogy az alkalmazáskód megfelelően működik-e.

    A trükk az, hogy a tesztkódot az alkalmazáskód előtt kell megírni. Így már a kezdetektől biztosítani tudjuk, hogy az általunk írt kód megfelelően működik. A tesztkód külön fájlba kerül. Ha később hibákat tapasztalunk a PHP alkalmazásunkban, akkor nem kell mást tennünk, csak futtassa a teszteket, amelyek remélhetőleg adjon nekünk megfelelő tippeket a problémákról.

    Az idő megtakarításán és alkalmazásunk megfelelő előkészítésénél a tesztelésnek számos más előnye is van, mint például:

    • több karbantartható kód
    • könnyített refaktorálás
    • kevesebb biztonsági kérdés
    • kevésbé dagadt kódbázis (az alkalmazáskódnak az előzetesen írt tesztkódhoz való hozzáigazítása miatt felesleges részeket hagyunk ki)
    • jobb teljesítmény

    Mi az automatizált tesztelés?

    Természetesen manuálisan is írhatjuk tesztjeinket, de egy idő után elhúzódó és időigényes sok ismétlődő feladattal. A manuális tesztelés helyettesíthető automatikus teszteléssel, amelyben olyan speciális szoftvereket használunk, amelyek a fárasztó munkát végzik számunkra, és több időt tölthetünk a tesztkód logikájának létrehozásával.

    A PHP szerencsére igen népszerű programozási nyelv, ezért számos automatizált tesztelési keretrendszer közül választhatunk.

    Teszt-meghajtású fejlesztés (TDD) vs. viselkedés-vezérelt fejlesztés (BDD)

    A két fő megközelítés, amelyet az automatizált tesztelési keretek használnak, a Test-Driven Development (TDD) és a Behavior-Driven Development (BDD). Mindkét esetben a fejlesztési folyamatot a tesztelés vezérli, azaz a teszteket az alkalmazáskód előtt írják.

    A teszt-vezérelt és a viselkedés-vezérelt tesztek közötti fő különbség a tesztkód szintaxisában van: A TDD a PHP fájlokat használja a tesztfájlokban, míg A BDD emberi olvasható mondatokat használ amelyek leírják az egyes jellemzők viselkedését, és a nem technikai érdekelt felek számára is érthetőek.

    Egy TDD teszt a kódszerkesztőben így néz ki, ez csak rendszeres objektum-orientált PHP-kód:

    KÉP: Codeception.com

    A BDD teszt hasonló ehhez, a nem programozók is értelme lehetnek:

    KÉP: Behat.org

    10 PHP automatizált tesztelési keretrendszer

    Ezt szem előtt tartva nézzük meg a 10 nagy teljesítményű automatizált tesztelési keretrendszert.

    1. PHPUnit

    A PHPUnit a legismertebb tesztelési keretrendszer az Egység tesztek írásához PHP alkalmazásokhoz. Az egység tesztek kis részeket vesznek igénybe, amelyeket egységnek neveznek, és teszteljük őket egyenként. A PHPUnit segítségével tesztvezérelt fejlesztést végezhetünk.

    Használható a parancs sor, és ez biztosítja számunkra a praktikus TestCase osztály hogy szükség szerint bővíthetjük. A PHPUnit lehetővé teszi a fejlesztők számára is az előzetes írásbeli állítás módszerei annak igazolására, hogy az alkalmazás bizonyos módon viselkedik.

    2. Elfogadás

    A codeception nemcsak az Egység tesztek írását teszi lehetővé, hanem a funkcionális és elfogadási teszteket is. Ez a két utóbbi teszteli a PHP alkalmazást egészében, az összes funkcióval együtt, nem pedig egységként. A Codeception lehetővé teszi, hogy a különböző modulokat fejlesztési igényeinknek megfelelően engedélyezzük és konfiguráljuk.

    Számos PHP fejlesztési keretrendszerbe integrálva van, mint pl Symfony2, Laravel4, Yii, Phalcon és a Zend keretrendszer. Ez azt jelenti, hogy egy PHP automatizálási tesztelési keretrendszert és egy PHP fejlesztési keretrendszert használhatunk együtt, hogy létrehozzunk egy szuper hatékony fejlesztő munkafolyamatot.

    3. Behat

    A Behat egy népszerű viselkedés-vezérelt PHP tesztkeret. A tesztek, amiket Behat-szal írhatunk, inkább megnézik mint a kódok. A Behat a viselkedés-vezérelt fejlesztés StoryBDD altípusát használja (a másik altípus SpecBDD).

    A keretrendszert az uborka projekt ihlette, amely a Ruby programozási nyelv tesztelési kerete.

    4. PHPSpec

    A PHPSpec ugyancsak követi a viselkedés-vezérelt vizsgálati megközelítést, de a másik alfajtáját, a SpecBDD-t. A PHPSpec-rel kell írja először a specifikációkat, amelyek leírják, hogyan viselkedjen az alkalmazáskód. Az RSpec nevű Ruby tesztelési keretet is inspirálta.

    5. Storyplayer

    A Storyplayer egy teljes stack tesztelési keretrendszer, amely lehetővé teszi írjon végpontig teszteket egy egész platformra. A Storyplayer támogatja tesztkörnyezet létrehozása és megsemmisítése igény szerint. Ez követi a TDD tesztelési megközelítést, és lehetővé teszi számunkra, hogy olyan funkcionális teszteket írjunk, amelyek egy alkalmazás egészét ellenőrizhetik.

    6. Peridot

    A Peridot egy könnyű, bővíthető tesztelési keret a PHP számára. Jellemzője egy esemény alapú architektúra amely lehetővé teszi a tesztelők számára, hogy könnyen testreszabhatja a keretrendszert pluginok és riporterek segítségével.

    A Peridot a írd le szintaxis egy világos és olvasható tesztnyelv létrehozásához, amely világosan leírja, hogyan kell viselkednie az alkalmazáskódunknak.

    7. Atoum

    Az Atoum egy intuitív és modern PHP tesztelési keretrendszer, amely lehetővé teszi, hogy egység teszteket futtassunk. Ez leegyszerűsíti a tesztfejlesztést, és mivel ez egy fiatal keretrendszer, az új 5.3nem használható régebbi PHP verziókkal) gyors és könnyen érthető tesztelési folyamatot biztosít számunkra.

    Atoum biztosítja a magas szintű biztonság a teszt végrehajtása során, mivel az egyes vizsgálati módszereket saját PHP-folyamatában izolálja.

    8. Kahlan

    A Kahlan egy teljes funkcionalitású BDD tesztelési keretrendszer, amely lehetővé teszi az egység tesztek írását a írd le szintaxis. Ez magában foglalja a KISS (Keep It Simple, Stupid) tervezési elvét. Kahlan legalább 5,5 PHP-t igényel.

    Kis kódbázisa van, azt mondják, hogy körülbelül 10-szer kisebb, mint a PHPUnit, és rengeteg olyan funkcióval rendelkezik, amely kiterjeszthető és testre szabható tesztfolyamatot biztosít számunkra.

    9. Szelén

    A szelén egy bonyolult tesztelési keret, amely automatizálja a böngészőket. Ez azt jelenti, hogy lehetőség van a felhasználói elfogadás tesztelésére vizsgálja meg az egész alkalmazást.

    A szelén egy olyan robusztus eszköz, amelynek saját WebDriver API-ja van, amely képes böngészőhöz vezetni bár valódi felhasználó helyben vagy távoli gépen használná azt. A szelén kiváló eszköz az érettebb webes alkalmazások tesztelésére.

    Végső gondolatok

    Az automatizált tesztelési keretrendszerek lehetővé teszik számunkra, hogy magasabb minőségű PHP-kódot írjunk, és a nyelv népszerűsége miatt sok választási lehetőségünk van, így választhatjuk, hogy melyik megfelel a legjobb fejlesztésünknek..

    Van azonban egy fontos dolog, hogy mindig szem előtt kell tartani. Az automatizált tesztelés lehet erős, de lehet soha nem helyettesítheti a béta tesztet - az igazi emberek által végzett tesztek, akik az alkalmazás jövőbeni felhasználói lesznek.