El código que perdura: código limpio, arquitecturas limpias y DDD

10 · Tests que sostienen la arquitectura6 min read

Historia — La víspera

El consejo dijo que sí a la higuera un jueves por la tarde, y lo dijo, en gran parte, por una hoja de papel.

La presentación había durado una hora. Óscar — y esto Júlia no lo olvidaría — defendió el piloto él mismo, con los dos dibujos pegados en la pared, tal como había prometido: la telaraña de los veintitrés ficheros y, al lado, el diagrama del módulo nuevo, con sus tres anillos y sus flechas hacia dentro. Explicó el blanco móvil con las palabras de Júlia. Explicó los abonos con la lámina de Marta, que Marta le había prestado con una ceja levantada de escepticismo y recuperado con algo parecido al respeto. Y cuando alguien del consejo preguntó lo inevitable — «¿y qué pasa con ATLAS NG?» —, respondió sin parpadear: «NG se queda en lo que siempre debió ser: el plan de contingencia. La inversión va al camino que ya está entregando».

Pero la hoja decisiva fue otra. El consejero mayor, un hombre que llevaba en silencio toda la reunión, señaló el portátil de Júlia y preguntó qué era «eso verde». Júlia giró la pantalla: la suite completa del módulo, recién ejecutada.

—Mil ochocientos cuarenta y dos tests. Cada punto verde es una promesa comprobada: que el sistema hace hoy lo mismo que ayer, más lo nuevo de hoy. Corre entera en un minuto y cuarenta segundos. La lanzamos antes de cada cambio.

—¿Y ATLAS cuántos de estos tiene? —preguntó el consejero.

—Trescientos doce. Los escribimos nosotros este año. Antes, cero.

El hombre asintió despacio, con cara de estar convirtiendo aquello a un idioma que conocía bien.

—O sea, que durante quince años hemos ido sin frenos y sin saberlo. —Cerró su carpeta—. Yo he oído suficiente.


La fecha del cambio de agujas se fijó para un martes («los viernes no se despliega», la ley de Gabriel, ya era política oficial). A las 6:00, la fachada — el proxy que Gabriel había levantado delante del Monstruo — empezaría a enrutar la facturación de los franquiciados de Vesta al módulo nuevo. Producción real. Dinero real. Sin red de «es solo un piloto».

La víspera, a las cinco de la tarde, hicieron lo que llevaban tres días haciendo: pasarlo todo otra vez. Y a las cinco y catorce, en la pantalla de Denís, en medio de un mar verde, apareció un punto rojo.

emitirFactura > con abono aplicado parcialmente en el trimestre anterior > descuenta solo el saldo restante — FAILED

Se quedaron los tres mirando el rojo como se mira una luz de check-engine a doscientos metros de casa.

—Ese test lo escribimos la semana pasada —dijo Denís, bajito—. Con los casos de la reunión de Marta.

Tiraron del hilo. El test reproducía un caso real de la caja de cartón: un abono de 400 € del que Vesta ya había consumido 250 en el trimestre anterior. El módulo nuevo, en la refactorización del jueves — una limpieza pequeña, «de boy scout», en el cálculo de saldos —, había vuelto a descontar los 400 enteros. Ningún test antiguo lo cazaba, porque ningún test antiguo conocía los abonos parciales: solo el nuevo, el nacido de la lámina plastificada, el que existía únicamente porque una comercial había guardado quince años de chuletas y una programadora había preguntado qué significaba una palabra.

Lo arreglaron en veinte minutos. La suite entera, verde, dos veces seguidas. Denís se echó atrás en la silla con las manos en la nuca.

—Ciento cincuenta euros —dijo—. Eso le habríamos cobrado de más a Vesta mañana, en la primera remesa del sistema nuevo, delante de Ferrán y de todo el mundo. En la primera. —Se rio, una risa corta de vértigo—. La madre que me trajo. ¿Os dais cuenta? Nos ha salvado un pósit de Marta convertido en test.

—Nos ha salvado la costumbre —dijo Gabriel desde la puerta, con su chaqueta puesta, porque eran más de las seis y Gabriel libraba a su hora desde 1998—. El pósit sin la costumbre de pasarlo todo cada vez no vale nada. Y la costumbre sin el pósit tampoco valía. —Se colgó la mochila del hombro—. La red no es la suite, chavales. La red es la manía. Mañana a las cinco y media. Dormid.

No durmieron mucho, claro. Júlia se quedó un rato releyendo, sin ningún motivo práctico, el capítulo nueve del faro, que era el más corto de todos y el único que parecía escrito no para enseñar, sino para despedirse:

De todo lo que he escrito en estos cuadernos, esto es lo único que me llevo puesto: los tests no son control de calidad. Son otra cosa, más rara y más grande, para la que nunca encontré la palabra hasta que dejó de importarme encontrarla. Son la diferencia entre creer y saber. Un sistema sin tests es un sistema en el que todo el mundo cree cosas: el programador cree que su cambio es inocente, el jefe cree que se puede desplegar, el comercial cree que puede prometer. Un sistema con tests es un sistema en el que se sabe. Y no sabes lo que pesa la diferencia hasta que has vivido años en el lado de creer, apagando lo que la fe iba incendiando. Escribe los tests como si fueran frases que el negocio pudiera leer, porque un día el negocio las leerá, o alguien tendrá que leerlas por él. Haz que corran rápido, porque una red lenta es una red que se deja de usar, y una red que no se usa es peso muerto colgando de los árboles. Y cuando un test te salve — te salvará, la víspera de algo importante, siempre es la víspera de algo importante —, acuérdate de que ese test lo escribió alguien que no sabía a quién estaba salvando. Yo escribí estos cuadernos sin saber a quién. Si los tests son promesas comprobadas, esto es lo contrario y lo mismo: una promesa sin comprobar. Que alguien llegue. Que alguien lea. Que sirva. Ya está. Apago la luz del faro. Quien venga detrás, que la encienda.

Júlia cerró el portátil y se quedó mirando el techo oscuro de su habitación.

—Llegué —dijo, en voz alta, a nadie, sintiéndose solo un poco ridícula—. Leí. Sirvió.


A las 6:00 en punto del martes, Gabriel movió el interruptor de la fachada con la ceremonia justa: ninguna. A las 6:02, la primera factura real del sistema nuevo salió hacia un franquiciado de Vesta: 1.847,20 €, IVA desglosado, un abono parcial descontado con su saldo exacto. A las 7:40 habían salido doscientas doce. El comparador, que seguía escuchando en paralelo, marcaba diferencia cero con lo que el Monstruo habría hecho — salvo en tres facturas con abonos parciales, donde el sistema nuevo, por primera vez en la historia de Meridian, hacía algo que el Monstruo no sabía hacer: decir la verdad completa.

A las 9:30, Loli, la de soporte, se acercó a la mesa del piloto con cara de no saber si traía un problema.

—Oye, ¿habéis cambiado algo? Es que ha llamado el de administración de un franquiciado de Vesta. —Consultó su pósit—. Dice que la factura de este mes «por fin se entiende». Que qué hemos hecho. —Levantó la vista—. ¿Qué le digo?

Denís abrió la boca para algo grandilocuente. Júlia se adelantó:

—Dile que hemos empezado a usar sus palabras.

Esa tarde, en el canal interno, Óscar escribió el mensaje más corto que se le conocía: «Facturación NG-1: 212/212. Descuadres: 0. Siguiente módulo: acuerdos comerciales. Propuestas de nombre para el proyecto, absteneos los de mitología.»

Y debajo, un minuto después, desde la cuenta de Gabriel, una sola palabra que solo tres personas de la empresa podían entender del todo:

«Faro.»