PROCEDIMIENTO PARA PRUEBA DE SOFTWARE · pica es aquella donde existen ciclos a más de un nivel...
Transcript of PROCEDIMIENTO PARA PRUEBA DE SOFTWARE · pica es aquella donde existen ciclos a más de un nivel...
![Page 1: PROCEDIMIENTO PARA PRUEBA DE SOFTWARE · pica es aquella donde existen ciclos a más de un nivel (ciclos anidados) y se usa la misma variable como control de ciclo. Es buena práctica](https://reader031.fdocumento.com/reader031/viewer/2022022621/5bb11afd09d3f281368c80c3/html5/thumbnails/1.jpg)
PROCEDIMIENTO PARAPRUEBA DESOFTWARE
MARIA EUGENIA VALENCIA DE ABADIA
Ingeniero Electricista de la Universidad del Valle. Magíster en Ingeniería Industrial y de Sistemas, Sistemasde la Universidad del Valle. Especialista en Diseño deSoftware de la Universidad Carolina del Sur U.S.A. Profesora del Departamento de Información y Sistemas dela Universidad del Valle.
INTRODUCCION
Este artículo presenta los procedimientos para realizar la prueba de aplicacioneso programas grandes de computador ydefine los términos asociados con lamisma.
Una de las metas de la Ingeniería deSoftware es aumentar el nivel de corrección del software de computador. Elpropósito de la prueba es dar una medidade la corrección de un programa.
La prueba es parte integral del ciclo dediseño y por tanto debe chequearse lacorrección del programa cuando éste seestá desarrollando.
DEFINICIONES
Si la prueba se diseña para descubrirdefectos, debemos definir el significado de"defecto" en el campo de la programacióny lo que ocurre cuando un defecto se encuentra durante la ejecución de un programa.
Existe un defecto en un ambiente, algoritmo o dato. cuando esa entidad no reunesus especificaciones.
Una falla puede resultar cuando persiste en mantener una entidad con un defecto. Cuando el sistema procesa una falla seda lugar a la aparición de comportamientos anormales que pueden identificarsecomo un error, una excepción, un comportamiento erróneo o un fracaso.
~~riit:~~~'·,. ~ /i!t~Jk~~ü,;;~·~!t,;;':S't~~~f;~;¿~)"'7
.~¿:~-6J~~,Z'f'''~~~1~~~; t~;~;'~~ii~i=~~-
![Page 2: PROCEDIMIENTO PARA PRUEBA DE SOFTWARE · pica es aquella donde existen ciclos a más de un nivel (ciclos anidados) y se usa la misma variable como control de ciclo. Es buena práctica](https://reader031.fdocumento.com/reader031/viewer/2022022621/5bb11afd09d3f281368c80c3/html5/thumbnails/2.jpg)
falla se detecta
- -error
defecto - - - > falla - - ~
,---1I 1- - - excepción
I rt..1 1- - -campo amiento erroneo---,
1- - -fracaso
falla no se detecta
El esquema anterior muestra la relaciónentre estos comportamientos anormales yel hecho de detectar o no la falla.
-Cuando el sistema encuentra una falla,la reconoce, y la maneja de tal forma queel procesamiento normal puede continuar, se dice que ocurre un error.
-Se tiene una excepción cuando el sistema encuentra una falla, la reconoce perono la puede manejar de forma que el procesamiento normal pueda continuar.
-Existe un comportamiento erróneocuando el sistema no detecta la falla yésta no causa una violación observablede sus especificaciones.
-Se tiene un fracaso cuando el sistemano detecta una falla y ésta causa unaviolación de las especificaciones.
Un intento de encontrar defectos ejecutando un programa en un ambiente deprueba (simulado) se denomina verificación.
Un intento de encontrar defectos ejecutando un programa en un ambiente real sedenomina validación.
INFORMACION FUNDAMENTAL
Debido a la gran complejidad de los programas de computador, ha sido imposiblehasta el momento presentar una técnicaestandarizada y razonable que permita dara las aplicaciones un buen nivel de corrección. Por tal razón es necesario utilizar unatécnica "negativa" de prueba, la cual noasegura que el programa sea correcto sino
que su propósito es localizar sus defectos.
Así, si un programa pasa todas las pruebas, eso no implica que esté libre de defectos, sólo que no se localizó ninguno. Es entonces esencial el que se diseñen cuidadosamente las pruebas para que sean lo máscompletas posibles.
Condiciones
Los procedimientos de prueba que aquíse presentan asumen ciertas condicionessobre los programas que van a probarse.Estas son:
a. Se asume que el programa tiene unaestructura jerárquica con módulos particionados funcionalmente y los módulos que no estén incluidos en ella deben aparecer claramente como primitivos.
b. El programa debe diseñarse, implementarse y probarse en la forma TOPDOWN. La implementación de cadamódulo debe seguir las técnicas estructuradas en el uso de estructurasde control. Los módulos no deben exceder en longitud, una página de listado de codificación.
c. El programa debe diseñarse de talforma que los parámetros explícitos seusen para pasar información entre módulos donde quiera sea posible, las variables globales sean modificadas solamente por un módulo (típicamenteun primitivo) y la estructura de losdatos debe ser presentada con elmayor nivel de detalle posible.
![Page 3: PROCEDIMIENTO PARA PRUEBA DE SOFTWARE · pica es aquella donde existen ciclos a más de un nivel (ciclos anidados) y se usa la misma variable como control de ciclo. Es buena práctica](https://reader031.fdocumento.com/reader031/viewer/2022022621/5bb11afd09d3f281368c80c3/html5/thumbnails/3.jpg)
Niveles de prueba
Los principales niveles son:
Prueba de Módulo (o unidad)Prueba la lógica del módulo como unidad solamente, sin importar su funcióndentro del programa.Prueba de IntegraciónPrueba la estructura del programa y elalgoritmo que el programa implementa.Prueba funcionalEfectúa \a verificación de una funcióndada del programa.Prueba del sistema y prueba deaceptación.Ambas involucran pruebas sobreel programa total. La primera intentaverificar que el programa cumple conlas especificaciones y se hace con datos de prueba. La segunda se hace condatos reales y prueba el programa contra los requerimientos. Es prácticamente una validación.
Prueba de InstalaciónEs la validación de una instalación particular del programa.Prueba de vidaEs la prueba de las necesidades quesatisface el programa, en ese momento, contra las necesidades originales.
Tipos de pruebas
Existen dos tipos de pruebas: las estáticas y las dinámicas.
Las pruebas estáticas son muy especificas y similares a las de revisión de la codificación y pueden hacerse sin necesidadde ejecutar el programa.
Las pruebas dinámicas toman comobase los resultados de la última ejecución ydeben realizarse después de las pruebasestáticas.Procedimientos de prueba
Debe seguirse la técnica TüP-DOWN,es decir que cuando cada nuevo módulose agregue al programa, éste se ejecutautilizando "etiquetas" en reemplazo de laverdadera codificación de cada uno de losdemás módulos de los niveles inferiores.Las "etiquetas" pueden ser por ejemplo,
instrucciones de impresión con el nombredel módulo que la contiene. Es muy importante que el programa se ejecute con unsolo módulo cada vez. Esto permite simplificar enormemente el proceso de detección de defectos pues ellos estarían necesariamente en el módulo nuevo que se estáprobando.
Procedimientos y técnicas generales
Los siguientes procedimientos y técnicas se aplican a todos los programas ypruebas:
a. Para probar los programas debe usarse siempre datos de entrada bien definidos para los cuales se conozca deantemano los resultados correctosque deben obtenerse.
b. Debe tratar de detectarse primero losdefectos "obvios" y para ello se utilizandatos de prueba muy simples y luegosí, realizar las pruebas más complejas.
c. Si el programa se modifica mientras seaprueba, CAMBIE UNA SOLA COSACADA VEZ Y utilice los mismos datosde prueba con que detectó el defecto.El defecto es corregido cuando al repetirse la prueba, el defecto ya no sedetecta.
d Debe probar su programa paraverificar si es capaz de detectar entradas incorrectas.
Procedimientos de pruebas estéticas
Los procedimientos de pruebas estáticas son importantísimos, pues permitendeterminar múltiples defectos y ubicarlosal mismo tiempo con pruebas sencillas tanto en la parte de declaraciones como en lasporciones ejecutables del programa.
Los procedimientos son:
a. Chequee el alcance de las variablespara ver si es factible reducirlo y evitar así posibles problemas. Esto facilitará la lectura del programa, pues ladeclaración de variables estaría lo máscerca posible del punto donde se usan.
b. Chequee el uso de las variables globales y si una variable global puede serreferenciada por más de un módulo,
![Page 4: PROCEDIMIENTO PARA PRUEBA DE SOFTWARE · pica es aquella donde existen ciclos a más de un nivel (ciclos anidados) y se usa la misma variable como control de ciclo. Es buena práctica](https://reader031.fdocumento.com/reader031/viewer/2022022621/5bb11afd09d3f281368c80c3/html5/thumbnails/4.jpg)
trátese en lo posible, que ella no seamodificada por más de uno.
c. Téngase especial cuidado con aquellas variables que son usadas en varios niveles. Asegúrese que estén definidas en cada nivel para que no se ori·ginen problemas. Una situación típica es aquella donde existen ciclos amás de un nivel (ciclos anidados) y seusa la misma variable como control deciclo. Es buena práctica usar nombresúnicos para cada ciclo.
d. Verifique si todas las variables tienenasignado algún valor inicial antes deser referenciadas.
e. Chequee si todos los arugmentos delos subprogramas o procedimientoscoinciden en número y tipo con losde las respectivas invocaciones.
f. Verifique que todas las estructuras derepetición tengan un mecanismo determinación bien definido.
Procedimientos de pruebas dlnjmlcas
El concepto básico de estas pruebasestá en empezar desde arriba trabajandohacia abajo y asumiendo que todos los módulos de los niveles inferiores trabajan correctamente. Así en cualquier momento seestará probando la codificación de UN SOLO módulo y las interfases con los otros. Elpunto de partida para las pruebas dinámicas es el programa principal con todos losprimitivos conocidos. Todos los módulosque sean invocados en el programa principal se reemplazan con "la etiqueta" correspondiente para después ir reemplazándolos uno a uno. Después de que cada módulo se reemplaza y se prueba sin que sedetecten defectos. se va añadiendo otro,preferiblemente en el orden en que son llamados por el programa y se repite el procedimiento para los niveles siguientes.
Como cada módulo en la jerarquia seprueba. se puede decir que el programa.tiene un buen nivel de corrección, cuandoya no se presente ningún defecto. Debetenerse en cuenta lo siguiente:
a. Deben probarse todos los primitivosindividualmente antes de usarse en elprograma y una vez probados insertar-
los en él y proceder a probar el programa principal.
b. Cuando ya estén integrados al programa todos los módulos del último nivelde la jerarquía, deben conservarse lasetiquetas que saquen por pantalla algún mensaje indicador de que esemódulo ya se alcanzó y además, a losargumentos de salida de cada módulodebe asignárseles algún valor para verificar si trabajan bien.
C. Deben hacerse las pruebas necesarias para chequear todas las posiblesalternativas que se presenten en cada'mÓdulo antes de probar el siguiente.
d. Trate de diseñar pruebas que en elcaso de presentarse un fracaso generen información sobre la naturaleza ylocalización del defecto.
e. En la búsqueda de defectos es recomendable usar "instrucciones de depuración" dentro del programa paraimprimir valores de variables o simplemente para verificar que se hallegado hasta cierto punto del programa y utilice por ejemplo algunamarca de comentario antes de cadauna de ellas para hacer más fácil su localización.
f. y por último, si después de detectarun defecto usted considera que todolo que ha estado haciendo está correcto y sinembargo su programa aún notrabaja, necesariamente UNA DE LASCOSAS QUE USTED CREE ESTABIEN, FALLA EN ALGO'
BIBLlOGRAFIA
1. Davis-Holfman, Fortran 77. Mc Graw Hill 1984. Pág. 88-91.
2. Grogono, Programación en Pascal. FondoEducativo Interamericano -1984. Pág 288302.
3. I Sommerville, Software Engineering.International Computer Science Series1982. Pág 152 - 180
4. Zelkowitz-Shaw-Gannon, Principies 01Software Engineering and Design. PrenticeHall - 1977. PáQ 7-9.27-30.89-99.
20ICESI