Ejemplo de Pruebas de Software – Parte 1

Algunas personas me han preguntado sobre cómo hacer pruebas en Windows Phone 7, sin embargo cuando respondo la pregunta me entero que quien pregunto no maneja los conceptos de pruebas, por eso antes de responder preguntas sobre como probar Windows Phone con SilverLigth, realizaré un pequeño ejercicio de diseño de casos de prueba.

Supongan que alguien les dice “diseñe los casos de prueba para la siguiente función”:

char* LoadFile(char filePath[MAX_PATH], char* mode, DWORD dwDesiredAccess, DWORD dwCreationDisposition)

Antes de empezar a pensar que hacer, deben definir una pequeña estrategia que debería responder al menos cuatro preguntas 1-¿Qué se va a probar?, 2-¿Desde cual perspectiva se va a probar?, 3-¿A qué nivel se va a probar? y 4-¿con cuáles técnicas voy a probar? Responder las anteriores preguntas me da una visión más clara del objetivo de mis pruebas, con lo cual sabré cuando he terminado. Quién te encargó diseñar los casos de pruebas solo debería contestarte la pregunta 1-¿Qué se va a probar?, las demás deberías definirlas tú mismo.

 

Pruebas Funcionales.

Supongan que la respuesta fue: “quiero probar los requerimientos funcionales, no funcionales y la cobertura de código.” Esta respuesta es el mínimo insumo para empezar a trabajar. Iniciemos definiendo la estrategia para realizar las pruebas funcionales; si vas a probar requerimientos funcionales debes preguntar ¿Cuáles son los requerimientos? Supongan que la respuesta es: “la función debe recibir una ruta de máximo 256 caracteres (mínimo 4 caracteres) y debe cargar de allí el contenido del archivo en un vector. El contenido de los archivos puede ser cualquier byte que se pueda representar con un juego de caracteres ASCII. Como pudieron observar, ahora tenemos la respuesta a la pregunta 1 (¿Qué se va a probar?).

En adelante trabajaremos por nuestra cuenta; los requerimientos funcionales se prueban usualmente a nivel de sistema, por lo cual no nos interesa saber el contenido de la función LoadFile y la perspectiva de pruebas será caja negra. Con lo anterior tenemos las respuestas a las preguntas 2 y 3, solo falta escoger que técnicas vamos a emplear; existen muchas técnicas por ejemplo: Equivalence Class Partitioning -ECP-, Boundary Value Analysis -BVA- y Combinatorial  (Pair wise) testing. Para nuestro ejemplo utilizaremos una mezcla de las anteriores técnicas.

 

Aplicaremos ECP al parámetro 1 filePath porque sabemos que puede ser cualquier cadena desde 4 hasta 256 caracteres de longitud; como pueden suponer lo peor que podemos hacer es 252 pruebas porque son equivalentes, por lo tanto solo probaremos con una cadena de 4 caracteres y una de 256, de forma positiva (es decir, que la cadena represente una ruta válida) y de forma negativa (que la cadena represente una ruta no válida). Así pues definimos los siguientes conjuntos: v1 (cualquier cadena válida desde 4 hasta 256 caracteres), i1  (cualquier cadena no válida desde 4 hasta 256 caracteres) y i2 (una cadena con valor NULL).

#

Parámetro

Datos

Ejemplo Datos

Comentario

1

filePath

v1

c:\tareas.txt

El archivo del ejemplo existe

2

filePath

i1

c:\taras.txt

El archivo del ejemplo NO existe

3

FilePath

i2

NULL

 

 

Ahora aplicamos la técnica BVA a todo lo que se trate de límites máximos y mínimos; en nuestra ejemplo conocemos los límites 4 y 256, por lo cual deberíamos probar el valor límite y una unidad por encima y por debajo, es decir cualquier valor válido de longitud 3, longitud 5, longitud 255 y longitud 257. La siguiente matriz de pruebas  resume lo anterior:

4

filePath

Longitud 3

No hay cargue.

c:\

 

5

filePath

Longitud 5

Cargue correcto.

c:\mi

El archivo del ejemplo existe

6

filePath

Longitud 255

Cargue correcto.

 Una cadena de 255

El archivo del ejemplo existe

7

filePath

Longitud 257

No hay cargue.

 Una cadena de 257

El archivo del ejemplo existe. 

 

Como todos los demás parámetros tienen valores predefinidos hacemos un conjunto de las posibles opciones que puede tomar cada parámetro:

mode: r, r+, rb, rb+

dwDesiredAccess: GENERIC_READ, GENERIC_READ | GENERIC_WRITE

dwCreationDisposition: PEN_EXISTING, OPEN_ALWAYS            
 
About these ads

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 234 seguidores

%d personas les gusta esto: