Notas Charla VLC testing

Charla VLC testing

Fontanería de software: Cómo usar cañerías para parar la fuga.

Ideas generales

Guión o puntos

“El software no es poner ladrillos”

Ideas que se pueden hacer:

* Presentar el gráfico de clean as you code para que vean cómo va a ir mejorando lo anterior

En la ponencia veremos en el mundo real en el que trabajamos, tenemos varios problemas a la hora de codificar en un proyecto como, por ejemplo, trabajar sobre el código de otras personas o código nuestro de hace meses y del que no nos acordamos. Proyectos heredados y antiguos. Eso puede dar lugar a que descuidemos la calidad y la seguridad de nuestro código. Siguiendo las estrategias shift left testing y clean as you code, el programador podrá tener la responsabilidad del código que él está haciendo y no del código heredado o antiguo. Pero siempre se nos puede escapar algo que nosotros mismos no hayamos visto. Para eso existe SonarQube. Para ayudarnos a analizar nuestro código. Y si además, utilizamos nuestro sistema de CI/CD, podemos evitar introducir errores dentro de nuestras ramas de desarrollo valiendonos de los Umbrales de Calidad.

Guión:

Presentación:

Buenas tardes a todos, primero dar las gracias al ITI por la oportunidad de exponer en el VLCTesting, a los patrocinadores por hacerlo posible y a vosotros, asistentes, por hacer que sirva para algo. Y gracias si no os vais a mitad de charla.

Me presento, soy Mario Bastardo, aunque todo el mundo me conoce como Mariote. Soy Sonar Bug Hunter en excentia.

Empecé mi andadura en el mundo profesional en Renault España. Fabricando coches, literalmente. Allí aprendí mecánica, electrónica, electricidad, automatización y sistemas de mejora contínua como Lean Manufacturing o Kaizen.

Mejora contínua que es el ADN de mi empresa, excentia, donde trabajamos para hacer que nuestros clientes se aseguren de la mejor calidad posible tanto en sus procesos como en su software. Y sean capaces de mejorar en ámbos ámbitos.

Somos partners de Atlassian y de SonarSource, para la parte de procesos y para la parte de software respectivamente.

Como decía, empecé mi andadura profesional en el mundo industrial, posteriormente me pasé al mundo del desarrollo y por deformación profesional he intentado trasladar ese mundo industrial (en el que todo está sistemizado, automatizado, todo está medido, centrado, estudiado al detalle) a mi actividad profesional posterior.

Para resumir la charla, de automatización del código. De cómo utilizar a nuestro favor los sistemas que pone SonarQube y los diferentes sistemas de CI/CD no sólo para evitar que pueda empeorar la calidad y la seguridad de nuestro código, si no que además, se vaya beneficiando por el simple hecho de no introducir más defectos.

Por poneros también en contexto, mi padre es fontanero y profesor de fontanería, de ahí que quiera utilizar dicho símil, que viene al pelo. Lo que vamos a hacer es dirigir nuestro software por donde nosotros queremos, exactamente igual que hace la fontanería, utilizando pipelines (cañerías en castellano). Además utilizaremos llaves o grifos para evitar que el agua vaya por donde no queremos que vaya. Así evitaremos la fuga de errores introducidos en nuestro código que no deseamos, de lo que no nos damos cuenta.

Enjundia:

Cuándo nosotros comenzamos una pieza de software nuevo, nadie quiere hacerlo mal, todo el mundo que sea mínimamente responsable va a querer hacerlo de la mejor forma posible, dar una calidad, un desempeño y una seguridad óptimas.

Esto para un desarrollo nuevo es relativamente sencillo. Nosotros como developers nos vamos a responsabilizar de lo que estamos haciendo en ese momento.

Programamos algo, lo hacemos funcionar, luego lo hacemos bien, y luego por fin lo hacemos rápido y seguro. (Make it work, make it right, make it fast).

Todo es maravilloso, todo está bien, el programador es un fenómeno y vivimos en el mundo de la piruleta, en el país de la fantasía, y tenemos una casa justo al lado del árbol que da las fresas de golomina.

Pero vivimos en el mundo real. Y en este punto, suelen ocurrir dos cosas: 1.- Tenemos que hacer una entrega rápido, o no tenemos tiempo o cualquier otra excusa, y al final, introducimos un defecto y ahí se queda, ya se arreglará más adelante cuando tengamos tiempo y ganas * Pista: eso nunca sucede.

2.- En Matrix, donde las vacas son esféricas, todo el software que tocamos, que hacemos es nuestro, lo hemos diseñado nosotros, lo hemos implementado y conocemos al dedillo todas sus características. Pero bienvenidos al desierto de lo real.

Hay veces (las que más), que recibimos código de otros. Báses de código extensas que no sabemos de dónde vienen, no hay documentación, está fatal. El programador que lo hizo ya ni está en la empresa…

Claro, aquí tenemos varias opciones:

Conocemos los principios del Clean Code, pero y si Clean as you Code?

Presentamos la estrategia Clean as you Code, de SonarSource. Por comentarlo, esta estrategia anteriormente recibía el nombre de Fix the Leak (tapar la fuga), no me lo he inventado yo, no soy tan ingenioso.

¿En qué se basa?

Antes hemos comentado que hay una serie de herramientas para ayudarnos a cumplir esa estandarización. La herramienta principal para ello es lo que llamamos Quality Gate o en la lengua de Cervantes, Umbral de Calidad.

El Umbral de calidad es una serie de métricas que se deben cumplir para considerar que el código es válido o no. La pregunta principal que nos hacemos cuando decidimos cómo son esas métricas es: ¿Está este código preparado para subir a producción? ¿Sería algo que yo subiría a producción?.

Y yo voy a una pregunta más que es… ¿Dejaría que este código fuera introducido, mergeado contra mi rama principal de desarrollo? ¿Dejaría yo que esto pasara a mi rama master?

Bien. Nosotros podemos setear el Quality Gate que queramos o que decidamos, pero llegados a este punto, vamos a ver la estrategia propuesta Clean as you Code por parte de SonarSource. Para mi personalmente y para excentia como organización que también estandarizamos lo que pensamos, creemos firmemente que estas métricas son las mínimas indispensables para asegurar una limpieza de código sin esfuerzo:

Este Quality Gate nos va a dar un resultado una vez que analicemos el código. Es un binario. O bien el código que hemos metido Pasa o No pasa. Si algo inclumple, no pasa. No hay medias tintas, es mecánico. Blanco o negro. Está bien o no está bien.

Claro, esto es una ventaja muy bestia de cara a la automatización del código y al control de qué se hace.

Bien, pues los productos de SonarSource, es decir, SonarCloud y SonarQube nos permiten saber cuál es el estado de nuestro código desde esa estandarización. Nos permiten recoger de forma externa el estado de nuestro quality gate.

Y eso, y unido a los sistemas de CI/CD modernos, nos permiten automatizar el control del código.

Nosotros utilzamos los sistemas de CI/CD para construir nuestra aplicación y hacer una serie de operaciones con él. Imaginad un proyecto donde nosotros lo construyamos, miremos a ver si el código está bien o no y luego, si está bien, hagamos un deploy en un servidor de pruebas.

Pero vayamonos a lo más básico. Vamonos a simplemente, parar el pipeline, parar la cadena de acciones, cuando SonarQube detecte que no se cumplen los parámetros establecidos en la organización. Desde ese “parar el pipeline”, ya podremos evitar lo que queramos

Vamos a ver mediante Github cómo parar el pipeline y en nuestro ejemplo particular, cómo evitar que se mergee la rama donde estoy desarrollando a cualquier otra rama.

(Demo técnica)