Una de las actividades que más incidirán en que un proyecto de software termine dentro de los plazos y presupuestos establecidos es la realización del testing del producto de SW.
Según Caper Jones (reconocido gurú de la Ingeniería, metodologías y métricas de software), la corrección de un error detectado en la fase de Requerimientos que cueste 1 UM (Unidad Monetaria) si pasa a la fase de Diseño, ya costará 6,5 UM. Y si se detecta en la fase de Pruebas, su costo será de 13 UM. Ahora, si pasa a Producción, el gasto de corrección será de 67 UM. Ello, sin contar los costos de imagen y otros efectos colaterales que tendrá.
Muchas organizaciones desconocen las inmensas ganancias en productividad que se pueden obtener realizando verificaciones y validaciones de los requerimientos, diseño y productos de software de una manera metodológica, apoyadas por herramientas adecuadas y personal calificado. Basta señalar que en la fase de Requerimientos se introduce el 56% de los errores que se inyectan durante todo el ciclo de vida de desarrollo. Sin embargo, en la mayoría de las organizaciones no existen actividades de testing en esta etapa.
Madurez del proceso de pruebas
Es muy importante contar con un sólido y maduro proceso de pruebas del producto de software final una vez que éste ya está construido. Este proceso deberá contar a lo menos con los siguientes elementos:
• Planificación de las pruebas: En la etapa de planificación de las pruebas, es necesario definir los tipos de test que se realizarán a la aplicación (C. Jones define 18 tipos de pruebas), criterios de término, esfuerzo necesario, productos entregables, control y seguimiento de la pruebas, administración de piezas, repositorios y ambientes de test, entre otros tópicos. Al planificar el proceso de pruebas es necesario realizar estimaciones de esfuerzo y tiempo. Muchos gerentes se sorprenderían si supieran que el proyecto que está pronto a pasar a producción tiene una calidad, medida en cantidad de defectos removidos, inferior al 50%, por ejemplo.
• Escritura de casos de pruebas: Antes de realizar las pruebas propiamente tales, es necesario realizar el análisis de transacciones, identificar los escenarios de negocios, definir los casos de pruebas y los datos de éstas. En la práctica resulta imposible desarrollar y aplicar todos los posibles casos para una aplicación. El número de combinaciones posibles de un conjunto de variables es 2n, siendo “n” el número de variables. Más aún, el número de errores posibles es 3n-1. Una aplicación sencilla podría tener, digamos, 20 variables. Entonces el número de combinaciones posibles es 1.048.576 y el número de errores posibles 3.486.784.400. Esto hace necesario aplicar técnicas de generación de casos y conjetura de errores que nos permitan reducir los casos teóricos a una cantidad de casos razonables para obtener una cierta calidad del producto de software.
• Ejecución de las pruebas: El proceso de pruebas continúa con la ejecución de los test propiamente tales, conforme los lineamientos y estrategia definidos en el plan de pruebas.
El testeador debe utilizar sistemáticamente sus conocimientos y habilidades para interpretar correctamente los resultados obtenidos. Es necesario determinar, por ejemplo, si una problemática se debe a un problema de ambiente, de secuencia, de generación de los datos, mala especificación del caso o si es efectivamente un error del software. Se malgasta mucho tiempo cuando el testeador reporta a desarrollo un error del software que finalmente se descubre que no era tal, sino que era un error de datos.
• Herramientas de apoyo: Un proceso de testing será más efectivo en la medida en que cuente con las herramientas adecuadas para apoyar las distintas actividades, tales como, administración del proceso de pruebas, tracking de los casos (estado, seguimiento, etc.), gestión de versiones, herramientas de pruebas tipo robot para test de carga, funcional, etc.
No obstante los datos anteriores, en la práctica el tiempo asignado a testing en los proyectos de software es increíblemente exiguo en comparación con el tiempo total de la iniciativa. Esta situación se paga con altos costos en los plazos y presupuestos del proyecto. Roger Pressman (Ingeniero, consultor y autor de libros de Ingeniería de Software) afirma que el costo de corrección de los errores representa entre el 30% al 50% de los valores totales del proyecto. Por lo mismo, cualquier inversión que Ud. haga en mejorar su proceso de testing será una inversión altamente rentable.
Sobre el autor
José Guerrero C. es Ingeniero de Ejecución en Procesamiento de Datos de la Universidad de Chile, SEI Authorized Lead Asesor, SCAMPI SEI Lead Appraiser y CMMI Official Trainer. Además, entre otras actividades, es especialista en mejoramiento del proceso de software y relator de cursos de gestión de calidad de SW, a nivel internacional y de Diplomados en la Usach y UCH.