Arxiu d'etiquetes: refactoring

Reunió de juny de Barcelona.pm

Per la reunió del passat mes de juny dels Perl Mongers de Barcelona fam fer un experiment al que vam anomenar Testing Open Space, una mena de desconferència en què l’eix central seria el concepte dels tests i els temes dels que es parlarien es decidirien a la mateixa reunió. Comparteixo aquí el resum de la reunió que he enviat a la llista perquè crec que també podria ser interessant per a gent de fora de la comunitat dels mongers.

Després de les presentacions corresponents (teníem cares noves) vam explicar diferents casos amb què ens trobem que cal introduir tests, sobretot d’integració, en sistemes legacy. Vam posar com a exemples els següents:

  • Introduir tests en un sistema no modularitzat per a fer les altes d’usuaris als serveis del meu departament. És un codi que originalment es va fer per resoldre un problema concret i que ha anat creixent de forma descontrolada (un script per cada servei) i sense tests.
  • Introduir tests en una eina per automatitzar els pull requests als upstreams dels mòduls de Perl que empaquetem a Debian. Ja tenim una forma d’enviar les diferències dels canvis que hem de fer per generar els paquets a Debian, però per als upstreams que tenen els repositoris a GitHub volem crear directament els pull requests.
  • Com fer tests d’integració en un sistema que utilitza serveis d’Amazon Web Services (AWS) sense replicar tot l’entorn de producció.

En aquest punt vam fer una petita explicació de les diferències entre els tests funcionals o unitaris i els d’integració. També vam parlar de mocking i de com evitar-lo tenint diferents entorns per a producció i test.

Tot seguit, vam comentar com amb refactoritzacions petites que vagin afegint una capa d’abstracció als serveis d’AWS es podrien fer els tests més fàcilment: aquest middleware primer cridaria exactament als serveis d’AWS (assegurant així que no s’introdueix cap canvi de disseny que afecti al funcionament) i que després gradualment es podria anar evolucionant fins que permeti fer tests sense tocar els serveis d’AWS. Vam comparar-ho amb el patró Model-View-Controller i amb altres middlewares com DBIC.

Després vam fer una mica de teràpia de grup parlant dels motius pels quals no es fan els tests i la qualitat del codi no és la que hom desitjaria. Vam parlar del triangle de ferro (recursos, abast, temps i qualitat) i de la versió pick two.

Finalment, ja quan estàvem a la porta a punt de marxar va sorgir el tema del Behaviour-Driven Development i vam comentar molt ràpidament què fa i quina diferències té respecte al Test-Driven Development: el primer està orientat a negoci i el segon a desenvolupament.

Us recomano aquest parell de llibres:

També podeu trobar interessant aquest vídeo sobre La economia del refactoring d’en Xavi Gost a la CAS2014 (no estic d’acord amb tot el que diu però el trobo igualment interessant).