flickr galerie | Twitter @Padáček | Facebook profil | Foursquare profil | LinkedIn profil

Zápisky.info


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í!

Vloženo 07.06. 2007 v 08:51 | PHP | Zobrazeno 2837x

Komentáře:

  1. [1] od: optik

    Nebylo by neco blizsiho k use case testum v prohlizeci, da se to vubec nejak automaticky testovat, pouzivate neco?

    odpověz na tento komentář
    1. tento komentář inspiroval Padacek — #2
    07.06. 2007, 15:17
  2. [2] od: Padacek

    inspirová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ář
    1. tento komentář inspiroval Vlasta — #3
    07.06. 2007, 16:23
  3. [3] od: Vlasta

    inspirová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ář
    1. tento komentář inspiroval Padacek — #4
    25.06. 2007, 23:49
  4. [4] od: Padacek

    inspirová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

Nový komentář:

V komentáře lze použít následující „tagy“:

  • [a href=http://url.com]titulek odkazu[/a] – bude převeden na odkaz
  • [abbr title=text]abbr[/abbr] – bude převeden na <abbr>.
  • [cite], [code], [em], [strong], [q], [li] — obdobně.

Komentáře musí být před publikováním schváleny. Děkuji!

Kontrola proti SPAMu

Vlož znaky zobrazené na obrázku:


Navigace

Vyhledávání

 Vyhledávání 

Povolené operátory: AND, OR a NOT

Kategorie

Nejčtenější

Poslední komentáře

  • honza: Diky autore, ani nevis jak moc jsi mi timhle clankem pomohl. Porad mi kod nefungoval, vymyslel jsem kdeco, ale reseni...
  • Milan: [2] Místo řádku: class SampleConfigKeyNotDefinedException extends Exception má zřejmě být řádek class SampleTemplatedNotFoundException extends Exception...
  • Jan-Sebastian Fabík: Zdravím, nevím, co dělám špatně, ale když jsem použil tyto skripty, hlásí mi to chybu:Fatal error: Cannot redeclare class SampleConfigKeyNotDefinedException in...
  • Max: proc ne pouzit nazev Controller (podle MVC) ale Application?nechat abstraktni tridyController Model Viewbyl by mensi zmatek pro zacatecniky, jinak pekny vzorek...
  • Ola: Napis jim na podporu znova vyser se na banan .. Jinak ocenuju ze pouzivas BLOG:CMS, kazdej debilek na nej...

Odkazy

Statistiky návštěvnosti [TOPlist]
PageRank Checking Icon
Valid XHTML 1.0 Strict

Obsah © 2004 – 2006 Josef Petrák

Grafika © 2004 Dlouhý Webdesign

Redakční systém BLOG:CMS