Una de las fases más importantes en el desarrollo de software es la realización del testing o pruebas de la aplicación. Esta afirmación, que espero los lectores compartan conmigo, no es siempre respaldada por acciones que demuestren tal importancia. Las pruebas del software pueden representar hasta el 50% de los costos totales del proyecto. Sin embargo, en muchos proyectos, éstas aparecen tímidamente mencionadas en la carta Gantt al final de la etapa de Construcción. Por lo general, el tiempo asignado a ellas es increíblemente exiguo en comparación con el tiempo total del proyecto.
La inmadurez del proceso de pruebas
Muchas organizaciones desconocen los aspectos fundamentales del proceso de testing. Este desconocimiento lleva con frecuencia a subestimar la complejidad de las actividades de pruebas, lo cual cobra un alto precio en los proyectos.
El testing de una aplicación exige analizar varios aspectos, utilizando métodos y técnicas apropiadas. Ello requiere de personal especializado en los procesos de planificación, diseño y ejecución de pruebas de aplicaciones de software.
En primer término, es necesario ponernos de acuerdo en que testing es el proceso de ejecutar una aplicación con el fin de encontrar errores y no con el fin de demostrar que funciona. Por lo tanto, si encuentro errores, mi prueba habrá sido exitosa. En caso contrario, ha sido una pérdida de tiempo.
Planificación de las pruebas
En la etapa de planificación, es necesario definir las pruebas que se realizarán a la aplicación (C. Jones define 18 tipos), los criterios de término, el esfuerzo necesario, productos entregables, control y seguimiento, administración de piezas, repositorios y ambientes de test, entre otros tópicos.
Al planificar las pruebas es necesario realizar estimaciones de esfuerzo y tiempo. Existen formas de relacionar el esfuerzo de pruebas con la calidad estimada que se obtendrá con ese esfuerzo. De esta manera, podemos saber que si asignamos un esfuerzo “x” para realizar las pruebas, la calidad que podemos obtener es “y”. Muchos gerentes se sorprenderían si supieran que el proyecto que están prontos 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 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 pruebas.
En la práctica resulta imposible definir y aplicar todos los posibles casos para una aplicación. El número de combinaciones 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 combina ciones 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 las pruebas propiamente tal, 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 un problema detectado se debe a un tema de ambiente, de secuencia, de generación de los datos, mala especificación del caso o si es efectivamente un error del software. Mucho tiempo se malgasta 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.
Mejorando el proceso de pruebas
Si usted quiere mejorar su proceso de pruebas le recomiendo que ponga atención a tres aspectos:
• Metodología: Define los procedimientos, guías y plantillas que serán utilizados. Esto le dará un marco de trabajo que podrá ser, entre otras cosas, entrenado, verificado, medido, repetido y mejorado. El repetir un proceso le permitirá mejorar continuamente su rendimiento utilizando las experiencias anteriores.
• Técnicas y Herramientas: Proveen los elementos necesarios para realizar una planificación, estimación, análisis, diseño y ejecución sistemática de las actividades de pruebas que serán realizadas por el personal técnico.
• Personal Capacitado: Ingenieros y técnicos que han recibido entrenamiento formal y cuentan con la experiencia y habilidades necesarias para utilizar eficientemente la Metodología y las Técnicas y Herramientas que forman parte del proceso de pruebas de la organización.
Octubre de 2004