Automatické testování: Porovnání verzí
Řádek 76: | Řádek 76: | ||
</model> | </model> | ||
− | Velmi důležitý je atribut metody '''autogenerate''', pokud provedete změny v | + | Velmi důležitý je atribut metody '''autogenerate''', pokud provedete změny v metodě a nenastavíte jej na hodnotu '''off''' změny se při spuštění testování zahodí. |
+ | |||
+ | '''Pokud si nepřejete aby metoda byla testována vůbec (časté u metod, které jsou závislé na objektech, nebo vkládají data do databáze), lze toho docílit takto:''' | ||
+ | |||
+ | <model name="test"> | ||
+ | <method name="testovaci_funkce" autogenerate="off"> | ||
+ | <attributes> | ||
+ | <attribute name="user_id" default_value="" /> | ||
+ | <attribute name="filter_values" default_value="array()" /> | ||
+ | </attributes> | ||
+ | <values> | ||
+ | </values> | ||
+ | </method> | ||
+ | </model> | ||
+ | |||
+ | '''Ideální testovací data (snažíme se vkládat i nesmyslné a prázné hodnoty) pro náš testovací model mohou vypadat takto:''' | ||
+ | |||
+ | <model name="test"> | ||
+ | <method name="testovaci_funkce" autogenerate="on"> | ||
+ | <attributes> | ||
+ | <attribute name="user_id" default_value="" /> | ||
+ | <attribute name="filter_values" default_value="array()" /> | ||
+ | </attributes> | ||
+ | <values> | ||
+ | <input> | ||
+ | <param value="" /> | ||
+ | <param value="" /> | ||
+ | </input> | ||
+ | <input> | ||
+ | <param value="" /> | ||
+ | <param value="array()" /> | ||
+ | </input> | ||
+ | <input> | ||
+ | <param value="1" /> | ||
+ | <param value="array('id' => '1')" /> | ||
+ | </input> | ||
+ | <input> | ||
+ | <param value="abd'se$#@`" /> | ||
+ | <param value="abd'se$#@`" /> | ||
+ | </input> | ||
+ | <input> | ||
+ | <param value="1" /> | ||
+ | <param value="array('id' => '1sef%se@š`', 'Ijnfsief' => 'se2', 'sef$a;!')" /> | ||
+ | </input> | ||
+ | </values> | ||
+ | </method> | ||
+ | </model> | ||
''Poznámka: V celém návodu je uvažována cesta k freenetisu odvozená z [[Instalace Freenetis]]'' | ''Poznámka: V celém návodu je uvažována cesta k freenetisu odvozená z [[Instalace Freenetis]]'' |
Verze z 16. 6. 2011, 07:22
Automatické testování slouží jako zpětná kontrola provedených akcí vývojáře.
Obsah
Architektura testů
Testy jsou zcela automatizované (programátor nemusí testy programovat, ale jen dodávat data k jejich testovaní) a automaticky přizpůsobitelně změnám ve zdrojových kódech.
Testy umožňují kontrolovat modely, helpery a controllery, ostatní části systému jsou kontrolovány pouze na jejich syntaktickou správnost.
Testy oproti unit testům neporovnávají výsledné hodnoty daných funkcí ale pouze ověřují zda-li neskončil běh chybou.
Testy jsou podporovány na *unix operačních systémech.
Načtení informací o zdrojových kódech
Načtení informací o zdrojových kódech probíhá automaticky pomocí skriptu, který prochází všechny testované subjekty a získává z nich data nutná k volání rutin subjektů. Tyto data jsou ukládána do XML dokumentu (/application/vendors/unit_tester/unit_testing_config.xml).
Instalace testů
Instalace potřebných knihoven:
sudo apt-get install curl perl libxml-writer-perl libxml-dom-perl
Přidělení práv:
cd /var/www/freenetis chmod +x ./application/vendors/unit_tester/tester.sh
Spuštění testů
Upozornění: Testy spouštějte pouze na lokálním vývojovém serveru!
cd /var/www/freenetis/application/vendors/unit_tester ./tester.sh <URL> <LOGIN_NAME> <PASSWORD>
Doba běhu všech testů na Intel Core i5 2.53GHz s Ubuntu 11.04 je cca 4 minuty.
Příklad s argumenty:
./tester.sh -o http://localhost/freenetis admin 123456
Argumenty testovacího skriptu
$ ./tester.sh --help Script for testing FreeNetIS USAGE: tester.sh [options] URL username password Options: -o, --open-browser Opens browser with models or helpers errors automatically, after error detection. -s, --skip-syntax Skip syntax check of all files -m, --skip-models Skip test of models -h, --skip-helpers Skip test of helpers -c, --skip-controllers Skip test of controllers
Úprava testovaných informací
Automaticky vygenerované testovací hodnoty nejsou pro testování dostatečné, proto je vhodné doplnit některé další hodnoty.
Postupy uvedu na příkladu modelu, v konfiguračním souboru nalezněte příslušný subjekt (dle názvu tagu a atributu jména).
Model po automatickém vygenerování:
<model name="test"> <method name="testovaci_funkce" autogenerate="on"> <attributes> <attribute name="user_id" default_value="" /> <attribute name="filter_values" default_value="array()" /> </attributes> <values> <input> <param value="" /> <param value="array()" /> </input> </values> </method> </model>
Velmi důležitý je atribut metody autogenerate, pokud provedete změny v metodě a nenastavíte jej na hodnotu off změny se při spuštění testování zahodí.
Pokud si nepřejete aby metoda byla testována vůbec (časté u metod, které jsou závislé na objektech, nebo vkládají data do databáze), lze toho docílit takto:
<model name="test"> <method name="testovaci_funkce" autogenerate="off"> <attributes> <attribute name="user_id" default_value="" /> <attribute name="filter_values" default_value="array()" /> </attributes> <values> </values> </method> </model>
Ideální testovací data (snažíme se vkládat i nesmyslné a prázné hodnoty) pro náš testovací model mohou vypadat takto:
<model name="test"> <method name="testovaci_funkce" autogenerate="on"> <attributes> <attribute name="user_id" default_value="" /> <attribute name="filter_values" default_value="array()" /> </attributes> <values> <input> <param value="" /> <param value="" /> </input> <input> <param value="" /> <param value="array()" /> </input> <input> <param value="1" /> <param value="array('id' => '1')" /> </input> <input> <param value="abd'se$#@`" /> <param value="abd'se$#@`" /> </input> <input> <param value="1" /> <param value="array('id' => '1sef%se@š`', 'Ijnfsief' => 'se2', 'sef$a;!')" /> </input> </values> </method> </model>
Poznámka: V celém návodu je uvažována cesta k freenetisu odvozená z Instalace Freenetis