[bcn-pm] Dijous 30 de juny: Testing Open Space
Alex Muntada
alexm a caliu.cat
dis jul 2 03:29:36 PDT 2016
Marc Egea i Sala:
> Si surt alguna cosa interessant, si us plau passeu-la a la llista
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 upstream
que tenen els repositoris a GitHub volem crear directament els
pull requests.
* Com fer tests d'integració en un sistema que utilitza serveis
d'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 testing.
Tot seguit, vam comentar com amb refactorings petits 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»:
https://en.wikipedia.org/wiki/Project_management_triangle
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: BDD està orientat a negoci i TDD a desenvolupament.
Us recomano aquest parell de llibres:
* Perl Testing: A Developer's Notebook (antic però vàlid)
http://shop.oreilly.com/product/9780596100926.do
* Refactoring (1ed: Java, 2ed: Ruby)
http://refactoring.com/
També podeu trobar interessant aquest vídeo sobre l'economia
del refactoring (no estic d'acord amb tot el que diu però
el trobo igualment interessant) d'en Xavi Gost a la CAS2014:
https://www.youtube.com/watch?v=mqjvkL2h3_I
Salut i Perl!
Alex
Més informació sobre la llista de correu Barcelona-pm