El Formal Testing (o “Formal Language-Based Testing” como lo llama la ISO) es un enfoque de pruebas que implica el uso integrado de varios Lenguajes Informáticos para automatizar actividades de prueba.
Algunas de las prácticas más comunes y de mayor impacto del Formal Testing en los equipos de prueba son:
1 El uso de un Lenguaje de Definición de Procesos (o PDL, por su nombre en Inglés) para documentar procesos de prueba y gestionar información acerca de actividades, roles, insumos y productos de prueba, y para adecuar Sistemas de Administración de Flujos de Trabajo (Work Flow Management Systems) que los implementan.
Esto permite tener procesos más estructurados, precisos, claros y mantenibles que cuando se documentan simplemente en lenguaje natural, además de que pueden incorporar actividades automatizadas de manera integrada.
2 El uso de un Lenguaje de Especificación para desarrollar un modelo del Sistema a Probar que defina su funcionalidad y a partir de ello generar testware automáticamente, especialmente casos de prueba. Esta práctica se conoce como Formal Model-Based Testing.
Esto permite incrementar significativamente la efectividad de los equipos de prueba, pues pueden generarse más casos de prueba, de mayor calidad y más mantenibles que cuando se desarrollan manualmente, contribuyendo a incrementar la competitividad.
3 El uso de Componentes de Compiladores (especialmente analizadores léxicos, sintácticos y semánticos, mencionados en los rectángulos más obscuros de la figura, que muestra la estructura general de un compilador) para procesar el programa del Sistema a Probar, obtener una panorámica de su composición, detectar secciones incompletas y anomalías debidas a prácticas inadecuadas, y obtener información útil para la estrategia de pruebas. Esta práctica es conocida como Análisis Estático.
Esto permite por ejemplo, obtener la complejidad de los distintos componentes del Sistema a Probar para que los más complejos se prueben con mayor profundidad (donde hay más complejidad hay más propensión a error), contribuyendo con ello a distribuir el esfuerzo de pruebas de una manera más inteligente para que sea más efectivo.4 El uso de Meta-Lenguajes (lenguajes para definir lenguajes) que pueden ser usados no solo para generar datos de entrada para las pruebas, sino también (y más relevante aún) para diseñar lenguajes y desarrollar sus compiladores para hacer Formal Testing, como los mencionados anteriormente.
Esto permite a las organizaciones desarrollar sus propios lenguajes informáticos, con los cuales pueden automatizar cada vez más actividades de prueba para incrementar su productividad y efectividad y con ello su competitividad.Así como los Lenguajes de Programación de cada vez más alto nivel de abstracción han abonado, a lo largo del tiempo, al incremento de la productividad de los ingenieros de software y les han ayudado a manejar la complejidad,
así también el uso de Lenguajes Informáticos en el marco del Formal Testing abona al incremento de la productividad de los Ingenieros de Prueba y les ayuda a manejar la complejidad.