Taiichi Ohno presentaba en sus libros el concepto de jidoka como la inserción de la calidad en el producto a priori, no a posteriori. La calidad es un valor intrínseco del producto, que se produce con él, a la vez que él. La calidad no se controla, se produce. Si un proceso genera defectos, lo que se obtiene por sistema es la no calidad.

Desde el epicentro del terremoto customer centric, todas las compañías nos encontramos en medio de profundas transformaciones hacia la plena adaptación a los deseos de nuestros clientes. Queremos conocerlos mejor y ser más ágiles. Queremos responder más rápido a sus necesidades.

En el mundo del software, esta transformación Lean supone que el desarrollo de aplicaciones se ha convertido en un proceso de cambio continuo, con tiempos de entrega exigentes, prototipados rápidos y equipos multidisciplinares centrados en la entrega de valor al cliente. Pero, para ello, debemos enfrentarnos a la realidad de nuestros sistemas y aplicaciones, y exigirles que nos sigan en nuestro camino hacia la orientación al usuario. Sin fallos, sin malentendidos, sin costosas marchas atrás. Asumiendo que los cambios funcionales frecuentes han llegado para quedarse.

Automatizar la calidad

Con el objetivo de alcanzar esta plena satisfacción de nuestros usuarios, buscamos “adelgazar” los procesos TI, eliminando todos los costes superfluos y demás desperdicios para que, manteniendo el nivel de calidad definido, estos sean más flexibles, más eficientes y, por tanto, permitan ahorrar costes.

En este escenario, garantizar la calidad del software es un verdadero reto, que solo es posible asumir con un alto grado de automatización de procesos o SQA (software quality assurance). De hecho, los problemas de calidad son uno de los siete principales desperdicios en el modelo Lean IT y la automatización de tareas recurrentes es una de las técnicas clave para lograr una mayor agilidad y eliminar la denominada muda o desperdicio.

Por tanto, debemos pensar en procesos sostenibles, ágiles y productivos, para que no produzcan defectos. No se trata de establecer puntos de control a lo largo de todo el proceso, sino de modificarlos para que dicho control sea innecesario o esté automatizado, de forma que las personas puedan dedicarse a labores más productivas.

Esto es, por ejemplo, lo que promueven marcos de trabajo como TDD (test driven development) o BDD (behaviour driven development), que facilitan la verificación automática de la calidad del software producido desde el mismo momento de su creación.

Debemos pensar en procesos sostenibles, ágiles y productivos, que no produzcan defectos

Herramientas

En este escenario de autonomación —o automatización de procesos con un toque humano—, debemos buscar herramientas que permitan integrar la calidad en el inicio del proceso de creación del software. De hecho, cuanto mayor sea la rapidez de adaptación que le vamos a exigir al proceso, mayor será el grado de automatización que deberemos incluir en nuestros procesos. En cualquier caso, las pruebas de software nunca deberán entenderse como una fase al final del ciclo de desarrollo y los posibles errores no deberían nunca propagarse a fases posteriores del proceso.

Actualmente es posible automatizar un proceso de creación de software. Tenemos a nuestra disposición herramientas muy potentes, que hacen que la automatización sea más un problema cultural o de procesos que tecnológico.

Pero ¿por dónde empezar a automatizar? La clave está en añadir la automatización a nuestros procesos cuando sea rentable para el negocio (value en el modelo Lean IT) o, dicho de otro modo, cuando personalizar lo que el cliente recibe de nosotros sea más rentable que no hacerlo.

Manos a la obra

Hoy en día, automatizar los procesos de calidad de software es la clave para acercarnos a nuestros clientes. Por ejemplo, automatizaremos cuando debamos asegurar el comportamiento funcional de un sistema en marcos de desarrollo ágil, de verificación frecuente, o de entrega y despliegue continuos. De este modo podremos lanzar nuestras pruebas funcionales automatizadas sobre distintos entornos (como desarrollo, integración, certificación, preproducción o producción) con un esfuerzo asumible y con la máxima fiabilidad, buscando asegurar la experiencia del cliente.

También es posible automatizar interacciones end-to-end de procesos clave de negocio mediante el despliegue de sondas automáticas. Esto es muy útil en contextos B2C, que dependen —de manera crítica— de la disponibilidad de los sistemas online, y de que su funcionalidad se mantenga al máximo nivel en todas las plataformas, dispositivos, sistemas operativos o navegadores. Asegurar la disponibilidad de nuestras aplicaciones usuarias acorta enormemente el tiempo entre las peticiones de nuevos requerimientos de las unidades de negocio y su puesta en producción.

Otro posible punto de arranque en la automatización es identificar tareas de prueba que sean repetitivas y sin mucho valor aparente, pero que puedan generar condiciones de fallo en los sistemas en producción. Aquí usamos la automatización para que el equipo de SQA se centre en pruebas de mayor valor, manteniendo siempre el foco en asegurar que no se retrocede en el producto, es decir, rentabilizar las pruebas funcionales con una inversión sostenible en esfuerzo y costes.

En esencia, la automatización de este tipo de procesos de calidad es un modo de asegurar que nuestro software esté sincronizado con la evolución funcional de nuestro sistema (DEV) y con las plataformas sobre las que se desplegará (OPS). Debemos entender la SQA como un elemento integral de todo el proceso de creación de software y su automatización debe apoyarse en un estudio global, que permita obtener resultados útiles y fácilmente interpretables.

Para ello, deberemos contar con herramientas muy versátiles, que se adapten fácilmente a nuestras necesidades, así y con un proceso SQA diseñado para permitir la automatización de gran parte de las actividades de prueba. El siguiente paso será desarrollar estrategias de automatización de procesos SQA más globales, en entornos de integración continua o DevOps, reduciendo los tiempos de puesta en producción, incluso aunque incrementemos la complejidad de nuestras aplicaciones.

Conclusión

En definitiva, no podremos proporcionar valor y experiencias personalizadas a nuestros clientes sin asegurar su experiencia de usuario mediante un proceso de SQA
end-to-end con una amplia cobertura funcional. Teniendo en cuenta el volumen de trabajo que representa este enfoque en plena transformación de las compañías, la mayor parte de esta actividad debe ejecutarse de forma automatizada. Ha llegado la era de la calidad automática.