Viene de Parte 2

Las pruebas estructurales se centran en la cobertura de código y el control del flujo, por lo cual lo primero que hacemos es un diagrama de control de flujo (CFD, por sus siglas en inglés) para ver el código de forma más abstracta (en forma de modelo):

Figura 1. CFD del ejemplo.

Las cláusulas IF y WHILE se expresan como círculos con un número en un CFD y las flechas significan las posibles salidas (Falso o Verdadero) de cada cláusula. Con el código expresado en un CFD podemos definir las técnicas a emplear más fácilmente. Algunas técnicas de pruebas estructurales son: Block, Condition, Desition y Path testing. Emplearemos todas menos block testing porque es la más incompleta de todas las técnicas.

 

El condition testing se enfoca en las cláusulas simples (no compuestas) que pueden ser verdaderas o falsas sin operadores relacionales. Es decir, cada cláusula IF o WHILE se enfoca en la salida Verdadero o Falsa sin importar las sub condiciones o rangos que puedan tener. Para tener una cobertura de código del 100% de las condiciones tendríamos que hacer 13 casos de prueba, uno falso y uno verdadero por cada cláusula IF (6 sentencias IF X 2) más un caso verdadero para la cláusula WHILE.

 

Con la técnica desition testing debemos tener en cuenta las sub condiciones de cada cláusula. Según el código podemos analizar que existen 4 cláusulas IF y una cláusula WHILE simples (con una sola condición) y dos cláusulas IF con sub condiciones que  se muestran a continuación:

1) if(lMAX_PATH)

2) if(size.LowPart>MAX_FILE_SIZE)

La clausula 1 está compuesta por dos sub condiciones en las cuales la variable “l” puede ser menor, igual o mayor que la variable MIN_LEN, de igual modo, la variable “l” puede ser menor, igual o mayor que la variable MAX_PATH; según lo anterior podemos obtener los siguientes casos de prueba:

#

Variable

Variable

Variable

Condición 1

Condición 1

1

l

MIN_LEN

MAX_PATH

l<MIN_LEN

l>MAX_PATH

2

l

MIN_LEN

MAX_PATH

l=MIN_LEN

l>MAX_PATH

3

l

MIN_LEN

MAX_PATH

l>MIN_LEN

l>MAX_PATH

4

l

MIN_LEN

MAX_PATH

l<MIN_LEN

l=MAX_PATH

5

l

MIN_LEN

MAX_PATH

l=MIN_LEN

l=MAX_PATH

6

l

MIN_LEN

MAX_PATH

l>MIN_LEN

l=MAX_PATH

7

l

MIN_LEN

MAX_PATH

l<MIN_LEN

l<MAX_PATH

8

l

MIN_LEN

MAX_PATH

l=MIN_LEN

l<MAX_PATH

9

l

MIN_LEN

MAX_PATH

l>MIN_LEN

l<MAX_PATH

 

Sin embargo al analizar las combinaciones, observamos que algunos casos no son posibles (los casos # 1, 2, 4 y 5), por lo cual depuramos nuestras condiciones y obtenemos solo 5 casos: