Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Dinámicas PDF
Dinámicas PDF
Configuracin
del Software
Resultados de
la prueba Evaluacin
Fallos
Prueba
Datos de tasa
de error
Depuracin
Configuracin
de la Correciones
Prueba Resultados
esperados
Modelo de
Fiabilidad
Prediccin
Fiabilidad
Veamos ahora cules son las tareas a realizar para probar un software:
1. Diseo de las pruebas. Esto es, identificacin de la tcnica o tcnicas de pruebas que se
utilizarn para probar el software. Distintas tcnicas de prueba ejercitan diferentes
criterios como gua para realizar las pruebas. Seguidamente veremos algunas de estas
tcnicas.
2. Generacin de los casos de prueba. Los casos de prueba representan los datos que se
utilizarn como entrada para ejecutar el software a probar. Ms concretamente los casos
de prueba determinan un conjunto de entradas, condiciones de ejecucin y resultados
esperados para un objetivo particular. Como veremos posteriormente, cada tcnica de
pruebas proporciona unos criterios distintos para generar estos casos o datos de prueba.
Por lo tanto, durante la tarea de generacin de casos de prueba, se han de confeccionar
los distintos casos de prueba segn la tcnica o tcnicas identificadas previamente. La
generacin de cada caso de prueba debe ir acompaada del resultado que ha de producir
el software al ejecutar dicho caso (como se ver ms adelante, esto es necesario para
detectar un posible fallo en el programa).
3. Definicin de los procedimientos de la prueba. Esto es, especificacin de cmo se va a
llevar a cabo el proceso, quin lo va a realizar, cundo,
4. Ejecucin de la prueba, aplicando los casos de prueba generados previamente e
identificando los posibles fallos producidos al comparar los resultados esperados con los
resultados obtenidos.
5. Realizacin de un informe de la prueba, con el resultado de la ejecucin de las pruebas,
qu casos de prueba pasaron satisfactoriamente, cules no, y qu fallos se detectaron.
Tras estas tareas es necesario realizar un proceso de depuracin de las faltas asociadas a los
fallos identificados. Nosotros nos centraremos en el segundo paso, explicando cmo distintas
tcnicas de pruebas pueden proporcionar criterios para generar distintos datos de prueba.
A primera vista parecera que una prueba de caja blanca completa nos llevara a disponer de un
cdigo perfectamente correcto. De hecho esto ocurrira si se han probado todos los posibles
caminos por los que puede pasar el flujo de control de un programa. Sin embargo, para
programas de cierta envergadura, el nmero de casos de prueba que habra que generar sera
excesivo, ntese que el nmero de caminos incrementa exponencialmente a medida que el
nmero de sentencias condicionales y bucles aumenta. Sin embargo, este tipo de prueba no se
desecha como impracticable. Se pueden elegir y ejercitar ciertos caminos representativos de un
programa.
Por su parte, tampoco sera factible en una prueba de caja negra probar todas y cada una de las
posibles entradas a un programa, por lo que anlogamente a como ocurra con las tcnicas de
caja blanca, se seleccionan un conjunto representativo de entradas y se generan los
correspondientes casos de prueba, con el fin de provocar fallos en los programas.
En realidad estos dos tipos de tcnicas son tcnicas complementarias que han de aplicarse al
realizar una prueba dinmica, ya que pueden ayudar a identificar distintos tipos de faltas en un
programa.
A continuacin, se describen en detalle los procedimientos propuestos por ambos tipos de
tcnicas para generar casos de prueba.
A este tipo de tcnicas se le conoce tambin como Tcnicas de Caja Transparente o de Cristal.
Este mtodo se centra en cmo disear los casos de prueba atendiendo al comportamiento
interno y la estructura del programa. Se examina as la lgica interna del programa sin
considerar los aspectos de rendimiento.
El objetivo de la tcnica es disear casos de prueba para que se ejecuten, al menos una vez,
todas las sentencias del programa, y todas las condiciones tanto en su vertiente verdadera como
falsa.
Como se ha indicado ya, puede ser impracticable realizar una prueba exhaustiva de todos los
caminos de un programa. Por ello se han definido distintos criterios de cobertura lgica, que
permiten decidir qu sentencias o caminos se deben examinar con los casos de prueba. Estos
criterios son:
- Cobertura de Sentencias: Se escriben casos de prueba suficientes para que cada
sentencia en el programa se ejecute, al menos, una vez.
- Cobertura de Decisin: Se escriben casos de prueba suficientes para que cada decisin
en el programa se ejecute una vez con resultado verdadero y otra con el falso.
- Cobertura de Condiciones: Se escriben casos de prueba suficientes para que cada
condicin en una decisin tenga una vez resultado verdadero y otra falso.
- Cobertura Decisin/Condicin: Se escriben casos de prueba suficientes para que cada
condicin en una decisin tome todas las posibles salidas, al menos una vez, y cada
decisin tome todas las posibles salidas, al menos una vez.
- Cobertura de Condicin Mltiple: Se escriben casos de prueba suficientes para que
todas las combinaciones posibles de resultados de cada condicin se invoquen al menos
una vez.
- Cobertura de Caminos: Se escriben casos de prueba suficientes para que se ejecuten
todos los caminos de un programa. Entendiendo camino como una secuencia de
sentencias encadenadas desde la entrada del programa hasta su salida.
Este ltimo criterio es el que se va a estudiar.
1.2.1.1 Cobertura de Caminos
La aplicacin de este criterio de cobertura asegura que los casos de prueba diseados permiten
que todas las sentencias del programa sean ejecutadas al menos una vez y que las condiciones
sean probadas tanto para su valor verdadero como falso.
Una de las tcnicas empleadas para aplicar este criterio de cobertura es la Prueba del Camino
Bsico. Esta tcnica se basa en obtener una medida de la complejidad del diseo procedimental
de un programa (o de la lgica del programa). Esta medida es la complejidad ciclomtica de
McCabe, y representa un lmite superior para el nmero de casos de prueba que se deben
realizar para asegurar que se ejecuta cada camino del programa.
Los pasos a realizar para aplicar esta tcnica son:
- Representar el programa en un grafo de flujo
- Calcular la complejidad ciclomtica
- Determinar el conjunto bsico de caminos independientes
- Derivar los casos de prueba que fuerzan la ejecucin de cada camino.
A continuacin, se detallan cada uno de estos pasos.
1.2.1.1.1 Representar el programa en un grafo de flujo
El grafo de flujo se utiliza para representar flujo de control lgico de un programa. Para ello se
utilizan los tres elementos siguientes:
- Nodos: representan cero, una o varias sentencias en secuencia. Cada nodo comprende
como mximo una sentencia de decisin (bifurcacin).
- Aristas: lneas que unen dos nodos.
- Regiones: reas delimitadas por aristas y nodos. Cuando se contabilizan las regiones de
un programa debe incluirse el rea externa como una regin ms.
- Nodos predicado: cuando en una condicin aparecen uno o ms operadores lgicos
(AND, OR, XOR, ...) se crea un nodo distinto por cada una de las condiciones simples.
Cada nodo generado de esta forma se denomina nodo predicado. La Figura 3 muestra
un ejemplo de condicin mltiple.
Nodos
Predicado
IF a OR b a
THEN False True
x
ELSE b x
y False
ENDIF
y
As, cada construccin lgica de un programa tiene una representacin. La Figura 4 muestra
dichas representaciones.
opcin N
Secuencia While
CASE
if
opcin2 END CASE
Repeat opcin1
La Figura 5 muestra un grafo de flujo del diagrama de mdulos correspondiente. Ntese cmo
la estructura principal corresponde a un while, y dentro del bucle se encuentran anidados dos
constructores if.
1
Aristas
2 Nodos
3 4
5 6
7 Regin
La Figura 6 representa, por ejemplo, las cuatro regiones del grafo de flujo, obtenindose as la
complejidad ciclomtica de 4. Anlogamente se puede calcular el nmero de aristas y nodos
predicados para confirmar la complejidad ciclomtica. As:
V(G) = Nmero de regiones = 4
V(G) = Aristas Nodos + 2 = 11-9 + 2 = 4
V(G) = Nodos Predicado + 1 = 3 +1 = 4
1
Aristas
2 Nodos
3 4
R2
R1 R3
5 6
7 Regin
R4
9
Esta complejidad ciclomtica determina el nmero de casos de prueba que deben ejecutarse para
garantizar que todas las sentencias de un programa se han ejecutado al menos una vez, y que
cada condicin se habr ejecutado en sus vertientes verdadera y falsa. Veamos ahora, cmo se
identifican estos caminos.
En funcin de cul sea la condicin de entrada se pueden seguir las siguientes pautas identificar
las clases de equivalencia correspondientes:
- Si una condicin de entrada especifica un rango de valores, identificar una clase de
equivalencia vlida y dos clases no vlidas. Por ejemplo, si un contador puede ir de 1 a
999, la clase vlida sera 1 <= contador <= 999. Mientras que las clases no vlidas
seran contador < 1 y contador > 999
- Si una condicin de entrada especifica un valor o nmero de valores, identificar una
clase vlida y dos clases no vlidas. Por ejemplo, si tenemos que puede haber desde uno
hasta seis propietarios en la vida de un coche. Habr una clase vlida y dos no vlidas:
no hay propietarios y ms de seis propietarios.
- Si una condicin de entrada especifica un conjunto de valores de entrada, identificar una
clase de equivalencia vlida y una no vlida. Sin embargo, si hay razones para creer que
cada uno de los miembros del conjunto ser tratado de distinto modo por el programa,
identificar una clase vlida por cada miembro y una clase no vlida. Por ejemplo, el tipo
de un vehculo puede ser: autobs, camin, taxi, coche o moto. Habr una clase vlida
por cada tipo de vehculo admitido, y la clase no vlida estar formada por otro tipo de
vehculo.
- Si una condicin de entrada especifica una situacin que debe ocurrir, esto es, es lgica,
identificar una clase vlida y una no vlida. Por ejemplo, el primer carcter del
identificador debe ser una letra. La clase vlida sera identificador que comienza con
letra, y la clase invlida sera identificador que no comienza con letra.
- En general, si hay alguna razn para creer que los elementos de una clase de
equivalencia no se tratan de igual modo por el programa, dividir la clase de
equivalencia entre clases de equivalencia ms pequeas para cada tipo de elementos.
Las pautas para desarrollar casos de prueba con esta tcnica son:
- Si una condicin de entrada especifica un rango de valores, se disearn casos de
prueba para los dos lmites del rango, y otros dos casos para situaciones justo por debajo
y por encima de los extremos.
- Si una condicin de entrada especifica un nmero de valores, se disean dos casos de
prueba para los valores mnimo y mximo, adems de otros dos casos de prueba para
valores justo por encima del mximo y justo por debajo del mnimo.
- Aplicar las reglas anteriores a los datos de salida.
- Si la entrada o salida de un programa es un conjunto ordenado, habr que prestar
atencin a los elementos primero y ltimo del conjunto.
Mc
Ma Mb
C1 C2 C3
Grupo 3
Grupo 1
Grupo 2
M2 R3
M4 R7 M3
R5 R6 M7
M5 M6