Symfony in testiranje modelov

Posted by Krof Drakula on Sep 14th, 2006

Tisti, ki že poznate TDD, poznate načelo pisanja testov pred pisanjem dejanske kode. Čeprav čisti TDD zelo redko upraviči prvotne stroške v človek-urah, se v kasnejši fazi izkaže za edino zanesljivo orodje, še posebej, če debugging vključuje konstanten dostop do baze in preverjanja podatkov v njej.

Na srečo pa Symfony ponudi rešitev za testiranje - poleg okolja (environment), v katerem lahko poganjamo aplikacijo, omogoča tudi ustvarjanje poljubnega števila le-teh in omogoča testiranje dostopa do različnih baz, podatkov itd. Največja prednost tega pa je že omenjeno TEST okolje, v katerem Symfony zaganja SimpleTest teste za PHP.

Problem pri tem je vedno testiranje podatkovnega modela - dela, ki skrbi za pravilno manipulacijo podatkov, ki se hranijo v podatkovni bazi. Tu gre predvsem za bolj kompleksne interakcije, kot je npr. seštevanje prihodkov in izdatkov v sistemu za plačila. Če gre kjerkoli v tem procesu za napako, lahko to uniči kredibilnost sistema, najmanj, kar pa se lahko tu zgodi, pa so tožbe z vseh strani in prehod na ročno preverjanje vseh zapisov v bazi.

V testu pa lahko postavimo prazno podatkovno bazo in sestavimo kombinacije transakcij ter potem testiramo funkcije za izračun vsote na izbranih podatkih. Tako lahko tudi injeciramo razne artefakte, za katere hočemo, da bo sistem sam poskrbel in pravilno obdelal. Lahko poženemo simulacije, ki generirajo ogromno število podatkov ter potem s pomočjo testiranja izoliramo t.i. bottleneck, kar je ključno za optimizacijo delovanja sistema, če je le-ta potrebna. Vse to je opisano na zgornjem linku, ki ga tule pripenjam za lažji dostop. ;)

Več o Symfony prihodnjič.

UPDATE: Symfony framework bo po novem imel svoje lastno orodje za testiranje, imenovanim Lime.

  • sl.rReddit
  • del.icio.us
  • co.mments
  • Ma.gnolia

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.

To sem jaz.

  • Krof Drakula osebno.



  • N3rd badge.