Las pruebas funcionales para el éxito de los proyectos

por Fernando Monera
I+D y nuevos negocios en OpenSistemas

Para alcanzar el éxito de un proyecto de software es imprescindible diseñar un plan de pruebas funcionales de calidad. Este plan de pruebas debe: cubrir todos y cada uno de los requisitos funcionales; y en los procesos críticos, reproducir todos los posibles escenarios que puedan afectar.

Este plan de pruebas formalmente puede estar redactado de muy distintas formas, según el proyecto que estemos construyendo. Puede ser desde una simple tabla con los requisitos y las pruebas, hasta un documento formal con todas las pruebas codificadas o incluso un plan detallado en alguna herramienta especializada en pruebas de software.

El plan de pruebas a ser posible debe ser construido junto con el cliente o, al menos, es imprescindible que el cliente valide dicho plan de pruebas antes de ejecutarlo.

Las pruebas son tareas que requieren un nivel alto de conocimiento global del proyecto. También requieren conocer en detalle las necesidades e inquietudes del cliente.

El rol que debe encargarse de diseñar y ejecutar las pruebas funcionales es el Jefe de Proyecto. En proyectos grandes donde exista el rol de Analista Funcional, parte del trabajo puede delegarse en este rol. Pero en ningún caso estas pruebas deben ser responsabilidad del personal técnico del proyecto.

El listado inicial de pruebas funcionales es muy sencillo de extraer. Simplemente se trata de recoger de la oferta comercial (o del documento de Análisis Funcional, si se ha redactado) todos los requisitos y redactar una o varias pruebas a realizar que garantizan el cumplimiento de dicho requisito.

El ‘brainstorming’

A partir de este punto, existen técnicas y ejercicios interesantes como el ‘brainstorming’ con mapas mentales que uno puede hacer para identificar casos de prueba que no son obvios inicialmente.

El plan de pruebas a ser posible debe ser construido junto con el cliente o, al menos, es imprescindible que el cliente valide dicho plan de pruebas antes de ejecutarlo

En los proyectos más complejos es importante que las pruebas se codifiquen y se realicen de forma automática, al menos antes de cada entrega al cliente. La automatización de pruebas nos permite, en gran medida, evitar errores de regresión, es decir, errores que aparecen en elementos que ya se habían probado satisfactoriamente y provocados por la propia evolución del proyecto.

Casi en todos los lenguajes de programación existe software para implementar pruebas de forma automática. PhpUnit en PHP, JUnit en Java… La herramienta Selenium es muy interesante ya que permite probar directamente la interfaz de usuario en los proyectos web. Ésta es la parte más cercana a los requisitos funcionales, por lo que es una herramienta idónea sobre la que programar un buen conjunto de pruebas funcionales.