[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