Pasan los años y seguimos encontrándonos continuamente con la misma pregunta, una y otra vez, como Bill Murray en Groundhog Day …. ¿Cuál es el beneficio, valor o ROI que supone la inversión en actividades de aseguramiento de la calidad? ¿Puedo prescindir de esas actividades o, por lo menos, minimizarlas ya que no parece que la percepción de calidad de mis aplicaciones en producción haya mejorado?
Y a parte del testing funcional, ¿realmente es necesario realizar pruebas de rendimiento, usabilidad o accesibilidad? No tengo requisitos de prestaciones, por lo que entiendo que a mi usuario le da lo mismo que el resultado de una consulta en la aplicación tarde dos segundos en lugar de uno o que el tipo de letra sea AngsanaUPC o Cooper Black.
Que la calidad del software sea un factor decisivo de éxito es difícil de ver, pero la falta de calidad puede ser un factor decisivo de fracaso
Que la calidad del software sea un factor decisivo de éxito es una cuestión difícil de ver, pero la falta de calidad puede ser un factor decisivo de fracaso yhabitualmente lo constatamos a posteriori, cuando el daño ya está hecho.
Si repasamos errores de software históricos nos encontramos con ejemplos muy contundentes.
Quien no recuerda la explosión del cohete Ariane 5 sobre la costa de Guayana Francesa en 1996, ocasionando mil millones de dólares perdidos y un fracaso de años de trabajo, todo por una reutilización de código que provocaba el intento de convertir un float de 64 bits en un entero de 16 bits.
La comisión de investigación concluyó en su informe: “Se da por cierto que el sistema funciona bien hasta que se detecta un error, cuando, al contrario, se debería considerar que funciona mal hasta que se comprueba que funciona correctamente” … “se recomienda, para evitar futuros problemas, incluir ‘especialistas externos al proyecto’ para que supervisen tanto la concepción de las piezas como su producción y sus pruebas.”
Es un ejemplo claro de que la calidad software se subestimó; tal vez el presupuesto estaba muy ajustado, las pruebas efectuadas por las compañías fabricantes no fueron supervisadas por un equipo independiente o los compromisos en fechas del programa ya eran lo suficientemente dilatados. Tal vez una simple regla con una herramienta de análisis de código hubiera evitado el desastre, pero claro, era difícil poner sobre la mesa que la calidad del software fuese un factor decisivo de éxito. Más fácil ver que la falta de determinadas actividades de aseguramiento fueron un factor evidente de fracaso.
Estrategia global de aseguramiento y métricas, claves
Pero entonces, … ¿tengo que esperar a tener un problema de software de contundencia que afecte de forma importante en mi organización, … ya sea la imposibilidad de contratación de una póliza de seguros, la provisión de un servicio de valor añadido en una teleoperadora o un error en la visualización del saldo de una cuenta en la banca on-line? ¿De verdad solo es justificable la inversión de actividades de aseguramiento del negocio digital de forma reactiva?
La respuesta es no. Pero se requiere trabajar en dos aspectos fundamentales.
Por un lado, debemos establecer una estrategia global de aseguramiento adecuada a las necesidades de cada organización. Adquirir una comprensión conveniente de los objetivos claves del negocio y un conocimiento profundo de los procesos y herramientas digitales que soportan dicho negocio, nos permitirá realizar una proyección de las actividades ajustadas para cada proyecto, sistema o aplicación, estableciendo itinerarios personalizados que modulen el esfuerzo y profundidad necesaria para las pruebas funcionales independientes, las pruebas de rendimiento, las pruebas de la calidad del código fuente, la accesibilidad, usabilidad, seguridad, etc.
Por otra parte, es necesario medir. Dar visibilidad. Se necesita objetivar mediante datos que el valor de las actividades de aseguramiento de la calidad tiene un impacto positivo y de mejora en la organización. La selección de los indicadores de medición del producto y el proceso debe estar enfocada a mostrar el valor real de los esfuerzos en este sentido. Deben ser medibles, estar normalizados para que sean interpretables y confrontados con un target alineado con el cumplimiento de objetivos estratégicos. Un millón de defectos detectados en una aplicación es mucho, verdad; seguramente pensemos en el gran trabajo y esfuerzo que ha realizado el equipo de testing para depurar el sistema. Pero si se nos han escapado tres millones de defectos más, ya no parece un buen resultado, ¿verdad?
Recomiendo la lectura del artículo publicado en el Blog de MTP “El cuadro de mando del Gobierno de Pruebas y la intelligence QA (iQA)” , en el que se tratan cuestiones como:
– Perspectivas a tener en cuenta cuando hablamos de un Cuadro de Mando del Gobierno de Pruebas
– Cómo debemos organizar nuestra colección de indicadores en un Cuadro de Mando QA? o
– ¿Qué tipo de indicadores debemos tener en cuenta y cómo interpretar la información que nos ofrece?
Y extraigo un fragmento de otro artículo que escribí hace tres años aproximadamente ¿Cómo calcular el ROÍ de las pruebas?, en el que se realizaba una aproximación de ejemplo con una organización con un volumen de desarrollo anual de 150.000 person-days y un servicio independiente de QA con un ratio de 50 defectos detectados por cada 1.000 person-days, en el que si se tasaba cada error software en un mínimo de 1.000 € ahorrados, y sin tener en cuenta el impacto en el negocio de dichas incidencias si no hubieran sido detectadas, se obtenía un ahorro económico de 4,5 millones de euros.
Dicho ROI se incrementaba exponencialmente teniendo en cuenta el coste del impacto en el negocio en caso de incidencias que ocasionaran el colapso de los sistemas o la afectación masiva de usuarios.
Así pues, y como si fuese el ‘Día de la Marmota’, seguiremos insistiendo en la importancia de:
1.- Definir una Estrategia Global de Aseguramiento de la Calidad y utilizar las técnicas adecuadas de pruebas por un equipo independiente y especializado.
2.- Invertir en formación, consultoría y operación de Servicios QA es una garantía de éxito y el ROI estará garantizado si nos rodeamos de equipos y personal adecuado.
3.- Potenciar la regresión de las actividades de aseguramiento de la calidad y la automatización basada en análisis de conveniencia.
4.- Anticipar actividades, realizar elicitación de requisitos y planificaciones coherentes facilitarán el camino hacia la calidad.
Y recuerden, un software con cero defectos será aquel que encerremos en una caja fuerte, apliquemos una envoltura de hormigón y lancemos al fondo de océano para que no pueda ejecutarse jamás.