Técnicas de Pruebas de Software: Camino Básico, Complejidad Ciclomática y Estructuras de Control
Método del Camino Básico
Este método permite generar casos de prueba a través de una medida de la complejidad lógica del programa a probar. De algún modo, determina cuáles son todos los caminos posibles a la hora de ejecutar el programa.
Se tratará de crear casos de prueba que permitan ejecutar, como mínimo una vez, cada uno de esos caminos. Este método utiliza un simbolismo especial que permite transformar las instrucciones de pseudocódigo de un programa en una especie de grafo de flujo.
Complejidad Ciclomática
Se trata de una métrica del software que nos proporciona un valor cuantitativo de la complejidad lógica de un programa. Desde el punto de vista de la fase de pruebas, se define la complejidad ciclomática como el número de caminos independientes dentro de todos los caminos posibles que existen en un programa.
En este método existe una fórmula fundamental:
Complejidad ciclomática = nº aristas - nº nodos + 2
Resumen del método del camino básico
- Obtener el algoritmo o código que deseamos probar.
- Sacar el grafo de flujo asociado a dicho código.
- Numerar las aristas de dicho grafo.
- Calcular la complejidad ciclomática (nos dirá cuántos caminos independientes existen).
- Averiguar cuáles son esos caminos. Especificar esos caminos con los números de aristas que hay que recorrer, empezando en el nodo inicial y terminando en el nodo final del grafo.
- Conseguir datos reales de prueba para pasar por cada uno de esos caminos (casos de prueba).
Prueba de Estructuras de Control
Muchos de los errores de software provienen de las estructuras condicionales y de las estructuras iterativas. Por ese motivo, adicionalmente al método del camino básico se pueden utilizar pruebas específicas para condiciones y pruebas específicas para bucles.
Pruebas de Condiciones
Este método de prueba revisa las condiciones que existen en sentencias del tipo if (estructura condicional o alternativa). Esas condiciones pueden ser:
- Simples:
exp1 operador-relacional exp2 - Compuestas: uniendo en este caso varias condiciones simples mediante operadores lógicos (
and,orynot), por ejemplo:cond1 and cond2 or not(cond3)
Dentro de estas pruebas encontramos dos variantes principales:
- La prueba de ramificaciones: Es muy simple y únicamente trata los dos casos posibles en una expresión lógica: que toda la condición (completa) sea verdadera (
true) o que sea falsa (false). - La prueba de dominio: Es más compleja y establece que para una condición formada por n variables (condiciones simples), serán necesarios 2n casos de prueba.
Prueba de Bucles
Este método trata de comprobar el buen funcionamiento de los bucles. Cuando tratamos con estructuras iterativas o bucles, habrá que diferenciar según el tipo de bucle que estemos probando:
- Pruebas para bucles simples.
- Pruebas para bucles anidados.
- Pruebas para bucles concatenados.
- Pruebas para bucles no estructurados.
Pruebas de Flujo de Datos
Con el método del camino básico nos aseguramos de que todos los caminos lógicos del programa se recorren, pero no podemos determinar nada a nivel de datos. Este método de prueba pretende controlar qué ocurre con las diferentes estructuras de datos declaradas (variables simples, matrices, etc.).
Para ello, utiliza una serie de mecanismos que van trazando el recorrido de cada una de las estructuras declaradas. Se obtienen unos caminos que se deben garantizar recorrer para demostrar que esas variables se usan adecuadamente. Esta prueba determinará errores como variables no usadas, variables no declaradas o usos erróneos de variables.