Jednotkové testy jsou …
… v striktních objektově–orientovaných jazycích jako Java příjemný pocit jistoty, že vámi napsaný kód funguje dle očekávání. Za to v netypových jazycích jako PHP holá nutnost, která potvrdí, že kód je funkční a správně napsaný. Není nic horšího, než překlepy v názvech tříd/metod/promněnných, zavržené nebo již nefunkční syntaktické rysy jazyka, které nevědomky použijete, chybně pochopený kontrakt metody a další maličkosti, které se těžko odhalí, když vás celou dobu nehlídá inteligentní IDE!
Proces nepřetržité integrace, který se opírá zejména o jednotkové testy, dává možnost neustále kontroly nad funkčním kódem. Jestliže pracujete v PHP, dá sice více práce sestavit testovací prostředí, ale výsledek poznáte, když odchytíte prvních pár „záludných“ chyb. Pro tento jazyk byl implementován balík PHPUnit, který dokáže velmi striktně kontrolovat váš kód a máte k dispozici veškeré vymoženosti z (dejme tomu) JUnitu.
Testy se píšou stejně jednoduše:
<?php
/* Testovana metoda */
function neco() {
return 'neco';
}
class MujTest extends PHPUnit_Framework_TestCase {
protected function setUp() {
// nejaka nastaveni
}
public function testNeco() {
// testovani metody neco()
$this->assertEquals(neco(), 'neco', 'Nebylo vraceno neco');
}
}
?>
Další kapitolou je řešení problémů, jak testovat systém na selhání, nedostupnost zdrojů a jiné podobné výjimečné stavy. To pak přijde na řadu implementace „mock“ objektů, ale s tím vším se dá vypořádat a ve výsledku máte na očích jednoznačný ukazatel, že kód funguje či ne a nemusíte neustále vše testovat v prohlížeči, jak je mnoho PHP vývojářů zvyklých a následně řešit, jestli je chyba v prohlížeči, ve čtení dat z formuláře nebo logice aplikace. Psát testy se vyplatí!
Komentáře:
Nový komentář:
Komentáře musí být před publikováním schváleny. Děkuji!
Nebylo by neco blizsiho k use case testum v prohlizeci, da se to vubec nejak automaticky testovat, pouzivate neco?
odpověz na tento komentář- tento komentář inspiroval Padacek — #2
07.06. 2007, 15:17inspirováno optik — #1 v distribuci by měl být přiložen shellový skript, kterým lze spouště balíky testů automaticky. Dá se napsat i PHP skript "na míru", který přesně nastaví testovací prostředí, načte testy, patřičně uloží výsledky.
Spouštění přes CRON, Continuum či LuntBuild, apod. je pak otázka pár dní.
odpověz na tento komentář- tento komentář inspiroval Vlasta — #3
07.06. 2007, 16:23inspirováno Padacek — #2 Pro testování webových stránek v prohlížeči existují frameworky pro akceptační testy - například Fitnesse nebo Selenium
odpověz na tento komentář- tento komentář inspiroval Padacek — #4
25.06. 2007, 23:49inspirováno Vlasta — #3 Ano, ty existují. Selenium jsem osobně používal při testování web UI, ale toto se nehodí na testování aplikační logiky, která má být na UI nezávislá ...
odpověz na tento komentář 26.06. 2007, 09:09