SlideShare une entreprise Scribd logo
1  sur  28
PRUEBAS DE SOFTWARE
 Pruebas de software son los procesos que permiten
verificar y revelar la calidad de un producto software.
 Las pruebas de software se integran dentro de las
diferentes fases del Ciclo del software dentro de la
Ingeniería de software.
 Así se ejecuta un programa y mediante técnicas
experimentales se trata de descubrir que errores tiene
Lic. Rodrigo Santiago Hernandez Hdez.
PRUEBAS DE SOFTWARE
 Para determinar el nivel de calidad se deben efectuar
unas medidas o pruebas que permitan comprobar el
grado de cumplimiento respecto de las especificaciones
iniciales del sistema.
 Las pruebas de software, testing o beta testing es un
proceso usado para identificar posibles fallos de
implementación, calidad, o usabilidad de un programa.
 Básicamente es una fase en el desarrollo de software
consistente en probar las aplicaciones construidas.
 "El testing puede probar la presencia de errores pero no
la ausencia de ellos", E. W. Dijkstra.
Lic. Rodrigo Santiago Hernandez Hdez.
PRUEBAS DE SOFTWARE
 Una definición de "testing" es:
 proceso de evaluación de un producto desde un punto
de vista crítico, donde el "tester" (persona que realiza
las pruebas) somete el producto a una serie de acciones
inquisitivas, y el producto responde con su
comportamiento como reacción.
 Por supuesto, nunca se debe testear el software en un
entorno de producción
Lic. Rodrigo Santiago Hernandez Hdez.
Tipos de pruebas
 Pruebas unitarias
 Pruebas funcionales
 Pruebas de Integración
 Pruebas de validación
 Pruebas de sistema
 Caja blanca (sistemas)
 Caja negra (sistemas)
 Pruebas de aceptación
 Pruebas de regresión
 Pruebas de carga
 Pruebas de prestaciones
 Pruebas de recorrido
 Pruebas de mutación
Lic. Rodrigo Santiago Hernandez Hdez.
Prueba Unitaria
 Prueba unitaria es una forma de probar el correcto
funcionamiento de un módulo de código.
 Esto sirve para asegurar que cada uno de los módulos
funcione correctamente por separado.
 La idea es escribir casos de prueba para cada función no
trivial o método en el módulo de forma que cada caso
sea independiente del resto.
Lic. Rodrigo Santiago Hernandez Hdez.
Prueba Unitaria
 Para que una prueba unitaria sea buena se deben
cumplir los siguientes requisitos:
 Automatizable: no debería requerirse una intervención
manual. Esto es especialmente útil para integración
continua.
 Completas: deben cubrir la mayor cantidad de código.
 Repetibles o Reutilizables: no se deben crear pruebas
que sólo puedan ser ejecutadas una sola vez. También
es útil para integración continua.
 Independientes: la ejecución de una prueba no debe
afectar a la ejecución de otra.
 Profesionales: las pruebas deben ser consideradas igual
que el código, con la misma profesionalidad,
documentación, etc.
 Aunque estos requisitos no tienen que ser cumplidos al
pie de la letra, se recomienda seguirlos o de lo
contrario las pruebas pierden parte de su función.
Lic. Rodrigo Santiago Hernandez Hdez.
Ventajas
 El objetivo de las pruebas unitarias es aislar cada parte del
programa y mostrar que las partes individuales son
correctas.
 Proporcionan un contrato escrito que el trozo de código
debe satisfacer. Estas pruebas aisladas proporcionan cinco
ventajas básicas:
 Fomentan el cambio: Las pruebas unitarias facilitan que el
programador cambie el código para mejorar su estructura,
puesto que permiten hacer pruebas sobre los cambios y así
asegurarse de que los nuevos cambios no han introducido
errores.
 Simplifica la integración: Puesto que permiten llegar a la
fase de integración con un grado alto de seguridad de que
el código está funcionando correctamente.
Lic. Rodrigo Santiago Hernandez Hdez.
Ventajas
 Documenta el código: Las propias pruebas son
documentación del código puesto que ahí se
puede ver cómo utilizarlo.
 Separación de la interfaz y la implementación:
Dado que la única interacción entre los casos de
prueba y las unidades bajo prueba son las
interfaces de estas últimas, se puede cambiar
cualquiera de los dos sin afectar al otro
 Los errores están más acotados y son más fáciles
de localizar: dado que tenemos pruebas unitarias
que pueden desenmascararlos.
Lic. Rodrigo Santiago Hernandez Hdez.
Pruebas funcionales
 Una prueba funcional es una prueba basada en la
ejecución, revisión y retroalimentación de las
funcionalidades previamente diseñadas para el
software.
 La pruebas funcionales se hacen mediante el diseño de
modelos de prueba que buscan evaluar cada una de las
opciones con las que cuenta el paquete informático.
Lic. Rodrigo Santiago Hernandez Hdez.
Pruebas integrales
 Pruebas integrales o pruebas de integración son aquellas
que se realizan en el ámbito del desarrollo de software una
vez que se han aprobado las pruebas unitarias.
 Únicamente se refieren a la prueba o pruebas de todos los
elementos unitarios que componen un proceso, hecha en
conjunto, de una sola vez.
 Consiste en realizar pruebas para verificar que un gran
conjunto de partes de software funcionan juntos.
 Las pruebas de integración (algunas veces llamadas
integración y testeo I&t) es la fase del testeo de software
en la cual módulos individuales de software son
combinados y testeados como un grupo.
 Son las pruebas posteriores a las pruebas unitarias y
preceden el testeo de sistema.
Lic. Rodrigo Santiago Hernandez Hdez.
Pruebas de validación
 Las pruebas de validación en la ingeniería de software son
el proceso de revisión que el sistema de software
producido cumple con las especificaciones y que cumple su
cometido.
 Es normalmente una parte del proceso de pruebas de
software de un proyecto, que también utiliza técnicas tales
como evaluaciones, inspecciones, y tutoriales.
 La validación es el proceso de comprobar lo que se ha
especificado es lo que el usuario realmente quería.
 Se trata de evaluar el sistema o parte de este durante o al
final del desarrollo para determinar si satisface los
requisitos iniciales.
 La pregunta a realizarse es: ¿Es esto lo que el cliente
quiere?.
Lic. Rodrigo Santiago Hernandez Hdez.
Caja blanca (sistemas)
 En programación, se denomina cajas blancas a un tipo de pruebas de
software que se realiza sobre las funciones internas de un módulo.
 Están dirigidas a las funciones internas.
 Entre las técnicas usadas se encuentran; la cobertura de caminos
(pruebas que hagan que se recorran todos los posibles caminos de
ejecución), pruebas sobre las expresiones lógico-aritméticas, pruebas
de camino de datos (definición-uso de variables), comprobación de
bucles (se verifican los bucles para 0,1 y n iteraciones, y luego para las
iteraciones máximas, máximas menos uno y más uno.
 Las pruebas de caja blanca se llevan a cabo en primer lugar, sobre un
módulo concreto,
 En los sistemas orientados a objetos, las pruebas de caja blanca pueden
aplicarse a los métodos de la clase, pero según varias opiniones, ese
esfuerzo debería dedicarse a otro tipo de pruebas más especializadas (
 Este concepto también es utilizado de manera análoga en la teoría
general de sistemas.
Lic. Rodrigo Santiago Hernandez Hdez.
Caja negra (sistemas)
 En teoría de sistemas y física, se denomina caja negra a
aquel elemento que es estudiado desde el punto de
vista de las entradas que recibe y las salidas o
respuestas que produce, sin tener en cuenta su
funcionamiento interno.
 En otras palabras, de una caja negra nos interesará su
forma de interactuar con el medio que le rodea (en
ocasiones, otros elementos que también podrían ser
cajas negras) entendiendo qué es lo que hace, pero sin
dar importancia a cómo lo hace.
 Por tanto, de una caja negra deben estar muy bien
definidas sus entradas y salidas, es decir, su interfaz; en
cambio, no se precisa definir ni conocer los detalles
internos de su funcionamiento.
Lic. Rodrigo Santiago Hernandez Hdez.
Pruebas de regresión
 Se denominan Pruebas de regresión a cualquier tipo de
pruebas de software que intentan descubrir las causas de
nuevos errores (bugs), carencias de funcionalidad, o
divergencias funcionales con respecto al comportamiento
esperado del software, inducidos por cambios
recientemente realizados en partes de la aplicación que
anteriormente al citado cambio no eran propensas a este
tipo de error.
 Esto implica que el error tratado se reproduce como
consecuencia inesperada del citado cambio en el
programa.
 Este tipo de cambio puede ser debido a prácticas no
adecuadas de control de versiones, falta de consideración
acerca del ámbito o contexto de producción final y
extensibilidad del error que fue corregido (fragilidad de la
corrección), o simplemente una consecuencia del rediseño
de la aplicación.
Lic. Rodrigo Santiago Hernandez Hdez.
Pruebas de regresión
 Por lo tanto, en la mayoría de las situaciones del
desarrollo de software se considera una buena práctica
que cuando se localiza y corrige un bug, se grabe una
prueba que exponga el bug y se vuelvan a probar
regularmente después de los cambios subsiguientes que
experimente el programa.
 Existen herramientas de software que permiten
detectar este tipo de errores de manera parcial o
totalmente automatizada, la práctica habitual en
programación extrema es que este tipo de pruebas se
ejecuten en cada uno de los pasos del ciclo de vida del
desarrollo del software.
Lic. Rodrigo Santiago Hernandez Hdez.
Tipos de regresión
 Clasificación de ámbito
 Local - los cambios introducen nuevos errores.
 Desenmascarada - los cambios revelan errores previos.
 Remota - Los cambios vinculan algunas partes del
programa (módulo) e introducen errores en ella.
 Clasificación temporal
 Nueva característica - los cambios realizados con respecto
a nuevas funcionalidades en la versión introducen errores
en otras novedades en la misma versión del software.
 Característica preexistente - los cambios realizados con
respecto a nuevas funcionalidades introducen errores en
funcionalidad existente de previas versiones.
Lic. Rodrigo Santiago Hernandez Hdez.
Caso de prueba
 En Ingeniería del software, los casos de prueba o Test
Case son un conjunto de condiciones o variables bajo las
cuáles el analista determinará si el requisito de una
aplicación es parcial o completamente satisfactorio.
 Se pueden realizar muchos casos de prueba para
determinar que un requisito es completamente
satisfactorio. Con el propósito de comprobar que todos los
requisitos de una aplicación son revisados, debe haber al
menos un caso de prueba para cada requisito a menos que
un requisito tenga requisitos secundarios. En ese caso,
cada requisito secundario deberá tener por lo menos un
caso de prueba.
 Algunas metodologías como RUP recomiendan el crear por
lo menos dos casos de prueba para cada requisito. Uno de
ellos debe realizar la prueba positiva de los requisitos y el
otro debe realizar la prueba negativa.
Lic. Rodrigo Santiago Hernandez Hdez.
Caso de prueba
 Si la aplicación es creada sin requisitos
formales, entonces los casos de prueba se
escriben basados en la operación normal
de programas de una clase similar.
 Lo que caracteriza un escrito formal de
caso de prueba es que hay una entrada
conocida y una salida esperada, los cuales
son formulados antes de que se ejecute la
prueba. La entrada conocida debe probar
una precondición y la salida esperada
debe probar una postcondición.
Lic. Rodrigo Santiago Hernandez Hdez.
Caso de prueba
 La entrada conocida debe probar una precondición y la
salida esperada debe probar una postcondición.
 Bajo circunstancias especiales, podría haber la necesidad
de ejecutar la prueba, producir resultados, y luego un
equipo de expertos evaluaría si los resultados se pueden
considerar como "Correctos".
 Esto sucede a menudo en la determinación del número del
rendimiento de productos nuevos. La primera prueba se
toma como línea base para los subsecuentes ciclos de
pruebas/lanzamiento del producto.
 Los casos de prueba escritos, incluyen una descripción de
la funcionalidad que se probará, la cuál es tomada ya sea
de los requisitos o de los casos de uso, y la preparación
requerida para asegurarse de que la prueba pueda ser
dirigida.
Lic. Rodrigo Santiago Hernandez Hdez.
Caso de prueba
 Los casos de prueba escritos se recogen
generalmente en una suite de pruebas.
 Las variaciones de los casos de prueba son
comúnmente utilizados en pruebas de
aceptación.
 La prueba de aceptación es realizada por un
grupo de usuarios finales o los clientes del
sistema, para asegurarse que el sistema
desarrollado cumple sus requisitos. La prueba
de aceptación de usuario se distingue
generalmente por la incorporación de un
trayecto feliz o casos de prueba positivos.
Lic. Rodrigo Santiago Hernandez Hdez.
Estructura de los casos de
prueba
 Formalmente, los casos de prueba escritos consisten
principalmente en tres partes con subdivisiones:
 Introducción/visión general contiene información general
acerca de los Casos de Prueba.
 Identificador es un identificador único para futuras
referencias, por ejemplo, mientras se describe un
defecto encontrado.
 Caso de prueba dueño/creador es el nombre del
analista o diseñador de pruebas, quien ha desarrollado
pruebas o es responsable de su desarrollo.
 Versión la actual definición del caso de prueba.
 Nombre el caso de prueba debe ser un título
entendible por personas, para la fácil comprensión del
propósito del caso de prueba y su campo de aplicación.
Lic. Rodrigo Santiago Hernandez Hdez.
Estructura de los casos de
prueba
 Identificador de requerimientos el cuál está incluido
por el caso de prueba. También aquí puede ser
identificador de casos de uso o especificación
funcional.
 Propósito contiene una breve descripción del propósito
de la prueba, y la funcionalidad que chequea.
 Dependencias
 Actividad de los casos de prueba
 Ambiente de prueba/configuración contiene
información acerca de la configuración del hardware o
software en el cuál se ejecutará el caso de prueba.
 Inicialización describe acciones, que deben ser
ejecutadas antes de que los casos de prueba se hayan
inicializado. Por ejemplo, debemos abrir algún archivo.
Lic. Rodrigo Santiago Hernandez Hdez.
Estructura de los casos de
prueba
 Finalización describe acciones, que deben ser ejecutadas después
de realizado el caso de prueba. Por ejemplo si el caso de prueba
estropea la base de datos, el analista debe restaurarla antes de
que otro caso de prueba sea ejecutado.
 Acciones pasos a realizar para completar la prueba.
 Descripción de los datos de entrada
 Resultados
 Resultados esperados contiene una descripción de lo que el
analista debería ver tras haber completado todos los pasos de la
prueba
 Resultados reales contienen una breve descripción de lo que el
analista encuentra después de que los pasos de prueba se hayan
completado. Esto se sustituye a menudo con un Correcto/Fallido.
Si un caso de prueba falla, frecuentemente la referencia al defecto
implicado se debe enumerar en esta columna.
Lic. Rodrigo Santiago Hernandez Hdez.
Desarrollo guiado por
pruebas
 Desarrollo guiado por pruebas, o Test-driven development (TDD)
es una práctica de programación que involucra otras dos prácticas:
Escribir las pruebas primero (Test First Development) y
Refactorización (Refactoring).
 Para escribir las pruebas generalmente se utilizan las pruebas
unitarias (unit test en inglés).
 Primeros e escribe una prueba y se verifica que las pruebas fallen,
luego se implementa el código que haga que la prueba pase
satisfactoriamente y seguidamente se refactoriza el código escrito.
 El propósito del desarrollo guiado por pruebas es lograr un código
limpio que funcione (Del inglés: Clean code that works).
 La idea es que los requerimientos sean traducidos a pruebas, de
este modo, cuando las pruebas pasen se garantizará que los
requerimientos se hayan implementado correctamente.
Lic. Rodrigo Santiago Hernandez Hdez.
Ciclo De Desarrollo
Conducido por Pruebas
 Antes de comenzar el ciclo se debe definir una lista de
requerimientos. Luego se comienza el siguiente ciclo:
 Elegir un requerimiento: Se elige de una lista el requrimiento que
se cree que nos dará mayor conocimiento del problema y que a la
vez sea fácilmente implementable.
 Escribir una prueba: Se comienza escribiendo una prueba para el
requerimiento. Para ello el programador debe entender
claramente las especificaciones y los requisitos de la funcionalidad
que está por implementar. Este paso fuerza al programador a
tomar la perspectiva de un cliente considerando el código a través
de sus interfaces.
 Verificar que la prueba falla: Si la prueba no falla es porque el
requerimiento ya estaba implementado o porque la prueba es
errónea.
 Escribir la implementación: Escribir el código más sencillo que
haga que la prueba funcione. Se usa la metáfora "Déjelo simple"
("Keep It Simple, Stupid" (KISS)).
Lic. Rodrigo Santiago Hernandez Hdez.
Ciclo De Desarrollo
Conducido por Pruebas
 Ejecutar las pruebas automatizadas: Verificar si
todo el conjunto de pruebas funciona correctamente.
 Eliminación de duplicación: El paso final es la
refactorización, que se utilizará principalemente
para eliminar código duplicado. Se hacen de a una
vez un pequeño cambio y luego se corren las pruebas
hasta que funcionen.
 Actualización de la lista de requerimientos: Se
actualiza la lista de requerimientos tachando el
requerimiento implementado. Asimismo se agregan
requerimientos que se hayan visto como necesarios
durante este ciclo y se se agregan requerimientos de
diseño (P. ej que una funcionalidad esté desacoplada
de otra).
Lic. Rodrigo Santiago Hernandez Hdez.
Características
 Una ventaja de esta forma de programación es el evitar
escribir código innecesario. Se intenta escribir el mínimo
código posible, y si el código pasa una prueba aunque
sepamos que es incorrecto nos da una idea de que tenemos
que modificar nuestra lista de requerimientos agregando
uno nuevo.
 La generación de pruebas para cada funcionalidad hace
que el programador confíe en el código escrito. Esto
permite hacer modificaciones profundas del código
(posiblemente en una etapa de mantenimiento del
programa) pues sabemos que si luego logramos hacer pasar
todas las pruebas tendremos un código que funcione
correctamente.
 Otra característica del Test Driven Development requiere
que el programador primero haga fallar los casos de
prueba. La idea es asegurarse de que los casos de prueba
realmente funcionen y puedan recoger un error.
Lic. Rodrigo Santiago Hernandez Hdez.
Referencias
 Bauer, F. (1979). A Trend for the Next 10 Years of
Software Engineering, Software Engineering. Academic
Press: Ed. H. Freeman, P.M. Lewis.
 Boehm, B. W. (1981). Software Engineering Economics.
Prentice-Hal.
 Booch, G. (1991). Object Oriented Design with
Applications. Redwood City: CA. Benjamming-Cummings.
 Brooks, F. (1975). The Mythical Man-Month. Addison
Wesley: 2ª edición en 1995.
 Budde, R. K. (1992). Prototyping: An approach to
Evolutionary System Development. Springer Verlag.
 Hall, A. (septiembre 1990). Seven Myths of Formal Methods
IEEE Softwar. Academic Press.
Lic. Rodrigo Santiago Hernandez Hdez.

Contenu connexe

Tendances

Fundamentos del Diseño de Software
Fundamentos del Diseño de SoftwareFundamentos del Diseño de Software
Fundamentos del Diseño de SoftwareNelson Guanipa
 
Diagrama de interaccion(secuencia y colaboracion)
Diagrama de interaccion(secuencia y colaboracion)Diagrama de interaccion(secuencia y colaboracion)
Diagrama de interaccion(secuencia y colaboracion)marianela0393
 
Ventajas y desventajas de cmmi
Ventajas y desventajas de cmmiVentajas y desventajas de cmmi
Ventajas y desventajas de cmmiSandrea Rodriguez
 
4. Diseño e Implementación de Software
4. Diseño e Implementación de Software4. Diseño e Implementación de Software
4. Diseño e Implementación de SoftwareMario A Moreno Rocha
 
Testing Software
Testing SoftwareTesting Software
Testing Softwareodelorenzi
 
Aseguramiento de la Calidad del Software II
Aseguramiento de la Calidad del Software IIAseguramiento de la Calidad del Software II
Aseguramiento de la Calidad del Software IITensor
 
Taller casos de prueba
Taller casos de pruebaTaller casos de prueba
Taller casos de pruebaAndrés Grosso
 
25 Estandares - IEEE Calidad de Software
25 Estandares - IEEE Calidad de Software25 Estandares - IEEE Calidad de Software
25 Estandares - IEEE Calidad de SoftwareCamila Arbelaez
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMicky Jerzy
 
Presentacion fase de lanzamiento tsp
Presentacion fase de lanzamiento tspPresentacion fase de lanzamiento tsp
Presentacion fase de lanzamiento tsplagh
 
Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema Lis Pater
 
tipos de pruebas.
tipos de pruebas.tipos de pruebas.
tipos de pruebas.Juan Ravi
 
Ventajas y desventajas de moprosoft
Ventajas y desventajas de moprosoftVentajas y desventajas de moprosoft
Ventajas y desventajas de moprosoftChuyito Alvarado
 
Metodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliudMetodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliudEliud Cortes
 
Modelado de requisitos
Modelado de requisitosModelado de requisitos
Modelado de requisitosKleo Jorgee
 
Calidad del software
Calidad del softwareCalidad del software
Calidad del softwareReivaj Sagarv
 

Tendances (20)

Fundamentos del Diseño de Software
Fundamentos del Diseño de SoftwareFundamentos del Diseño de Software
Fundamentos del Diseño de Software
 
Diagrama de interaccion(secuencia y colaboracion)
Diagrama de interaccion(secuencia y colaboracion)Diagrama de interaccion(secuencia y colaboracion)
Diagrama de interaccion(secuencia y colaboracion)
 
Ventajas y desventajas de cmmi
Ventajas y desventajas de cmmiVentajas y desventajas de cmmi
Ventajas y desventajas de cmmi
 
4. Diseño e Implementación de Software
4. Diseño e Implementación de Software4. Diseño e Implementación de Software
4. Diseño e Implementación de Software
 
Testing Software
Testing SoftwareTesting Software
Testing Software
 
Aseguramiento de la Calidad del Software II
Aseguramiento de la Calidad del Software IIAseguramiento de la Calidad del Software II
Aseguramiento de la Calidad del Software II
 
Taller casos de prueba
Taller casos de pruebaTaller casos de prueba
Taller casos de prueba
 
25 Estandares - IEEE Calidad de Software
25 Estandares - IEEE Calidad de Software25 Estandares - IEEE Calidad de Software
25 Estandares - IEEE Calidad de Software
 
Diapositivas xp
Diapositivas xpDiapositivas xp
Diapositivas xp
 
tecnicas de revisión del software
tecnicas de revisión del softwaretecnicas de revisión del software
tecnicas de revisión del software
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWARE
 
Presentacion fase de lanzamiento tsp
Presentacion fase de lanzamiento tspPresentacion fase de lanzamiento tsp
Presentacion fase de lanzamiento tsp
 
Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema
 
tipos de pruebas.
tipos de pruebas.tipos de pruebas.
tipos de pruebas.
 
Ventajas y desventajas de moprosoft
Ventajas y desventajas de moprosoftVentajas y desventajas de moprosoft
Ventajas y desventajas de moprosoft
 
Metodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliudMetodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliud
 
Gestión de la Calidad en Proyectos de Software
Gestión de la Calidad en Proyectos de SoftwareGestión de la Calidad en Proyectos de Software
Gestión de la Calidad en Proyectos de Software
 
Modelado de requisitos
Modelado de requisitosModelado de requisitos
Modelado de requisitos
 
Calidad del software
Calidad del softwareCalidad del software
Calidad del software
 
Iso 25000
Iso 25000Iso 25000
Iso 25000
 

Similaire à Act 4.3 pruebas de software

Similaire à Act 4.3 pruebas de software (20)

La auditoría de software
La auditoría de softwareLa auditoría de software
La auditoría de software
 
La auditoría de software
La auditoría de softwareLa auditoría de software
La auditoría de software
 
La auditoría de software
La auditoría de softwareLa auditoría de software
La auditoría de software
 
La auditoría de software
La auditoría de softwareLa auditoría de software
La auditoría de software
 
Pruebas
PruebasPruebas
Pruebas
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Pruebas De Software
Pruebas De SoftwarePruebas De Software
Pruebas De Software
 
Pruebas(clase3 4)
Pruebas(clase3 4)Pruebas(clase3 4)
Pruebas(clase3 4)
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Epa aqui
Epa aquiEpa aqui
Epa aqui
 
Fundamento pruebas Ingeniería del software
Fundamento pruebas Ingeniería del softwareFundamento pruebas Ingeniería del software
Fundamento pruebas Ingeniería del software
 
Actividad Individual.pptx
Actividad Individual.pptxActividad Individual.pptx
Actividad Individual.pptx
 
Metodologías Aágiles: TDD (Test Driven development)
Metodologías Aágiles: TDD (Test Driven development)Metodologías Aágiles: TDD (Test Driven development)
Metodologías Aágiles: TDD (Test Driven development)
 
S5-CDSQA.pptx
S5-CDSQA.pptxS5-CDSQA.pptx
S5-CDSQA.pptx
 
Pruebas unitarias
Pruebas unitariasPruebas unitarias
Pruebas unitarias
 
Mapa conseptual tipos de pruebas.
Mapa conseptual tipos de pruebas.Mapa conseptual tipos de pruebas.
Mapa conseptual tipos de pruebas.
 
Auditoria ii
Auditoria iiAuditoria ii
Auditoria ii
 
Prubea de software
Prubea de softwarePrubea de software
Prubea de software
 
Vuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdfVuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdf
 
6.redes pruebas de software
6.redes pruebas de software6.redes pruebas de software
6.redes pruebas de software
 

Dernier

TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armadob7fwtwtfxf
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaYeimys Ch
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nóminacuellosameidy
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y maslida630411
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 

Dernier (20)

TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armado
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nómina
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y mas
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 

Act 4.3 pruebas de software

  • 1. PRUEBAS DE SOFTWARE  Pruebas de software son los procesos que permiten verificar y revelar la calidad de un producto software.  Las pruebas de software se integran dentro de las diferentes fases del Ciclo del software dentro de la Ingeniería de software.  Así se ejecuta un programa y mediante técnicas experimentales se trata de descubrir que errores tiene Lic. Rodrigo Santiago Hernandez Hdez.
  • 2. PRUEBAS DE SOFTWARE  Para determinar el nivel de calidad se deben efectuar unas medidas o pruebas que permitan comprobar el grado de cumplimiento respecto de las especificaciones iniciales del sistema.  Las pruebas de software, testing o beta testing es un proceso usado para identificar posibles fallos de implementación, calidad, o usabilidad de un programa.  Básicamente es una fase en el desarrollo de software consistente en probar las aplicaciones construidas.  "El testing puede probar la presencia de errores pero no la ausencia de ellos", E. W. Dijkstra. Lic. Rodrigo Santiago Hernandez Hdez.
  • 3. PRUEBAS DE SOFTWARE  Una definición de "testing" es:  proceso de evaluación de un producto desde un punto de vista crítico, donde el "tester" (persona que realiza las pruebas) somete el producto a una serie de acciones inquisitivas, y el producto responde con su comportamiento como reacción.  Por supuesto, nunca se debe testear el software en un entorno de producción Lic. Rodrigo Santiago Hernandez Hdez.
  • 4. Tipos de pruebas  Pruebas unitarias  Pruebas funcionales  Pruebas de Integración  Pruebas de validación  Pruebas de sistema  Caja blanca (sistemas)  Caja negra (sistemas)  Pruebas de aceptación  Pruebas de regresión  Pruebas de carga  Pruebas de prestaciones  Pruebas de recorrido  Pruebas de mutación Lic. Rodrigo Santiago Hernandez Hdez.
  • 5. Prueba Unitaria  Prueba unitaria es una forma de probar el correcto funcionamiento de un módulo de código.  Esto sirve para asegurar que cada uno de los módulos funcione correctamente por separado.  La idea es escribir casos de prueba para cada función no trivial o método en el módulo de forma que cada caso sea independiente del resto. Lic. Rodrigo Santiago Hernandez Hdez.
  • 6. Prueba Unitaria  Para que una prueba unitaria sea buena se deben cumplir los siguientes requisitos:  Automatizable: no debería requerirse una intervención manual. Esto es especialmente útil para integración continua.  Completas: deben cubrir la mayor cantidad de código.  Repetibles o Reutilizables: no se deben crear pruebas que sólo puedan ser ejecutadas una sola vez. También es útil para integración continua.  Independientes: la ejecución de una prueba no debe afectar a la ejecución de otra.  Profesionales: las pruebas deben ser consideradas igual que el código, con la misma profesionalidad, documentación, etc.  Aunque estos requisitos no tienen que ser cumplidos al pie de la letra, se recomienda seguirlos o de lo contrario las pruebas pierden parte de su función. Lic. Rodrigo Santiago Hernandez Hdez.
  • 7. Ventajas  El objetivo de las pruebas unitarias es aislar cada parte del programa y mostrar que las partes individuales son correctas.  Proporcionan un contrato escrito que el trozo de código debe satisfacer. Estas pruebas aisladas proporcionan cinco ventajas básicas:  Fomentan el cambio: Las pruebas unitarias facilitan que el programador cambie el código para mejorar su estructura, puesto que permiten hacer pruebas sobre los cambios y así asegurarse de que los nuevos cambios no han introducido errores.  Simplifica la integración: Puesto que permiten llegar a la fase de integración con un grado alto de seguridad de que el código está funcionando correctamente. Lic. Rodrigo Santiago Hernandez Hdez.
  • 8. Ventajas  Documenta el código: Las propias pruebas son documentación del código puesto que ahí se puede ver cómo utilizarlo.  Separación de la interfaz y la implementación: Dado que la única interacción entre los casos de prueba y las unidades bajo prueba son las interfaces de estas últimas, se puede cambiar cualquiera de los dos sin afectar al otro  Los errores están más acotados y son más fáciles de localizar: dado que tenemos pruebas unitarias que pueden desenmascararlos. Lic. Rodrigo Santiago Hernandez Hdez.
  • 9. Pruebas funcionales  Una prueba funcional es una prueba basada en la ejecución, revisión y retroalimentación de las funcionalidades previamente diseñadas para el software.  La pruebas funcionales se hacen mediante el diseño de modelos de prueba que buscan evaluar cada una de las opciones con las que cuenta el paquete informático. Lic. Rodrigo Santiago Hernandez Hdez.
  • 10. Pruebas integrales  Pruebas integrales o pruebas de integración son aquellas que se realizan en el ámbito del desarrollo de software una vez que se han aprobado las pruebas unitarias.  Únicamente se refieren a la prueba o pruebas de todos los elementos unitarios que componen un proceso, hecha en conjunto, de una sola vez.  Consiste en realizar pruebas para verificar que un gran conjunto de partes de software funcionan juntos.  Las pruebas de integración (algunas veces llamadas integración y testeo I&t) es la fase del testeo de software en la cual módulos individuales de software son combinados y testeados como un grupo.  Son las pruebas posteriores a las pruebas unitarias y preceden el testeo de sistema. Lic. Rodrigo Santiago Hernandez Hdez.
  • 11. Pruebas de validación  Las pruebas de validación en la ingeniería de software son el proceso de revisión que el sistema de software producido cumple con las especificaciones y que cumple su cometido.  Es normalmente una parte del proceso de pruebas de software de un proyecto, que también utiliza técnicas tales como evaluaciones, inspecciones, y tutoriales.  La validación es el proceso de comprobar lo que se ha especificado es lo que el usuario realmente quería.  Se trata de evaluar el sistema o parte de este durante o al final del desarrollo para determinar si satisface los requisitos iniciales.  La pregunta a realizarse es: ¿Es esto lo que el cliente quiere?. Lic. Rodrigo Santiago Hernandez Hdez.
  • 12. Caja blanca (sistemas)  En programación, se denomina cajas blancas a un tipo de pruebas de software que se realiza sobre las funciones internas de un módulo.  Están dirigidas a las funciones internas.  Entre las técnicas usadas se encuentran; la cobertura de caminos (pruebas que hagan que se recorran todos los posibles caminos de ejecución), pruebas sobre las expresiones lógico-aritméticas, pruebas de camino de datos (definición-uso de variables), comprobación de bucles (se verifican los bucles para 0,1 y n iteraciones, y luego para las iteraciones máximas, máximas menos uno y más uno.  Las pruebas de caja blanca se llevan a cabo en primer lugar, sobre un módulo concreto,  En los sistemas orientados a objetos, las pruebas de caja blanca pueden aplicarse a los métodos de la clase, pero según varias opiniones, ese esfuerzo debería dedicarse a otro tipo de pruebas más especializadas (  Este concepto también es utilizado de manera análoga en la teoría general de sistemas. Lic. Rodrigo Santiago Hernandez Hdez.
  • 13. Caja negra (sistemas)  En teoría de sistemas y física, se denomina caja negra a aquel elemento que es estudiado desde el punto de vista de las entradas que recibe y las salidas o respuestas que produce, sin tener en cuenta su funcionamiento interno.  En otras palabras, de una caja negra nos interesará su forma de interactuar con el medio que le rodea (en ocasiones, otros elementos que también podrían ser cajas negras) entendiendo qué es lo que hace, pero sin dar importancia a cómo lo hace.  Por tanto, de una caja negra deben estar muy bien definidas sus entradas y salidas, es decir, su interfaz; en cambio, no se precisa definir ni conocer los detalles internos de su funcionamiento. Lic. Rodrigo Santiago Hernandez Hdez.
  • 14. Pruebas de regresión  Se denominan Pruebas de regresión a cualquier tipo de pruebas de software que intentan descubrir las causas de nuevos errores (bugs), carencias de funcionalidad, o divergencias funcionales con respecto al comportamiento esperado del software, inducidos por cambios recientemente realizados en partes de la aplicación que anteriormente al citado cambio no eran propensas a este tipo de error.  Esto implica que el error tratado se reproduce como consecuencia inesperada del citado cambio en el programa.  Este tipo de cambio puede ser debido a prácticas no adecuadas de control de versiones, falta de consideración acerca del ámbito o contexto de producción final y extensibilidad del error que fue corregido (fragilidad de la corrección), o simplemente una consecuencia del rediseño de la aplicación. Lic. Rodrigo Santiago Hernandez Hdez.
  • 15. Pruebas de regresión  Por lo tanto, en la mayoría de las situaciones del desarrollo de software se considera una buena práctica que cuando se localiza y corrige un bug, se grabe una prueba que exponga el bug y se vuelvan a probar regularmente después de los cambios subsiguientes que experimente el programa.  Existen herramientas de software que permiten detectar este tipo de errores de manera parcial o totalmente automatizada, la práctica habitual en programación extrema es que este tipo de pruebas se ejecuten en cada uno de los pasos del ciclo de vida del desarrollo del software. Lic. Rodrigo Santiago Hernandez Hdez.
  • 16. Tipos de regresión  Clasificación de ámbito  Local - los cambios introducen nuevos errores.  Desenmascarada - los cambios revelan errores previos.  Remota - Los cambios vinculan algunas partes del programa (módulo) e introducen errores en ella.  Clasificación temporal  Nueva característica - los cambios realizados con respecto a nuevas funcionalidades en la versión introducen errores en otras novedades en la misma versión del software.  Característica preexistente - los cambios realizados con respecto a nuevas funcionalidades introducen errores en funcionalidad existente de previas versiones. Lic. Rodrigo Santiago Hernandez Hdez.
  • 17. Caso de prueba  En Ingeniería del software, los casos de prueba o Test Case son un conjunto de condiciones o variables bajo las cuáles el analista determinará si el requisito de una aplicación es parcial o completamente satisfactorio.  Se pueden realizar muchos casos de prueba para determinar que un requisito es completamente satisfactorio. Con el propósito de comprobar que todos los requisitos de una aplicación son revisados, debe haber al menos un caso de prueba para cada requisito a menos que un requisito tenga requisitos secundarios. En ese caso, cada requisito secundario deberá tener por lo menos un caso de prueba.  Algunas metodologías como RUP recomiendan el crear por lo menos dos casos de prueba para cada requisito. Uno de ellos debe realizar la prueba positiva de los requisitos y el otro debe realizar la prueba negativa. Lic. Rodrigo Santiago Hernandez Hdez.
  • 18. Caso de prueba  Si la aplicación es creada sin requisitos formales, entonces los casos de prueba se escriben basados en la operación normal de programas de una clase similar.  Lo que caracteriza un escrito formal de caso de prueba es que hay una entrada conocida y una salida esperada, los cuales son formulados antes de que se ejecute la prueba. La entrada conocida debe probar una precondición y la salida esperada debe probar una postcondición. Lic. Rodrigo Santiago Hernandez Hdez.
  • 19. Caso de prueba  La entrada conocida debe probar una precondición y la salida esperada debe probar una postcondición.  Bajo circunstancias especiales, podría haber la necesidad de ejecutar la prueba, producir resultados, y luego un equipo de expertos evaluaría si los resultados se pueden considerar como "Correctos".  Esto sucede a menudo en la determinación del número del rendimiento de productos nuevos. La primera prueba se toma como línea base para los subsecuentes ciclos de pruebas/lanzamiento del producto.  Los casos de prueba escritos, incluyen una descripción de la funcionalidad que se probará, la cuál es tomada ya sea de los requisitos o de los casos de uso, y la preparación requerida para asegurarse de que la prueba pueda ser dirigida. Lic. Rodrigo Santiago Hernandez Hdez.
  • 20. Caso de prueba  Los casos de prueba escritos se recogen generalmente en una suite de pruebas.  Las variaciones de los casos de prueba son comúnmente utilizados en pruebas de aceptación.  La prueba de aceptación es realizada por un grupo de usuarios finales o los clientes del sistema, para asegurarse que el sistema desarrollado cumple sus requisitos. La prueba de aceptación de usuario se distingue generalmente por la incorporación de un trayecto feliz o casos de prueba positivos. Lic. Rodrigo Santiago Hernandez Hdez.
  • 21. Estructura de los casos de prueba  Formalmente, los casos de prueba escritos consisten principalmente en tres partes con subdivisiones:  Introducción/visión general contiene información general acerca de los Casos de Prueba.  Identificador es un identificador único para futuras referencias, por ejemplo, mientras se describe un defecto encontrado.  Caso de prueba dueño/creador es el nombre del analista o diseñador de pruebas, quien ha desarrollado pruebas o es responsable de su desarrollo.  Versión la actual definición del caso de prueba.  Nombre el caso de prueba debe ser un título entendible por personas, para la fácil comprensión del propósito del caso de prueba y su campo de aplicación. Lic. Rodrigo Santiago Hernandez Hdez.
  • 22. Estructura de los casos de prueba  Identificador de requerimientos el cuál está incluido por el caso de prueba. También aquí puede ser identificador de casos de uso o especificación funcional.  Propósito contiene una breve descripción del propósito de la prueba, y la funcionalidad que chequea.  Dependencias  Actividad de los casos de prueba  Ambiente de prueba/configuración contiene información acerca de la configuración del hardware o software en el cuál se ejecutará el caso de prueba.  Inicialización describe acciones, que deben ser ejecutadas antes de que los casos de prueba se hayan inicializado. Por ejemplo, debemos abrir algún archivo. Lic. Rodrigo Santiago Hernandez Hdez.
  • 23. Estructura de los casos de prueba  Finalización describe acciones, que deben ser ejecutadas después de realizado el caso de prueba. Por ejemplo si el caso de prueba estropea la base de datos, el analista debe restaurarla antes de que otro caso de prueba sea ejecutado.  Acciones pasos a realizar para completar la prueba.  Descripción de los datos de entrada  Resultados  Resultados esperados contiene una descripción de lo que el analista debería ver tras haber completado todos los pasos de la prueba  Resultados reales contienen una breve descripción de lo que el analista encuentra después de que los pasos de prueba se hayan completado. Esto se sustituye a menudo con un Correcto/Fallido. Si un caso de prueba falla, frecuentemente la referencia al defecto implicado se debe enumerar en esta columna. Lic. Rodrigo Santiago Hernandez Hdez.
  • 24. Desarrollo guiado por pruebas  Desarrollo guiado por pruebas, o Test-driven development (TDD) es una práctica de programación que involucra otras dos prácticas: Escribir las pruebas primero (Test First Development) y Refactorización (Refactoring).  Para escribir las pruebas generalmente se utilizan las pruebas unitarias (unit test en inglés).  Primeros e escribe una prueba y se verifica que las pruebas fallen, luego se implementa el código que haga que la prueba pase satisfactoriamente y seguidamente se refactoriza el código escrito.  El propósito del desarrollo guiado por pruebas es lograr un código limpio que funcione (Del inglés: Clean code that works).  La idea es que los requerimientos sean traducidos a pruebas, de este modo, cuando las pruebas pasen se garantizará que los requerimientos se hayan implementado correctamente. Lic. Rodrigo Santiago Hernandez Hdez.
  • 25. Ciclo De Desarrollo Conducido por Pruebas  Antes de comenzar el ciclo se debe definir una lista de requerimientos. Luego se comienza el siguiente ciclo:  Elegir un requerimiento: Se elige de una lista el requrimiento que se cree que nos dará mayor conocimiento del problema y que a la vez sea fácilmente implementable.  Escribir una prueba: Se comienza escribiendo una prueba para el requerimiento. Para ello el programador debe entender claramente las especificaciones y los requisitos de la funcionalidad que está por implementar. Este paso fuerza al programador a tomar la perspectiva de un cliente considerando el código a través de sus interfaces.  Verificar que la prueba falla: Si la prueba no falla es porque el requerimiento ya estaba implementado o porque la prueba es errónea.  Escribir la implementación: Escribir el código más sencillo que haga que la prueba funcione. Se usa la metáfora "Déjelo simple" ("Keep It Simple, Stupid" (KISS)). Lic. Rodrigo Santiago Hernandez Hdez.
  • 26. Ciclo De Desarrollo Conducido por Pruebas  Ejecutar las pruebas automatizadas: Verificar si todo el conjunto de pruebas funciona correctamente.  Eliminación de duplicación: El paso final es la refactorización, que se utilizará principalemente para eliminar código duplicado. Se hacen de a una vez un pequeño cambio y luego se corren las pruebas hasta que funcionen.  Actualización de la lista de requerimientos: Se actualiza la lista de requerimientos tachando el requerimiento implementado. Asimismo se agregan requerimientos que se hayan visto como necesarios durante este ciclo y se se agregan requerimientos de diseño (P. ej que una funcionalidad esté desacoplada de otra). Lic. Rodrigo Santiago Hernandez Hdez.
  • 27. Características  Una ventaja de esta forma de programación es el evitar escribir código innecesario. Se intenta escribir el mínimo código posible, y si el código pasa una prueba aunque sepamos que es incorrecto nos da una idea de que tenemos que modificar nuestra lista de requerimientos agregando uno nuevo.  La generación de pruebas para cada funcionalidad hace que el programador confíe en el código escrito. Esto permite hacer modificaciones profundas del código (posiblemente en una etapa de mantenimiento del programa) pues sabemos que si luego logramos hacer pasar todas las pruebas tendremos un código que funcione correctamente.  Otra característica del Test Driven Development requiere que el programador primero haga fallar los casos de prueba. La idea es asegurarse de que los casos de prueba realmente funcionen y puedan recoger un error. Lic. Rodrigo Santiago Hernandez Hdez.
  • 28. Referencias  Bauer, F. (1979). A Trend for the Next 10 Years of Software Engineering, Software Engineering. Academic Press: Ed. H. Freeman, P.M. Lewis.  Boehm, B. W. (1981). Software Engineering Economics. Prentice-Hal.  Booch, G. (1991). Object Oriented Design with Applications. Redwood City: CA. Benjamming-Cummings.  Brooks, F. (1975). The Mythical Man-Month. Addison Wesley: 2ª edición en 1995.  Budde, R. K. (1992). Prototyping: An approach to Evolutionary System Development. Springer Verlag.  Hall, A. (septiembre 1990). Seven Myths of Formal Methods IEEE Softwar. Academic Press. Lic. Rodrigo Santiago Hernandez Hdez.