UnitTesting: Jackpot!

per Xavi el 20 de novembre de 2009, sota Informàtica i Tecnologia amb 460 lectures

UnitTest - Jackpot!

Una de les temàtiques noves que estic descobrint actualment en més profunditat és l’UnitTesting en el desenvolupament d’aplicacions (en el meu cas) basades en PHP.

En un primer moment vaig descobrir-ho en la meva etapa a Moterus on ho usàvem pel Ruby. Després, a l’entrar a Softonic el seu ús ha anat imposant-se, mica en mica, en una base per la qualitat del codi. Paralelament, vaig assistir a la PHPConference 2009 a Barcelona, on l’UnitTesting, el Continous Integration, i l’explicació de moltes èines em van acabar de calar.

Recordo quan, sobre una pregunta a Alex Puig, aquest em va explicar el que potser ara veig com una via de treball vàlida i útil, que en un principi requereix més esforç però que a la llarga aposta per la qualitat del codi, la tranquilitat de saber que tot funciona dins dels paràmetres establerts:

Idealment, s’hauria de començar creant el Test Unitari de la classe que vols implementar, amb testos amb paràmetres d’entrada típics i els no tan típics, i quan les especificacions del mètode estan plasmades en testos, comences a desenvolupar el mètode provant el Test fins que validi al 100%. Llavors pots assegurar que aquest mètode / solució funciona.

Actualment, uso l’UnitTesting a diari (de fet, quan es requereix), i existeix per un costat el primer pensament negatiu sobre la feina extra a l’estil buf, ja ho faré o vaja, ara toca fer el test, però també hi ha el joc de fer-lo cumplir al 100% o la satisfació de conseguir un Jackpot (100% en classes, mètodes i línies), o la tranquilitat de que això funciona t’ho miris com t’ho miris.

Paralelament, he estat muntant un sistema de testing automàtic molt rudimentari, podriem anomenar-ho com un Continuous Integration d’estar per casa. En una màquina que tinc sempre funcionant, hi ha un cron o execució de tasques periòdiques que cada hora actualitza el repositori per SVN. Llavors, també cada hora però amb 30 minuts de diferència, s’executa el test Unitari a tota l’aplicació i es generen uns informes que coloco en un lloc online per a la meva revisió posterior. Així, en un termini de com a màxim una hora, tinc el codi testejat en tot moment.

Les eines usades per a tal efecte són:

- Un LAMP, òbviament ;)

- El client svn per consola.

- El cron

- El paquet phpUnit correctament configurat amb el PHP del LAMP, que necesita PEAR :-(

- El mòdul d’apache Xdebug per a la generació dels informes amb mostra i coloreig de codi.

Amb això, a grans pinzellades, podriem tenir el sistema en funcionament. Potser escric uns quants articles de tipus tutorial a SyntaxError, que la tinc una mica abandonada amb tanta tasca. Aquí, avui, només volia mostrar les bondats del testing en qualsevol projecte de desenvolupament de software, i de les èines per posar-ho en marxa en un entorn de PHP.

Salut!

:, , , ,

Deixa un Comentari