Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Los sistemas que han pasado por pruebas unitarias tienen un menor tiempo de
pruebas funcionales, este comportamiento es obvio, ya que las pruebas
unitarias nos permiten encontrar los errores ms evidentes y fciles de
corregir, en la etapa de pruebas funcionales el sistema debera estar bastante
estable y con muy pocos errores crticos. Si un sistema llega a la etapa de
pruebas funcionales con demasiados errores crticos y/o bloqueantes, se
debera devolver el sistema a la etapa de pruebas unitarias ya que resulta muy
poco productivo realizar pruebas funcionales con sistemas inestables, el
avance es demasiado lento y el analista de pruebas no podr apoyar mucho en
la resolucin de los errores ya que en esta etapa solo se centra la atencin en
las entradas y salidas, y no en la lgica intermedia, (Black Box Caja Negra).
Este tipo de pruebas debe ser realizado por personal especializado en Software
testing, el cual debe estar familiarizado en el uso de herramientas de
depuracin y pruebas, as mismo deben conocer el lenguaje de programacin
en el que se est desarrollando la aplicacin, en la actualidad existen una gran
cantidad de herramientas que apoyan la labor del analista de pruebas,
inclusive se pueden conseguir herramientas para cada tipo de lenguaje, estas
herramientas pueden facilitar el desarrollo de pruebas, elaboracin de casos
de pruebas, seguimiento de errores, etc. Algunas de las herramientas que se
utilizan para pruebas unitarias son: JUnit, La Suite de Mercury, CPPUnit etc.
El objetivo fundamental de las pruebas unitarias es asegurar el correcto
funcionamiento de las interfaces, o flujo de datos entre componentes.
No es un requisito indispensable la culminacin de todos los mdulos del
sistema para iniciar las pruebas, generalmente las pruebas modulares y las
pruebas integrales se solapan; en la actualidad algunas metodologas
consideran oportuno iniciar la etapa de pruebas unitarias poco despus del
desarrollo.
En esta imagen se muestra lo que se considera una representacin clsica de
Software Testing White Box o pruebas de caja blanca, en este tipo de pruebas
el cubo representara un sistema en donde se pueden observar los diversos
componentes que forman parte del mismo, cada uno de estos componentes
debe ser probado en su totalidad (valos), y tambin sus interfaces o
comunicaciones con los dems componentes (flechas), este tipo de pruebas
tambin son llamadas pruebas de caja de cristal ya que este ltimo termino
representa mejor el tipo de pruebas.
Lo importante en este tipo de pruebas es que se deben tener claros los
siguientes aspectos:
Los datos de entrada son conocidos por el Tester o Analista de Pruebas y estos
deben ser preparados con minuciosidad, ya que el resultado de las pruebas
dependen de estos.
Se debe conocer que componentes interactan en cada caso de prueba.
Se debe conocer de antemano que resultados debe devolver el componente
segn los datos de entrada utilizados en la prueba.
Finalmente se deben comparar los datos obtenidos en la prueba con los datos
esperados, si son idnticos podemos decir que el modulo supero la prueba y
empezamos con la siguiente.
Luego de tener una buena cantidad de mdulos independientes probados y
encontrados Conformes, el siguiente paso es integrarlos, las principales formas
de integracin que existen son:
Integracin Incremental.
Integracin no incremental.
Integracin Incremental
Al realizar una integracin incremental debemos combinar o unir el siguiente
mdulo que se debe probar con el conjunto de mdulos ya probados. El
nmero de mdulos se incrementa progresivamente hasta formar el programa
completo. Esto lo podemos realizar de 2 formas.
Integracin Incremental
Descendente.
Ascendente
la
Integracin
Incremental
Integracin No Incremental
La integracin no incremental es bastante sencilla y generalmente se
recomienda para proyectos de poca envergadura, la integracin consiste en
probar cada modulo por separado de manera similar a la intregacin
incremental pero una vez de terminar con los mdulos independientes, se
continua probandolos todos juntos como un todo.
La nica ventaja es que no se necesita ningn tipo de trabajo adicional: ni
planificar el orden de integracin, ni crear mdulos impulsores, ni crear
mdulos ficticios subordinados.
Por otro lado, la lista de desventajas incluye:
No se tiene nocin de la comunicacin de los mdulos hasta el final.
En ningn momento se dispone de un producto (ni siquiera parcial) para
mostrar o presentar.
El hecho de realizar todas las pruebas de una vez hace que las sesiones de
prueba sean largas y tediosas.
La cantidad de errores que arroje puede ser atemorizante.
La tarea de encontrar la causa de los errores resulta mucho ms compleja que
con los mtodos incrementales.
Se corre el riesgo de que a poco tiempo de que se cumpla el plazo de entrega,
haya que volver sobre el diseo y la codificacin del sistema.
Los casos de prueba nos permitirn probar todas las funcionalidades del
sistema, sin embargo es importante tener buen criterio a la hora de
desarrollarlos.
Las combinaciones de casos de prueba podran ser
prcticamente infinitas, propongo el siguiente ejemplo:
Si pensamos hacer casos funcionales para un sistema
encontraremos con una gran combinacin de variables:
bancario
nos
Para este ejemplo solo nos centraremos en un simple retiro bancario, en donde
nos encontraramos con las siguientes variables:
En qu tipo de cuenta haremos el cargo? Ahorros, Corriente, A Plazos
Esto nos dara al menos 3 variables o casos de prueba.
La cuenta tendr saldo? Saldo = 0, Saldo > 0, Saldo < 0
variables
2
2 variables
2 variables
5
1.En ventanilla
2.Cajero Automtico ATM
3.POS Pago de servicio o consumo
4.Home Bankin
Las pruebas que requieran clculos de diversos valores deberan tener pocos
casos pero muy extensos y complejos, alguna vez hice pruebas para un
sistema de bolsa de valores en donde se deberan calcular diversos campos
calculados, cada uno de ellos mostrado en un campo o grilla, el caso debe
especificar qu valor se espera en cada campo y una vez ejecutado el caso
constataremos que los datos que se presenten sean correctos, tanto en las
pantallas como en los reportes, jams he tenido la experiencia de encontrar un
sistema nuevo sin errores en sus clculos complejos El sistema nunca
funciona bien la primera vez. Ese es mi lema!
Por ltimo una muy buena recomendacin de pruebas es el manejo del valor
cero 0 muchas veces por la complejidad de los procesos el programador olvida
que este valor puede llegar a ser un divisor de otro valor y entonces: Error
Exception Faillure #afg99d7 - no valido o algn otro mensaje horrible.
Espero que con estas pequeas recomendaciones puedan ser capaces de
encontrar una gran cantidad de errores. Prximamente espero mejorar y crear
mejores artculos. No olviden que pueden escribirnos sobre cualquier consulta o
comentario.
Una vez con estos conceptos en mente ser ms sencillo sealar un par de
diferencias y relaciones entre ambos:
Las Pruebas de Software se realizan en una de las fases del ciclo de vida del
software; mientras que QA de software se deber ejecutar en todas las fases
(incluida la fase de Pruebas).
Las Pruebas de Software utilizarn Casos de Pruebas para ser ejecutados; en
cambio QA de software utilizar los estndares y procedimientos establecidos
para cada una de las fases del ciclo de vida del software.
Ambas permitirn verificar y afirmar la calidad del producto final, el software.
Ambas definen un conjunto de actividades a realizarse dentro del ciclo de vida
del software para mejorar y asegurar la calidad del mismo.
Este tema es sumamente amplio y en este artculo slo se ha tocado una
pequea parte de l, pero como se mencion inicialmente, QA y Pruebas de
Software son de los conceptos ms utilizados al hablar de Calidad de Software
as que hay que tenerlos siempre claros para saber cundo utilizarlos!
Que tal?, espero que bien y que algo de lo que te cuento te pueda estar
sirviendo o dndote una idea ms clara del asunto, bueno pues, hasta el
momento hemos dicho que debemos saber que hace el aplicativo y hemos
dado alguna pauta para empezar a crear nuestros casos de prueba, ahora bien
te cuento que personalmente al crear casos de prueba comienzo por los casos
correctos, es decir aquellos requerimientos que la aplicacin debe cumplir si o
si, y luego en base a estos cre casos de prueba incorrectos, es decir, aquellos
en los cules espero forzar a errores a la aplicacin y esperar una respuesta
adecuada pero incorrecta, por ejemplo si la aplicacin tiene como un
requerimiento enviar un email y para esto tenemos un campo donde ingresar
el email destino , si ponemos un email destino con un formato correcto y que
existe luego mandamos el mensaje esperando que este llegue a destino, si
esto sucede es un caso correcto, pero que pasa si escribimos el email destino
con un formato incorrecto o el email no existe y mandamos el mensaje que
debe hacer la aplicacin? Enviarlo y caerse al no encontrar el destino?, o en
otras palabras colgarse!!, sera muy decepcionante que esto suceda, en este
caso lo que deberamos esperar es que al mandar el mensaje de email, nos
aparezca una alerta, mensaje, etc. Cualquier tipo de comunicacin que nos
indique que el formato del email destino es incorrecto, o que el mensaje no se
pudo entregar porque el destino no existe, bueno pues ese es un caso de
prueba incorrecto pero si el resultado es la alerta esperada est bien.
En pocas palabras en la creacin de casos de prueba debemos aplicar la lgica
del usuario tonto, es decir, nos ponemos en la situacin de un usuario que va
Observaciones o comentarios
Analista de Pruebas (responsable de las pruebas)
Fecha de Ejecucin
Estado (concluido, pendiente, en proces
Pre requisitos
Resultado
esperado
Resultado
obtenido
Estado
CP001
VENTAS
Verificar que se
genere el archivo
de ventas
correctamente
OK
OK
Concluido
CP002
LOGISTICA
Verificar que se
- Ingresar datos
OK
graben los datos -Tener Permisos de
de ingreso en la lectura a la BD.
tabla Movimientos.
Pendiente
PM-QA
de
calidad en un estndar que desde el llano y como punto de partida sea muy
alto.