4IT445 – Testování a ladění v PHP Ing. Jan Mittner
Osnova 1. Unit testy, integrační testy - PHPUnit 2. Funkcionální testování - Selenium 2
Instalace PHPUnit v adresáři, kde je nainstalováno PHP, je třeba spustit z příkazové řádky následující dva příkazy: pear config-set auto_discover 1 pear install pear.phpunit.de/PHPUnit 3
Nastavení PHPUnit v Eclipse v Eclipse je třeba otevřít dialog z menu pod cestou Run > External Tools > Open External Tools Dialog v rámci položky Program v levé části okna je třeba vytvořit novou položku PHPUnit a nastavit u ní následující údaje Location – filesystémová cesta ke spouštěcímu souboru PHP (php.exe) Working Directory - ${workspace_loc} Arguments – [cesta_k_instalaci_PHP]\phpunit ${resource_loc} 4
Nastavení PHPUnit v Eclipse 5
Tvorba jednoduchých testů tvorba jednoduchého jednotkového testu třídy testů dědí PHPUnit_Framework_TestCase jednotlivé testy jsou metody testovacího objektu, začínající prefixem „test“ metoda assertEquals() apod. slouží pro testování hodnot testů metoda setUp() – úvodní nastavení údajů pro testování car-test.php, product-test.php 6
Testování výjimek PHPDoc testovací metody obsahuje NazevVyjimky, která definuje výjimku, jíž má test vyhodit product-test.php ▪ test definuje i vlastní třídu (ConcreteProduct) pro otestování abstraktního objektu produktu výjimku je možné nastavit i skrze metodu setExpectedException() testovacího objektu 7
Agregace testů spuštění více testů najednou je realizováno skrze agregační testovací třídu implementace statické metody suite() objektu definuje testy, které mají být spuštěny objekt PHPUnit_Framework_TestSuite a jeho metoda addTestSuite() stanovuje veškeré testovací objekty, které mají být spuštěny all-tests.php 8
Spouštění PHPUnit v PHP Explorer je třeba myší označit soubor testu určeného pro spuštění nad souborem je pak třeba spustit PHPUnit konfiguraci z External Tools po provedení testu se výsledky objeví na výpisu konzole v Eclipse 9
Spouštění PHPUnit 10
Úkoly zprovozněte si doma PHPUnit vytvořte si další testy modelů naší aplikace 11
odlišné od unit testů netestují se dílčí funkce či metody sleduje se, zda aplikace funguje z pohledu uživatele
identifikace testovacích scénářů „Uživatel může procházet katalogem produktů“ „Uživatel může zakoupit vybraný produkt“ „Uživatel může najít produkt pomocí vyhledávání“ rozdělení scénářů do dílčích kroků dle složitosti buď jednotlivé kroky, nebo definice subscénářů (tj. dalších testů) napsání testů využití vhodného nástroje ▪Selenium IDE spouštění a vyhodnocení testů často, při každé změně, která mohla ovlivnit testovanou část
balík nástrojů Selenium IDE ▪plugin do Firefoxu 2+ Selenium RC (Remote Control) ▪automatizované spouštění testů ze serveru Selenium Grid ▪nadstavba nad Selenium RC ▪paralelní zpracování na více serverech
použijeme ho na: záznam a úpravu testů spouštění testů pro základní práci není třeba žádná další komponenta (ani Selenium RC ani Grid) jde testovat i JavaScript a AJAX není to ale příliš intuitivní ani triviální
instalace Selenium IDE otestování aplikace
automatické testování v Selenium RC zápis testů přímo v PHP code coverage lze vyřešit, jak zjistit, jaké procento kódu bylo provedeno při funkcionálním testování
Úkoly vyzkoušejte si naklikat test v Selenium IDE 18