Úvodná » toolkit » 9 Najlepších automatizovaných testovacích rámcov pre PHP

    9 Najlepších automatizovaných testovacích rámcov pre PHP

    Už ste niekedy strávili dlhé hodiny ladením kódu PHP? Pre väčšinu programátorov to pravdepodobne nie je najviac fascinujúca výzva, ale existuje riešenie, ktoré nám môže pomôcť skrátiť túto zdĺhavú úlohu. Automatizované testovanie môže významne zlepšiť pracovný tok vývoja PHP čo umožňuje predpísané testy riadiť vývojový proces.

    V tomto príspevku sa budeme snažiť pochopiť prečo je automatizované testovanie tak cool, ako to funguje a aké sú najlepšie testovacie rámce môžete začať s.

    Prečo je testovanie dôležité

    Noví vývojári PHP nemajú tendenciu písať testy pre svoj kód. Väčšina z nás začala svoju kariéru testovaním nových funkcií a funkcií, ktoré sme práve napísali v okne prehliadača jeden po druhom, a keď sa niečo pokazilo, boli sme bezradní, čo robiť.

    Písanie testov pre náš kód môže ušetriť drahocenný ladiaci čas a hodiny bolesti hlavy. Keď sa netestovaný kód dostane do výroby, recenzie, ktoré budeme mať pravdepodobne nebude tak pekné. Takže čo môžeme urobiť?

    Asi najlepší nápad je vytvoriť produktívny testovací pracovný postup v ktorom musíme napísať vlastný testovací kód, ktorý kontroluje, či náš kód aplikácie funguje správne.

    Trik je to testovací kód musí byť napísaný pred kódom aplikácie. Týmto spôsobom môžeme zabezpečiť od začiatku, že kód, ktorý píšeme, funguje správne. Testovací kód prechádza do samostatných súborov. Ak budeme neskôr naraziť na chyby v našej PHP aplikácii, nemusíte robiť nič iné, len spustiť naše testy, ktoré dúfam, že dajte nám náležité náznaky problémov.

    Okrem šetrenia času a správnej prípravy našej aplikácie na výrobu má testovanie mnoho ďalších výhod, napríklad:

    • viac udržiavateľný kód
    • zjednodušené refaktorovanie
    • menej bezpečnostných problémov
    • menej nafúknutá základňa kódu (prispôsobenie kódu aplikácie predpísanému testovaciemu kódu spôsobí vynechanie prebytočných častí)
    • lepší výkon

    Čo je automatizované testovanie?

    Samozrejme, môžeme písať testy ručne, ale po chvíli to môže byť zdĺhavé a časovo náročné s mnohými opakovanými úlohami. Manuálne testovanie možno nahradiť automatizovanými testami, v ktorých používame špecifické softvéry, ktoré pre nás robia únavnú prácu a môžeme tráviť viac času vytvorením logiky testovacieho kódu.

    PHP je našťastie veľmi populárny programovací jazyk, takže existuje veľa automatizovaných testovacích rámcov, z ktorých môžeme vybrať.

    Vývoj zameraný na testovanie (TDD) versus vývoj orientovaný na správanie (BDD)

    Dva hlavné prístupy, ktoré používajú automatizované testovacie rámce, sú Vývoj poháňaný testom (TDD) a Vývoj riadený správaním (Behaviour Development - BDD). V obidvoch procesoch vývoja sa riadi testovanie, čo znamená, že testy sú napísané pred kódom žiadosti.

    Hlavný rozdiel medzi skúškou a správaním je testovanie v syntaxe testovacieho kódu: TDD používa v testovacích súboroch správny PHP kód, zatiaľ čo BDD používa vety čitateľné pre človeka ktoré opisujú správanie jednotlivých prvkov a ktoré môžu pochopiť aj netechnické zainteresované strany.

    Test TDD vyzerá takto v editore kódu, je to len pravidelný objektovo orientovaný PHP kód:

    IMAGE: Codeception.com

    BDD test je podobný tomu, že programátori nemajú taký zmysel:

    IMAGE: Behat.org

    10 PHP Automatizovaných testovacích rámcov

    S ohľadom na to sa pozrime na 10 výkonných automatizovaných testovacích rámcov pre PHP, ktoré môžete použiť.

    1. PHPUnit

    PHPUnit je najznámejší testovací rámec pre písanie Unit Tests pre PHP aplikácie. Jednotkové testy odoberajú malé časti kódu nazývané jednotky a testujú ich jeden po druhom. Pomocou PHPUnit môžeme vykonávať testovo riadený vývoj.

    Môže byť použitý prostredníctvom príkazový riadok, a poskytuje nám praktická trieda TestCase že môžeme rozšíriť podľa našich potrieb. PHPUnit tiež umožňuje vývojárom používať predpísané metódy tvrdenia, ktoré tvrdia, že aplikácia sa správa určitým spôsobom.

    2. Kódexy

    Kódovanie nám umožňuje nielen písať testy jednotky, ale aj funkčné a akceptačné testy. Tieto dve testy testujú aplikáciu PHP ako celok so všetkými funkciami zviazanými, nie ako s jednotkami. Kodekcepcia nám umožňuje povoliť a konfigurovať rôzne moduly podľa našich rozvojových potrieb.

    Je integrovaný s mnohými vývojovými rámcami PHP, ako napr Symfony2, Laravel4, Yii, Phalcon a Zend Framework. To znamená, že môžeme použiť rámec testovania automatizácie PHP a vývojový rámec PHP, aby sme vytvorili nadprirodzený vývojový pracovný postup.

    3. Behat

    Behat je populárny testovací systém založený na správaní PHP. Testy, ktoré môžeme napísať s Behatom, vyzerajú skôr ako príbehy ako kód. Behat používa podtyp StoryBDD vývoja riadeného správaním (ďalším podtypom je SpecBDD).

    Rámec bol inšpirovaný projektom Cucumber, ktorý je testovacím rámcom pre programovací jazyk Ruby.

    4. PHPSpec

    PHPSpec tiež sleduje prístup založený na správaní, ale jeho ďalší podtyp nazývaný SpecBDD. S PHPSpec musíme najprv napíšte špecifikácie, ktoré opisujú spôsob správania kódu aplikácie. Bola tiež inšpirovaná skúšobným rámcom Ruby nazvaným RSpec.

    5. Storyplayer

    Storyplayer je plnohodnotný testovací rámec, ktorý umožňuje napíšte end-to-end testy pre celú platformu. Storyplayer má podporu pre vytváranie a zničenie testovacích prostredí na požiadanie. Nasleduje testovací prístup TDD a umožňuje nám napísať funkčné testy, ktoré dokážu skontrolovať aplikáciu ako celok.

    6. Peridot

    Peridot je ľahký, rozšíriteľný testovací rámec pre PHP. Má funkciu architektúru riadenej udalosťami ktorý umožňuje testery ľahko prispôsobiť rámec prostredníctvom pluginov a reportérov.

    Používa Peridot Opíš to syntax na vytvorenie jasného a čitateľného testovacieho jazyka, ktorý jasne opisuje, ako sa má náš kód aplikácie správať.

    7. Atoum

    Atoum je intuitívny a moderný PHP testovací rámec, ktorý nám umožňuje vykonávať jednotkové testy. Zjednodušuje vývoj testov a keďže je to mladý rámec, využíva niektoré novšie funkcie, ktoré boli zavedené v PHP 5.3 (to môženemožno použiť so staršími verziami PHP), aby nám poskytol rýchly a ľahko zrozumiteľný testovací proces.

    Atoum zaisťuje a vysoká úroveň bezpečnosti počas vykonávania testu, pretože izoluje každú testovaciu metódu vo vlastnom PHP procese.

    8. Kahlan

    Kahlan je plnohodnotný testovací rámec BDD, ktorý umožňuje písať jednotkové testy pomocou Opíš to syntax. Zahŕňa princíp dizajnu KISS (Keep It Simple, Stupid). Kahlan vyžaduje aspoň PHP 5.5.

    Má malú kódovú základňu, o ktorej sa hovorí, že je približne 10 krát menšia ako PHPUnit, a má veľa funkcií, ktoré nám poskytujú rozširujúci a prispôsobiteľný testovací pracovný postup.

    9. Selén

    Selenium je sofistikovaný testovací rámec, ktorý automatizuje prehliadače. To znamená, že je možné napísať testy akceptácie používateľov skúmať celú aplikáciu ako celok.

    Selenium je robustný nástroj, ktorý má vlastné rozhranie API WebDriver, ktoré môže natívne prevádzať prehliadač hoci by ho skutočný používateľ použil buď lokálne alebo na vzdialenom počítači. Selenium je vynikajúci nástroj na testovanie vyspelých webových aplikácií.

    Záverečné myšlienky

    Automatizované testovacie rámce nám umožňujú písať PHP kód s vyššou kvalitou a vďaka popularite jazyka máme mnoho možností, takže môžeme vybrať ten, ktorý spĺňa naše potreby vývoja najlepšie.

    Je však dôležité, že vždy musíme mať na pamäti. Automatizované testovanie môže byť silné, ale môže nikdy nenahradzujte beta testovanie - testy vykonané skutočnými ľuďmi, ktorí budú budúcimi používateľmi aplikácie.