Ekstremalus programavimas su PHP

Prisiskaičiau daug visokių dalykų apie ekstremalų programavimą. Kaip žinia, ten labai svarbus programų testavimas. Faktiškai viena svarbiausių idėjų yra „pirma parašyk neveikiantį testą, paskui tik pakeisk programą, kad tas testas veiktų“. Šitaip testuojant kiekvieną programos gabaliuką galima užtikrinti kad programa veiks taip kaip buvo planuota ir liks mažiau nesugaudytų vabaliukų.

Ant mano mylimojo Perl yra toks modulis Test::Simple (teko netgi girdėti kad Perlas turi vieną geriausių testavimo įrankų rinkinį – panašus yra lyg tik Javos JUnit). Na Test::Simple idėja yra labai paprasta, tad persirašiau kažką labai panašaus ir PHP kalba:

<?php
# PHPinis Test::Simple ;)
class TestSimple {

        var $count = 0;
        var $failed = 0;
        var $options = array('dont_print_ok' => false);

        function TestSimple($options = NULL)
        {
                $this->options = array_merge($this->options, $options);
        }

        function ok($code, $failure_message = 'No reason given<br>') 
        {
                $this->count++;
                if($code === true) {
                        if($this->options['dont_print_ok'] === false) {
                                print("OK $this->count<br>");
                        }
                } else {
                        $this->failed++;
                        print("Failed $this->count: $failure_message<br>");
                }
                return $code;
        }

        function result() 
        {
                if($this->failed) {
                        print("Failed $this->failed tests out of $this->count<br>");
                } else {
                        print("All $this->count tests successful<br>");
                }
        }

}
?>

Naudojimasis šia klase, kaip ir visas testavimas yra labai paprastas. Pats paprasčiausias testavimas (nenaudojant jokios klasės) būtų panašus į šį:

<?php if(2 * 2 == 4) { print "OK"; } else { print "Not OK"; } ?>

Tiek Test::Simple, tiek ši PHPinė klasė šiek tiek palengvina testavimą. Naudojantis šia klase būtų galima parašyti analogišką testą:

<?php $test->ok(2 * 2 == 4); ?>

Apskritai apie testavimą gana neblogai parašyta Test::Tutorial Perliniame modulyje.

3 Comments

  1. O XP programavimas yra viena iš programų kūrimo proceso rūšių, skirta programuotojų komandoms, t.y. keletui žmonių darantiems tą patį projektą…

    Na, o pats testavimas yra viena iš kad ir Asmeninio programų kūrimo proceso fazių, šalia kitų planavimo, projektavimo, kodavimo, kompiliavimo, testavimo, niu ir „aptarimo“ :)

  2. yr toks keywordas: Test Driven Development TDD

    o php tai as naudoju PHPUnit is PEAR

    labai puikus dalykas.

    o einu paziet gal naujesne versija yra,

    siaip gui galetu buti grazesnis bet veik ir toks kaip yra.

    as po truputi auginu phemplate testu rinkini.

Comments are closed.