Automatické testování
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>
poznámka: 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 uvedeme 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í.
Tag input lze chápat jako jednu sadu testovaných hodnot dané metody.
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="off"> <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>
Dodatečné vlastnosti pro controllery
Pro controllery lze posílat i data pomocí POST a GET HTTP akce, stačí do vstupního parametrů testu přidat parametry ve tvaru:
<param name="post_name" type="post" value="hodnota" /> <param name="get_name" type="get" value="hodnota" />
Po-editační testovaní validity dokumentu
Po každé editaci konfiguračního souboru je vhodné zkontrolovat jeho validitu pomocí dodaného DTD (/application/vendors/unit_tester/unit_testing_config.xml), jelikož samotný test počítá s validní konfigurací!
V IDE Netbeans kontrolu validity provedete pomocí označení konfiguračního souboru a následného vyvolání jeho kontextového menu a položky Validate XML.
Poznámka: V celém návodu je uvažována cesta k freenetisu odvozená z Instalace Freenetis