SlideShare una empresa de Scribd logo
1 de 55
Descargar para leer sin conexión
Prólogo
Conceptos Básicos y estado del arte.
Lic. Ramiro Estigarribia
Estado del arte
La Ingeniería del Software es una nueva área de la
Informática, que ofrece métodos y técnicas para desarrollar
y mantener software de calidad.
El ingeniero del software comienza a ser una profesión
implantada en el mundo laboral internacional, con
derechos, deberes y responsabilidades que cumplir,
junto a una, ya, reconocida consideración
social en el mundo empresarial.
Definiciones
Dejinición 1
Ingeniería de Software: es el estudio de los principios y
metodologías para desarrollo y mantenimiento de sistemas
de software [Zelkovitz, 1981].
Definición 2
Ingeniería del Software: es la aplicación práctica del
conocimiento científico en el diseño y construcción de
programas de computadora y la documentación asociada
requerida para desarrollar, operar (funcionar) y
mantenerlos. [Bohem, 1976].
Pruebas de Software
Descripción y objetivos
Las pruebas son prácticas a realizar en diversos momentos
de la vida del sistema para verificar:
● El correcto funcionamiento de los componentes del
sistema.
● El funcionamiento del hardware y software en el
entorno de operación. (Sistema Operativo)
● Que el sistema cumpla con el funcionamiento esperado,
desde el punto de vista de su funcionalidad y
rendimiento.
● Que los cambios sobre un componente, no introduzcan
un comportamiento no deseado en otros.
(efectos colaterales).
El ser humano comete errores
El desarrollo de sistemas implica una serie de
actividades de producción en las que las posibilidades
de que aparezca el fallo humano son enormes.
Debido a la imposibilidad humana de trabajar y
comunicarse de forma perfecta, el desarrollo debe ir
acompañado de una actividad que garantice la
calidad.
Importancia de las pruebas
Las pruebas son un elemento crítico para la garantía de
calidad y representa una revisión final de las
especificaciones, del diseño y de la codificación.
La creciente percepción del software como un elemento del
sistema y la importancia de los costos asociados a un fallo,
están motivando la creación de pruebas minuciosas y bien
planificadas.
No es raro que una organización emplee entre el 30 y el 40
por ciento del esfuerzo total de un proyecto en las pruebas.
Importancia de las pruebas
En casos extremos, las pruebas del software para
actividades críticas (por ejemplo, control de tráfico aéreo,
control de reactores nucleares) pueden costar de tres a
cinco veces más que el resto del proyecto.
Las pruebas y el Ing.de.Soft.
Las pruebas presentan una interesante anomalía para
el ingeniero de software:
● Durante las fases anteriores de definición y de
desarrollo, el ingeniero intenta construir el software de
la mejor manera posible.
● A continuación, llegan las pruebas. El ingeniero crea
una serie de casos de pruebas que intentan demoler el
software construido.
● Las pruebas son uno de los pasos de la ingeniería del
software que se puede ver como destructivo en lugar de
constructivo.
Mito de la Perfección
Si fuéramos realmente buenos programando, no habría
errores que buscar.
Según el mito: “Existen errores porque somos malos
en lo que hacemos, y si somos malos en lo que
hacemos, deberíamos sentirnos culpables por ello”.
Por lo tanto, las pruebas son un reconocimiento de
nuestros fallos.
¿Por no conseguir una perfección inhumana?
Objetivos de las pruebas
1. La prueba es el proceso de ejecución de un programa
con la intención de descubrir un error.
2. Un buen caso de prueba es aquel que tiene una alta
probabilidad de mostrar un error no descubierto hasta
entonces.
3. Una prueba tiene éxito si descubre un error no detectado
hasta entonces.
Nos quita la idea de de que una prueba tiene éxito si no
descubre errores.
Ventajas de las pruebas
El objetivo es diseñar pruebas que sistemáticamente
saquen a la luz diferentes clases de errores, con la menor
cantidad de tiempo y de esfuerzo.
Si la prueba se lleva a cabo con éxito, se descubrirán
fallas y vulnerabilidades.
Como ventaja secundaria, la prueba demuestra hasta qué
punto el software funciona de acuerdo con las
especificaciones y alcanza los requisitos de rendimiento.
Las prueba No aseguran
ausencia de defectos
Los resultados que se van recogiendo a medida que se
lleva a cabo la prueba, proporciona una buena indicación
de la fiabilidad y la calidad.
Pero, la prueba no puede asegurar la ausencia de
defectos; sólo puede demostrar que existen defectos en el
software.
Principios de las pruebas
Antes de la aplicación de métodos para el diseño de casos
de prueba efectivos, un ingeniero del software deberá
entender los principios básicos que guían las pruebas del
software.
Principios de Davis
El autor Davis sugiere un conjunto de principios:
1. A todas las pruebas se les debería poder hacer un
seguimiento hasta los requisitos del cliente.
Los defectos graves (para el cliente) son aquellos que
impiden al programa cumplir sus requisitos.
2. Las pruebas deberían planificarse mucho antes de
que empiecen las mismas.
Se pueden planificar y diseñar todas las pruebas antes de
generar ningún código.
Principios de Davis (cont..)
3. El principio de Pareto, nos dice que "el 80% de los fallos
de un software es generado por un 20% del código de
dicho software, mientras que el otro 80% genera tan solo
un 20% de los fallos".
4. Las pruebas deberían empezar por «lo pequeño» y
progresar hacia «lo grande».
5. Para ser más eficaces, las pruebas deberían ser rea-
lizadas por un equipo independiente.
6. No son posibles las pruebas exhaustivas de todas las
combinaciones posibles del sistema. Es posible, sin
embargo, cubrir adecuadamente la lógica del programa.
Principio de Pareto
El principio de Pareto es también conocido
como la regla del 80-20 y recibe este nombre
en honor a Pareto, quien lo enunció por
primera vez.
Así por ejemplo cuando hablamos de los costes de
desarrollo podríamos decir que:
"El 20% del esfuerzo de desarrollo (en tiempo y recursos)
produce el 80% del código, mientras que el 80% restante
es produce tan el 20% del software".
Facilidad de prueba
La facilidad de prueba es "la medición del nivel de
sencillez" con la que se puede probar un sistema.
A veces los programadores están dispuestos a
hacer cosas que faciliten el proceso de prueba y una
lista de comprobación de posibles
puntos de diseño, características, etc.
Puede ser útil a la hora de negociar.
Métricas para
medir la facilidad de prueba
1. Operatividad: Cuando mejor funciona, más
eficientemente se puede probar.
2. Observabilidad: Lo que ves es lo que pruebas.
Los estados y variables del sistema están visibles o
se pueden consultar durante la ejecución. (modo debug).
3. Controlabilidad: Cuando mejor podemos controlar el
software, más se puede automatizar y optimizar.
El ingeniero de pruebas puede controlar directamente
los estados y las variables del hardware y del software.
Métricas para
medir la facilidad de prueba
4. Capacidad de descomposición: Si el sistema está
construido con módulos independientes, podemos aislar
más rápidamente los problemas y llevar a cabo mejores
pruebas de regresión.
5. Simplicidad: Cuanto menos haya que probar, más
rápidamente podremos probarlo.
Simplicidad funcional: el conjunto de características es el
mínimo necesario para cumplir los requisitos).
6. Estabilidad: Cuanto menos cambios, menos
interrupciones a las pruebas.
7. Facilidad de comprensión: Cuanta más información
tengamos, más inteligentes serán las pruebas.
Atributos de una 'buena'
prueba:
1. Una buena prueba tiene una alta probabilidad de
encontrar un error. El responsable de la prueba debe
entender el software e imaginarse cómo podría fallar.
2. Una buena prueba no debe ser redundante. El tiempo
y los recursos para las pruebas son limitados.
3 . Una buena prueba debería ser la mejor de la
cosecha. En un grupo de pruebas que tienen propósito
similar, se deben seleccionar las mejores.
Diseño de casos de prueba
Recordando el objetivo de la prueba, debemos diseñar
pruebas que tengan la mayor probabilidad de encontrar el
mayor número de errores con la mínima cantidad de
esfuerzo y tiempo.
Sin embargo, muchos ingenieros de software, a menudo
tratan las pruebas como algo sin importancia,
desarrollando casos de prueba que «parecen
adecuados», pero que tienen poca garantía de ser
completos.
Diseño de casos de prueba
Cualquier producto de ingeniería puede probarse de una
de estas dos formas:
1. Conociendo la función para la que fue diseñado el
producto, se pueden llevar a cabo pruebas que
demuestran que cada función es completamente operativa.
2. Conociendo el funcionamiento del producto, se pueden
desarrollar pruebas que aseguren que «todas las piezas
encajan», o sea, que la operación interna se ajusta a
las especificaciones y que todos los componentes internos
se han comprobado de forma adecuada.
El primer enfoque de prueba se denomina prueba de
caja negra y el segundo, prueba de caja blanca.
Pruebas de Caja Negra
Cuando se considera el software de computadora, la
prueba de caja negra se refiere a las pruebas que se llevan
a cabo sobre la interfaz del software.
En otras palabras, los casos de prueba pretenden
demostrar que las funciones del software son operativas,
que la entrada se acepta de forma adecuada y que se
produce un resultado correcto.
Una prueba de caja negra examina algunos aspectos del
modelo fundamental del sistema sin tener mucho en
cuenta la estructura lógica interna del software.
Pruebas de Caja Blanca
La pruebas de caja blanca del software se basan en el
minucioso examen de los detalles procedimentales.
(con acceso al código fuente, base de datos, etc)
Se comprueban los caminos lógicos del software
proponiendo casos de prueba que ejerciten conjuntos
específicos de condiciones y/o bucles.
Se puede examinar el “estado del programa” en varios
puntos para determinar si el estado real coincide con el
esperado o mencionado.
Pruebas de caja blanca
(cont...)
A primera vista parecería que una prueba de caja blanca
muy profunda nos llevaría a tener “programas cien por
cien correctos”.
Todo lo que tenemos que hacer es definir todos los
caminos lógicos, desarrollar casos de prueba que los
ejerciten y evaluar los resultados.
Lastimosamente, incluso para pequeños programas, el
número de caminos lógicos posibles puede ser enorme.
Caja Negra vs Caja Blanca
¿Por qué no gastamos, todas nuestras energías solamente
en las pruebas de caja negra?
La respuesta se encuentra en la naturaleza misma de los
defectos del software.
Los errores de escritura son en su mayoría descubiertos
por los mecanismos de comprobación de sintaxis, pero
otros permanecerán indetectados hasta que comience la
prueba, siendo igual de probable que exista un error
tipográfico en un oscuro camino lógico que en un camino
principal.
Prueba del camino básico
El método del camino básico, propuesto por Tom McCabe,
permite al diseñador de casos de prueba obtener una
medida de la complejidad lógica y usar esa medida como
guía para la definición de un conjunto básico de caminos
de ejecución.
Garantizan que durante la prueba se ejecuta por lo menos
una vez cada sentencia de programa.
Cualquier representación del diseño procedimental se
puede traducir a un grafo de flujo.
Prueba del camino básico
La complejidad de este grafo depende del número de
caminos independientes del conjunto básico de un
programa y nos da un límite superior para el número de
pruebas que se deben realizar para asegurar que se
ejecuta cada sentencia al menos una vez.
Prueba del camino básico
El grafo permite observar los tres caminos básicos de
ejecución:
Camino 1: 1-2-5-8-9
Camino 2: 1-3-4-5-8-9
Camino 3: 1-3-6-7-8-9
Camino 4: 1-3-6-9
Complejidad ciclomática
Es una métrica del software que proporciona una
medición cuantitativa de la complejidad lógica de un
programa.
El valor calculado como complejidad ciclomática define
el número de caminos independientes del conjunto
básico de un programa y nos da un límite superior
para el número de pruebas que se deben realizar para
asegurar que se ejecuta cada sentencia al menos una
vez.
Complejidad ciclomática
El resultado obtenido en el cálculo de la complejidad
ciclomática define el número de caminos
independientes dentro de un fragmento de código.
Además determina el número de pruebas que se
deben realizar para asegurar que se ejecuta cada
sentencia al menos una vez, (if, else, for, while, etc)
Complejidad ciclomática
Si tenemos en cuenta el siguiente ranking:
1-10 Programa Simple, sin mucho riesgo.
11-20 Más complejo, riesgo moderado.
21-50 Complejo, Programa de alto riesgo.
50 Programa no testeable, Muy alto riesgo.
Complejidad ciclomática
El grafo permite observar los cuatro caminos básicos
posibles:
Camino 1: 1-2-5-8-9
Camino 2: 1-3-4-5-8-9
Camino 3: 1-3-6-7-8-9
Camino 4: 1-3-6-9
En este ejemplo,
la complejidad
ciclomática = 4.
Pruebas de la Caja Negra
Las pruebas de caja negra, también denominada prueba
de comportamiento, se centran en los requisitos
funcionales del software.
O sea, la prueba de caja negra permite al ingeniero de
software obtener conjuntos de condiciones de entrada que
ejerciten completamente todos los requisitos funcionales
de un programa.
La prueba de caja negra no es una alternativa a las
técnicas de prueba de caja blanca. Más bien se trata de un
enfoque complementario que intenta descubrir diferentes
tipos de errores que los métodos de caja blanca.
Pruebas de la Caja Negra
A diferencia de la prueba de caja blanca, que se lleva a
cabo previamente en el proceso de prueba, la prueba de
caja negra tiende a aplicarse durante fases posteriores.
Ya que la prueba de caja negra centra su atención en el
campo de la información.
Las pruebas de Caja Negra
responden a preguntas:
¿Cómo se prueba la validez funcional?
¿Cómo se prueba el rendimiento y el comportamiento
del sistema?
¿Qué clases de entrada compondrán unos buenos
casos de prueba?
¿Es el sistema particularmente sensible a ciertos valo-
res de entrada?
¿De qué forma están aislados los límites de una clase
de datos?
¿Qué volúmenes y niveles de datos tolerará el sis-
tema?
¿Qué efectos sobre la operación del sistema tendrán
combinaciones específicas de datos?
Ejemplo, Caja Negra
Como ejemplo, consideremos los datos contenidos
en una aplicación de automatización bancaria.
Este software acepta datos en la siguiente forma:
Código de área: En blanco ó un número de 3 dígitos
Prefijo: Número de 3 dígitos que no comience por 0 ó 1
Sufijo: Número de 4 dígitos
Contraseña: Valor alfanumérico de 12 dígitos
Órdenes: "Comprobar", "Depositar","Pagar factura", etc.
Los casos de prueba se seleccionan de manera que se
ejercite el mayor número de atributos de cada clase de
equivalencia a la vez.
Prueba de comparación
Hay situaciones (por ejemplo, aviónica de aeronaves,
control de planta nuclear) en las que la fiabilidad del
software es algo absolutamente crítico.
En ese tipo de aplicaciones, a menudo se utiliza hardware
y software redundante para minimizar la posibilidad de
error.
Cuando se desarrolla software redundante, varios equipos
de ingeniería del software separados desarrollan versiones
independientes de una aplicación, usando las mismas
especificaciones.
Prueba de comparación
(cont...)
En esas situaciones, se deben probar
todas las versiones con los mismos datos de prueba, para
asegurar que todas proporcionan una salida idéntica.
Luego, se ejecutan todas las versiones en paralelo y se
hace una comparación en tiempo real de los resultados,
para garantizar la consistencia.
Con las lecciones aprendidas de los sistemas redundantes,
se sugiere que, para las aplicaciones críticas, se deben
desarrollar versiones de software independientes, incluso
aunque sólo se vaya a distribuir una de las versiones en el
sistema final basado en computadora.
Prueba de la Tabla Ortogonal
Cuando el número de parámetros de entrada es pequeño y
los valores de cada uno de los parámetros está claramente
delimitado, es factible realizar esta prueba
En cambio, cuando el número de valores de entrada crece
y el número de valores diferentes para cada elemento de
dato se incrementa, la prueba exhaustiva se hace
impracticable o imposible.
Prueba de la Tabla Ortogonal
Para ilustrar la prueba de la tabla ortogonal, considerar un
sistema que tiene tres elementos de entrada, X, Y y Z.
Cada uno de estos elementos de entrada tiene tres valores
diferentes. Hay 3 x 3 x 3 = 27 posibles casos de prueba.
Pruebas en entornos
especializados
A medida que el software de computadora se ha hecho
más complejo, ha crecido también la necesidad de
enfoques de pruebas especializados.
Los métodos de prueba de caja blanca y de caja negra
tratados son aplicables a todos los entornos, pero a veces
se necesitan unas directrices y enfoques especiales para
las pruebas.
Prueba de interfaces
gráficas de usuario
Las interfaces gráficas de usuario (IGUs) presentan
interesantes desafíos para los ingenieros del software.
Debido a los componentes reutilizables provistos
como parte de los entornos de desarrollo de las GUI,
la creación de la interfaz de usuario se ha convertido
en menos costosa en tiempo y más exacta.
Al mismo tiempo, la complejidad de las IGUs ha
aumentado, originando más dificultad en el diseño y
ejecución de los casos de prueba.
Prueba de interfaces
gráficas de usuario
Considerando el gran número de permutaciones asociadas
con las operaciones IGU, sería necesario para
probar utilizar herramientas automáticas.
Prueba de arquitectura
cliente/servidor
La arquitectura cliente/servidor (C/S) representa un desafío
significativo para los responsables de la pruebas del
software.
La naturaleza distribuida de los entornos clien/servidor, los
aspectos de rendimiento asociados con el proceso de
transacciones, las complejidades de las redes, y la
necesidad de servir a múltiples clientes desde una base de
datos centralizada se combinan todos para
hacer las pruebas de la arquitectura C/S y el software
residente en ellas, considerablemente más difíciles que
la prueba de aplicaciones individuales.
Prueba de la documentación y
facilidades de ayuda
Los errores en la documentación pueden ser tan
destructivos para la aceptación del programa, como los
errores en los datos o en el código fuente.
Nada es más frustrante que seguir fielmente el manual de
usuario y obtener resultados o comportamientos que no
coinciden con los anticipados por el documento.
Por esta razón, la prueba de la documentación debería ser
una parte importante de cualquier plan de pruebas del
software.
Prueba de sistemas de
tiempo-real
La naturaleza asíncrona y dependiente del tiempo de
muchas aplicaciones de tiempo real, añade un nuevo y
potencialmente difícil elemento a la complejidad de las
El responsable del diseño de casos pruebas o sólo tiene
que considerar los casos de prueba de caja blanca y de
caja negra, sino también el tratamiento de sucesos (por
ejemplo, procesamiento de interrupciones), la
temporización de los datos y el paralelismo de las tareas
(procesos) que manejan los datos.
Conclusiones
● El principal objetivo del diseño de casos de prueba es
obtener un conjunto de pruebas que tengan la mayor
probabilidad de descubrir los defectos del software.
● A menudo, los desarrolladores de software expen-
mentados dicen que «la prueba nunca termina, simple-
mente se transfiere de usted (el ingeniero del software)
al cliente: Cada vez que el cliente usa el programa, lle-
va a cabo una prueba.
Lectura recomendada.
GOOGLE Y LAS PRUEBAS
Principio:
“No existe software perfecto en el mundo”.
Finalidad:
“Pruebas constantes en diversos momentos de
la vida del SW”.
http://googletesting.blogspot.com/2011/01/how-
google-tests-software.html
http://www.javiergarzas.com/2011/04/pruebas-
software-en-google.html
Preguntas
1. ¿Qué son las Pruebas de Software?
2. Si fuéramos realmente buenos programando, no habría
errores que buscar. ¿Estás de acuerdo con esa frase?
3. ¿Cuándo se dice que una prueba es buena o exitosa?
4. Explique la diferencia entre:
Prueba de Caja Negra y Blanca
5. ¿Qué es la Complejidad Ciclomática?
6. Calcule la Complejidad Ciclomática.
7. ¿En que se basa la Prueba de la
documentación y facilidades de ayuda?

Más contenido relacionado

La actualidad más candente

Tecnicas de estimacion de costos de proyecto software
Tecnicas de estimacion de costos de proyecto softwareTecnicas de estimacion de costos de proyecto software
Tecnicas de estimacion de costos de proyecto softwareJennifer Andrea Cano Guevara
 
I1M2011-T4: Definición de funciones en Haskell
I1M2011-T4: Definición de funciones en HaskellI1M2011-T4: Definición de funciones en Haskell
I1M2011-T4: Definición de funciones en HaskellJosé A. Alonso
 
Requerimientos en Ingenieria de Software
Requerimientos en Ingenieria de SoftwareRequerimientos en Ingenieria de Software
Requerimientos en Ingenieria de SoftwareKelvin Abdiel Alvarado
 
Etapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del SoftwareEtapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del SoftwareT.I.C
 
MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)Yadith Miranda Silva
 
Unidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosUnidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosSergio Sanchez
 
Metodologias para el desarrollo del software
Metodologias para el desarrollo del softwareMetodologias para el desarrollo del software
Metodologias para el desarrollo del softwareyeltsintorres18
 
Introducción de pruebas de software
Introducción de pruebas de softwareIntroducción de pruebas de software
Introducción de pruebas de softwareMarta Silvia Tabares
 
Atributos de aplicaciones basadas en WEB
Atributos de aplicaciones basadas en WEBAtributos de aplicaciones basadas en WEB
Atributos de aplicaciones basadas en WEBNoé Arpasi
 
Mapa conceptual Ingeniería de Requisitos
Mapa conceptual Ingeniería de RequisitosMapa conceptual Ingeniería de Requisitos
Mapa conceptual Ingeniería de Requisitosinmacu_
 
Fundamentos de Calidad del Software - Modelos y Estándares
Fundamentos de Calidad del Software - Modelos y EstándaresFundamentos de Calidad del Software - Modelos y Estándares
Fundamentos de Calidad del Software - Modelos y EstándaresLuis Eduardo Pelaez Valencia
 
Métricas de Calidad del Software.pptx
Métricas de Calidad del Software.pptxMétricas de Calidad del Software.pptx
Métricas de Calidad del Software.pptxEduardo Robayo
 
Sistemas operativos moviles
Sistemas operativos movilesSistemas operativos moviles
Sistemas operativos movilesYossa Cobain
 
Especificacion de requerimientos
Especificacion de requerimientosEspecificacion de requerimientos
Especificacion de requerimientosRamiro Aguirre Inga
 

La actualidad más candente (20)

Tecnicas de estimacion de costos de proyecto software
Tecnicas de estimacion de costos de proyecto softwareTecnicas de estimacion de costos de proyecto software
Tecnicas de estimacion de costos de proyecto software
 
3.4. Logica de predicados
3.4. Logica de predicados3.4. Logica de predicados
3.4. Logica de predicados
 
I1M2011-T4: Definición de funciones en Haskell
I1M2011-T4: Definición de funciones en HaskellI1M2011-T4: Definición de funciones en Haskell
I1M2011-T4: Definición de funciones en Haskell
 
Requerimientos en Ingenieria de Software
Requerimientos en Ingenieria de SoftwareRequerimientos en Ingenieria de Software
Requerimientos en Ingenieria de Software
 
prueba de aplicaciones convencionales
prueba de aplicaciones convencionalesprueba de aplicaciones convencionales
prueba de aplicaciones convencionales
 
Etapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del SoftwareEtapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del Software
 
Estimación de Proyectos de Software
Estimación de Proyectos de SoftwareEstimación de Proyectos de Software
Estimación de Proyectos de Software
 
MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)
 
Unidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosUnidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De Requerimientos
 
Metodologias para el desarrollo del software
Metodologias para el desarrollo del softwareMetodologias para el desarrollo del software
Metodologias para el desarrollo del software
 
Introducción de pruebas de software
Introducción de pruebas de softwareIntroducción de pruebas de software
Introducción de pruebas de software
 
9.diseño de la arquitectura
9.diseño de la arquitectura9.diseño de la arquitectura
9.diseño de la arquitectura
 
Swebok
SwebokSwebok
Swebok
 
Tipos de usuarios
Tipos de usuarios Tipos de usuarios
Tipos de usuarios
 
Atributos de aplicaciones basadas en WEB
Atributos de aplicaciones basadas en WEBAtributos de aplicaciones basadas en WEB
Atributos de aplicaciones basadas en WEB
 
Mapa conceptual Ingeniería de Requisitos
Mapa conceptual Ingeniería de RequisitosMapa conceptual Ingeniería de Requisitos
Mapa conceptual Ingeniería de Requisitos
 
Fundamentos de Calidad del Software - Modelos y Estándares
Fundamentos de Calidad del Software - Modelos y EstándaresFundamentos de Calidad del Software - Modelos y Estándares
Fundamentos de Calidad del Software - Modelos y Estándares
 
Métricas de Calidad del Software.pptx
Métricas de Calidad del Software.pptxMétricas de Calidad del Software.pptx
Métricas de Calidad del Software.pptx
 
Sistemas operativos moviles
Sistemas operativos movilesSistemas operativos moviles
Sistemas operativos moviles
 
Especificacion de requerimientos
Especificacion de requerimientosEspecificacion de requerimientos
Especificacion de requerimientos
 

Destacado

El estado del arte ing. s. (2)
El estado del arte ing. s. (2)El estado del arte ing. s. (2)
El estado del arte ing. s. (2)Franco Snipes
 
Estado del arte de la carrera de informática
Estado del arte de la carrera de informáticaEstado del arte de la carrera de informática
Estado del arte de la carrera de informáticaCaleb Flores
 
Calidad del software
Calidad del softwareCalidad del software
Calidad del softwareflaco_mendez
 
Fundamentos de Pruebas de Software - Capítulo 2
Fundamentos de Pruebas de Software - Capítulo 2Fundamentos de Pruebas de Software - Capítulo 2
Fundamentos de Pruebas de Software - Capítulo 2Professional Testing
 
Estado del arte de la ingeniería de software
Estado del arte de la ingeniería de softwareEstado del arte de la ingeniería de software
Estado del arte de la ingeniería de softwareDaniel Urgiles
 
13. ingeniería del software
13. ingeniería del software13. ingeniería del software
13. ingeniería del softwareDaniel Merchan
 
Archivo secuencial-indexado
Archivo secuencial-indexadoArchivo secuencial-indexado
Archivo secuencial-indexadoAleizapata
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de softwareDiaxz Salgado
 
GESTIÓN DE RECURSOS HUMANOS EN EDUCACIÓN
GESTIÓN DE RECURSOS HUMANOS EN EDUCACIÓNGESTIÓN DE RECURSOS HUMANOS EN EDUCACIÓN
GESTIÓN DE RECURSOS HUMANOS EN EDUCACIÓNMARGA YSABEL LÓPEZ RUIZ
 
Estado del arte de la Ingeniería de Sistemas
Estado del arte de la Ingeniería de SistemasEstado del arte de la Ingeniería de Sistemas
Estado del arte de la Ingeniería de SistemasEdwin Camino
 

Destacado (12)

El estado del arte ing. s. (2)
El estado del arte ing. s. (2)El estado del arte ing. s. (2)
El estado del arte ing. s. (2)
 
Estado del arte de la carrera de informática
Estado del arte de la carrera de informáticaEstado del arte de la carrera de informática
Estado del arte de la carrera de informática
 
Calidad del software
Calidad del softwareCalidad del software
Calidad del software
 
Fundamentos de Pruebas de Software - Capítulo 2
Fundamentos de Pruebas de Software - Capítulo 2Fundamentos de Pruebas de Software - Capítulo 2
Fundamentos de Pruebas de Software - Capítulo 2
 
Estado del arte de la ingeniería de software
Estado del arte de la ingeniería de softwareEstado del arte de la ingeniería de software
Estado del arte de la ingeniería de software
 
13. ingeniería del software
13. ingeniería del software13. ingeniería del software
13. ingeniería del software
 
Archivo secuencial-indexado
Archivo secuencial-indexadoArchivo secuencial-indexado
Archivo secuencial-indexado
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de software
 
GESTIÓN DE RECURSOS HUMANOS EN EDUCACIÓN
GESTIÓN DE RECURSOS HUMANOS EN EDUCACIÓNGESTIÓN DE RECURSOS HUMANOS EN EDUCACIÓN
GESTIÓN DE RECURSOS HUMANOS EN EDUCACIÓN
 
Estado del Arte
Estado del Arte Estado del Arte
Estado del Arte
 
Estado del arte
Estado del arteEstado del arte
Estado del arte
 
Estado del arte de la Ingeniería de Sistemas
Estado del arte de la Ingeniería de SistemasEstado del arte de la Ingeniería de Sistemas
Estado del arte de la Ingeniería de Sistemas
 

Similar a 6.redes pruebas de software

Similar a 6.redes pruebas de software (20)

tipos de pruebas.
tipos de pruebas.tipos de pruebas.
tipos de pruebas.
 
Pruebas
PruebasPruebas
Pruebas
 
Exposición software.pptx
Exposición software.pptxExposición software.pptx
Exposición software.pptx
 
Exposición software.pptx
Exposición software.pptxExposición software.pptx
Exposición software.pptx
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Pruebas software (1)
Pruebas  software (1)Pruebas  software (1)
Pruebas software (1)
 
Capacitacitación Tester - QA 1
Capacitacitación Tester - QA 1Capacitacitación Tester - QA 1
Capacitacitación Tester - QA 1
 
Estrategias prueba de software
Estrategias prueba de softwareEstrategias prueba de software
Estrategias prueba de software
 
Fundamento pruebas Ingeniería del software
Fundamento pruebas Ingeniería del softwareFundamento pruebas Ingeniería del software
Fundamento pruebas Ingeniería del software
 
Auditoria ii
Auditoria iiAuditoria ii
Auditoria ii
 
Auditoria ii
Auditoria iiAuditoria ii
Auditoria ii
 
Pruebas De Software
Pruebas De SoftwarePruebas De Software
Pruebas De Software
 
Unidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De ProgramasUnidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De Programas
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de software
 
Casos de pruebas
Casos de pruebasCasos de pruebas
Casos de pruebas
 
7iSF-4 test driver development
7iSF-4   test driver development7iSF-4   test driver development
7iSF-4 test driver development
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Pruebas de documentacion
Pruebas de documentacionPruebas de documentacion
Pruebas de documentacion
 
practica 9 de fundamento.pdf
practica 9 de fundamento.pdfpractica 9 de fundamento.pdf
practica 9 de fundamento.pdf
 
Capitulo 17 estrategias_de_prueba_de_software
Capitulo 17 estrategias_de_prueba_de_softwareCapitulo 17 estrategias_de_prueba_de_software
Capitulo 17 estrategias_de_prueba_de_software
 

Más de Ramiro Estigarribia Canese

8.Flujo, Comportamiento, Patrones y WebApps.pdf
8.Flujo, Comportamiento, Patrones y WebApps.pdf8.Flujo, Comportamiento, Patrones y WebApps.pdf
8.Flujo, Comportamiento, Patrones y WebApps.pdfRamiro Estigarribia Canese
 

Más de Ramiro Estigarribia Canese (20)

8.Flujo, Comportamiento, Patrones y WebApps.pdf
8.Flujo, Comportamiento, Patrones y WebApps.pdf8.Flujo, Comportamiento, Patrones y WebApps.pdf
8.Flujo, Comportamiento, Patrones y WebApps.pdf
 
Principios que Guían la Práctica
Principios que Guían la PrácticaPrincipios que Guían la Práctica
Principios que Guían la Práctica
 
CSS - Hojas de Estilo en Cascada.pdf
CSS -  Hojas de Estilo en Cascada.pdfCSS -  Hojas de Estilo en Cascada.pdf
CSS - Hojas de Estilo en Cascada.pdf
 
Python conceptos básicos
Python   conceptos básicosPython   conceptos básicos
Python conceptos básicos
 
Diseño de WebApps
Diseño de WebAppsDiseño de WebApps
Diseño de WebApps
 
Diseño basado en patrones
Diseño basado en patronesDiseño basado en patrones
Diseño basado en patrones
 
Servicios web
Servicios webServicios web
Servicios web
 
Especificaciones de los procesadores
Especificaciones de los procesadoresEspecificaciones de los procesadores
Especificaciones de los procesadores
 
Lenguaje de programación awk
Lenguaje de programación awkLenguaje de programación awk
Lenguaje de programación awk
 
Bases de datos con PHP y PDO
Bases de datos con PHP y PDOBases de datos con PHP y PDO
Bases de datos con PHP y PDO
 
Bases de datos con PHP y Mysqli
Bases de datos con PHP y MysqliBases de datos con PHP y Mysqli
Bases de datos con PHP y Mysqli
 
Interfaz de usuario
Interfaz de usuarioInterfaz de usuario
Interfaz de usuario
 
Variables del sistema en php
Variables del sistema en phpVariables del sistema en php
Variables del sistema en php
 
Funciones en php
Funciones en phpFunciones en php
Funciones en php
 
Bootstrap menues, contenedores y formularios
Bootstrap   menues, contenedores y formulariosBootstrap   menues, contenedores y formularios
Bootstrap menues, contenedores y formularios
 
Estructuras de control en bash
Estructuras de control en bashEstructuras de control en bash
Estructuras de control en bash
 
Visual studio code
Visual studio codeVisual studio code
Visual studio code
 
Diseño de software
Diseño de softwareDiseño de software
Diseño de software
 
Herramienta cacti
Herramienta cactiHerramienta cacti
Herramienta cacti
 
Monitoreo de datacenter
Monitoreo de datacenterMonitoreo de datacenter
Monitoreo de datacenter
 

Último

El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 

Último (20)

El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 

6.redes pruebas de software

  • 1. Prólogo Conceptos Básicos y estado del arte. Lic. Ramiro Estigarribia
  • 2. Estado del arte La Ingeniería del Software es una nueva área de la Informática, que ofrece métodos y técnicas para desarrollar y mantener software de calidad. El ingeniero del software comienza a ser una profesión implantada en el mundo laboral internacional, con derechos, deberes y responsabilidades que cumplir, junto a una, ya, reconocida consideración social en el mundo empresarial.
  • 3.
  • 4. Definiciones Dejinición 1 Ingeniería de Software: es el estudio de los principios y metodologías para desarrollo y mantenimiento de sistemas de software [Zelkovitz, 1981]. Definición 2 Ingeniería del Software: es la aplicación práctica del conocimiento científico en el diseño y construcción de programas de computadora y la documentación asociada requerida para desarrollar, operar (funcionar) y mantenerlos. [Bohem, 1976].
  • 6. Descripción y objetivos Las pruebas son prácticas a realizar en diversos momentos de la vida del sistema para verificar: ● El correcto funcionamiento de los componentes del sistema. ● El funcionamiento del hardware y software en el entorno de operación. (Sistema Operativo) ● Que el sistema cumpla con el funcionamiento esperado, desde el punto de vista de su funcionalidad y rendimiento. ● Que los cambios sobre un componente, no introduzcan un comportamiento no deseado en otros. (efectos colaterales).
  • 7. El ser humano comete errores El desarrollo de sistemas implica una serie de actividades de producción en las que las posibilidades de que aparezca el fallo humano son enormes. Debido a la imposibilidad humana de trabajar y comunicarse de forma perfecta, el desarrollo debe ir acompañado de una actividad que garantice la calidad.
  • 8. Importancia de las pruebas Las pruebas son un elemento crítico para la garantía de calidad y representa una revisión final de las especificaciones, del diseño y de la codificación. La creciente percepción del software como un elemento del sistema y la importancia de los costos asociados a un fallo, están motivando la creación de pruebas minuciosas y bien planificadas. No es raro que una organización emplee entre el 30 y el 40 por ciento del esfuerzo total de un proyecto en las pruebas.
  • 9. Importancia de las pruebas En casos extremos, las pruebas del software para actividades críticas (por ejemplo, control de tráfico aéreo, control de reactores nucleares) pueden costar de tres a cinco veces más que el resto del proyecto.
  • 10.
  • 11. Las pruebas y el Ing.de.Soft. Las pruebas presentan una interesante anomalía para el ingeniero de software: ● Durante las fases anteriores de definición y de desarrollo, el ingeniero intenta construir el software de la mejor manera posible. ● A continuación, llegan las pruebas. El ingeniero crea una serie de casos de pruebas que intentan demoler el software construido. ● Las pruebas son uno de los pasos de la ingeniería del software que se puede ver como destructivo en lugar de constructivo.
  • 12. Mito de la Perfección Si fuéramos realmente buenos programando, no habría errores que buscar. Según el mito: “Existen errores porque somos malos en lo que hacemos, y si somos malos en lo que hacemos, deberíamos sentirnos culpables por ello”. Por lo tanto, las pruebas son un reconocimiento de nuestros fallos. ¿Por no conseguir una perfección inhumana?
  • 13. Objetivos de las pruebas 1. La prueba es el proceso de ejecución de un programa con la intención de descubrir un error. 2. Un buen caso de prueba es aquel que tiene una alta probabilidad de mostrar un error no descubierto hasta entonces. 3. Una prueba tiene éxito si descubre un error no detectado hasta entonces. Nos quita la idea de de que una prueba tiene éxito si no descubre errores.
  • 14. Ventajas de las pruebas El objetivo es diseñar pruebas que sistemáticamente saquen a la luz diferentes clases de errores, con la menor cantidad de tiempo y de esfuerzo. Si la prueba se lleva a cabo con éxito, se descubrirán fallas y vulnerabilidades. Como ventaja secundaria, la prueba demuestra hasta qué punto el software funciona de acuerdo con las especificaciones y alcanza los requisitos de rendimiento.
  • 15. Las prueba No aseguran ausencia de defectos Los resultados que se van recogiendo a medida que se lleva a cabo la prueba, proporciona una buena indicación de la fiabilidad y la calidad. Pero, la prueba no puede asegurar la ausencia de defectos; sólo puede demostrar que existen defectos en el software.
  • 16. Principios de las pruebas Antes de la aplicación de métodos para el diseño de casos de prueba efectivos, un ingeniero del software deberá entender los principios básicos que guían las pruebas del software.
  • 17. Principios de Davis El autor Davis sugiere un conjunto de principios: 1. A todas las pruebas se les debería poder hacer un seguimiento hasta los requisitos del cliente. Los defectos graves (para el cliente) son aquellos que impiden al programa cumplir sus requisitos. 2. Las pruebas deberían planificarse mucho antes de que empiecen las mismas. Se pueden planificar y diseñar todas las pruebas antes de generar ningún código.
  • 18. Principios de Davis (cont..) 3. El principio de Pareto, nos dice que "el 80% de los fallos de un software es generado por un 20% del código de dicho software, mientras que el otro 80% genera tan solo un 20% de los fallos". 4. Las pruebas deberían empezar por «lo pequeño» y progresar hacia «lo grande». 5. Para ser más eficaces, las pruebas deberían ser rea- lizadas por un equipo independiente. 6. No son posibles las pruebas exhaustivas de todas las combinaciones posibles del sistema. Es posible, sin embargo, cubrir adecuadamente la lógica del programa.
  • 19. Principio de Pareto El principio de Pareto es también conocido como la regla del 80-20 y recibe este nombre en honor a Pareto, quien lo enunció por primera vez. Así por ejemplo cuando hablamos de los costes de desarrollo podríamos decir que: "El 20% del esfuerzo de desarrollo (en tiempo y recursos) produce el 80% del código, mientras que el 80% restante es produce tan el 20% del software".
  • 20. Facilidad de prueba La facilidad de prueba es "la medición del nivel de sencillez" con la que se puede probar un sistema. A veces los programadores están dispuestos a hacer cosas que faciliten el proceso de prueba y una lista de comprobación de posibles puntos de diseño, características, etc. Puede ser útil a la hora de negociar.
  • 21. Métricas para medir la facilidad de prueba 1. Operatividad: Cuando mejor funciona, más eficientemente se puede probar. 2. Observabilidad: Lo que ves es lo que pruebas. Los estados y variables del sistema están visibles o se pueden consultar durante la ejecución. (modo debug). 3. Controlabilidad: Cuando mejor podemos controlar el software, más se puede automatizar y optimizar. El ingeniero de pruebas puede controlar directamente los estados y las variables del hardware y del software.
  • 22. Métricas para medir la facilidad de prueba 4. Capacidad de descomposición: Si el sistema está construido con módulos independientes, podemos aislar más rápidamente los problemas y llevar a cabo mejores pruebas de regresión. 5. Simplicidad: Cuanto menos haya que probar, más rápidamente podremos probarlo. Simplicidad funcional: el conjunto de características es el mínimo necesario para cumplir los requisitos). 6. Estabilidad: Cuanto menos cambios, menos interrupciones a las pruebas. 7. Facilidad de comprensión: Cuanta más información tengamos, más inteligentes serán las pruebas.
  • 23. Atributos de una 'buena' prueba: 1. Una buena prueba tiene una alta probabilidad de encontrar un error. El responsable de la prueba debe entender el software e imaginarse cómo podría fallar. 2. Una buena prueba no debe ser redundante. El tiempo y los recursos para las pruebas son limitados. 3 . Una buena prueba debería ser la mejor de la cosecha. En un grupo de pruebas que tienen propósito similar, se deben seleccionar las mejores.
  • 24. Diseño de casos de prueba Recordando el objetivo de la prueba, debemos diseñar pruebas que tengan la mayor probabilidad de encontrar el mayor número de errores con la mínima cantidad de esfuerzo y tiempo. Sin embargo, muchos ingenieros de software, a menudo tratan las pruebas como algo sin importancia, desarrollando casos de prueba que «parecen adecuados», pero que tienen poca garantía de ser completos.
  • 25. Diseño de casos de prueba Cualquier producto de ingeniería puede probarse de una de estas dos formas: 1. Conociendo la función para la que fue diseñado el producto, se pueden llevar a cabo pruebas que demuestran que cada función es completamente operativa. 2. Conociendo el funcionamiento del producto, se pueden desarrollar pruebas que aseguren que «todas las piezas encajan», o sea, que la operación interna se ajusta a las especificaciones y que todos los componentes internos se han comprobado de forma adecuada. El primer enfoque de prueba se denomina prueba de caja negra y el segundo, prueba de caja blanca.
  • 26.
  • 27. Pruebas de Caja Negra Cuando se considera el software de computadora, la prueba de caja negra se refiere a las pruebas que se llevan a cabo sobre la interfaz del software. En otras palabras, los casos de prueba pretenden demostrar que las funciones del software son operativas, que la entrada se acepta de forma adecuada y que se produce un resultado correcto. Una prueba de caja negra examina algunos aspectos del modelo fundamental del sistema sin tener mucho en cuenta la estructura lógica interna del software.
  • 28. Pruebas de Caja Blanca La pruebas de caja blanca del software se basan en el minucioso examen de los detalles procedimentales. (con acceso al código fuente, base de datos, etc) Se comprueban los caminos lógicos del software proponiendo casos de prueba que ejerciten conjuntos específicos de condiciones y/o bucles. Se puede examinar el “estado del programa” en varios puntos para determinar si el estado real coincide con el esperado o mencionado.
  • 29. Pruebas de caja blanca (cont...) A primera vista parecería que una prueba de caja blanca muy profunda nos llevaría a tener “programas cien por cien correctos”. Todo lo que tenemos que hacer es definir todos los caminos lógicos, desarrollar casos de prueba que los ejerciten y evaluar los resultados. Lastimosamente, incluso para pequeños programas, el número de caminos lógicos posibles puede ser enorme.
  • 30. Caja Negra vs Caja Blanca ¿Por qué no gastamos, todas nuestras energías solamente en las pruebas de caja negra? La respuesta se encuentra en la naturaleza misma de los defectos del software. Los errores de escritura son en su mayoría descubiertos por los mecanismos de comprobación de sintaxis, pero otros permanecerán indetectados hasta que comience la prueba, siendo igual de probable que exista un error tipográfico en un oscuro camino lógico que en un camino principal.
  • 31. Prueba del camino básico El método del camino básico, propuesto por Tom McCabe, permite al diseñador de casos de prueba obtener una medida de la complejidad lógica y usar esa medida como guía para la definición de un conjunto básico de caminos de ejecución. Garantizan que durante la prueba se ejecuta por lo menos una vez cada sentencia de programa. Cualquier representación del diseño procedimental se puede traducir a un grafo de flujo.
  • 32. Prueba del camino básico La complejidad de este grafo depende del número de caminos independientes del conjunto básico de un programa y nos da un límite superior para el número de pruebas que se deben realizar para asegurar que se ejecuta cada sentencia al menos una vez.
  • 33. Prueba del camino básico El grafo permite observar los tres caminos básicos de ejecución: Camino 1: 1-2-5-8-9 Camino 2: 1-3-4-5-8-9 Camino 3: 1-3-6-7-8-9 Camino 4: 1-3-6-9
  • 34. Complejidad ciclomática Es una métrica del software que proporciona una medición cuantitativa de la complejidad lógica de un programa. El valor calculado como complejidad ciclomática define el número de caminos independientes del conjunto básico de un programa y nos da un límite superior para el número de pruebas que se deben realizar para asegurar que se ejecuta cada sentencia al menos una vez.
  • 35. Complejidad ciclomática El resultado obtenido en el cálculo de la complejidad ciclomática define el número de caminos independientes dentro de un fragmento de código. Además determina el número de pruebas que se deben realizar para asegurar que se ejecuta cada sentencia al menos una vez, (if, else, for, while, etc)
  • 36. Complejidad ciclomática Si tenemos en cuenta el siguiente ranking: 1-10 Programa Simple, sin mucho riesgo. 11-20 Más complejo, riesgo moderado. 21-50 Complejo, Programa de alto riesgo. 50 Programa no testeable, Muy alto riesgo.
  • 37. Complejidad ciclomática El grafo permite observar los cuatro caminos básicos posibles: Camino 1: 1-2-5-8-9 Camino 2: 1-3-4-5-8-9 Camino 3: 1-3-6-7-8-9 Camino 4: 1-3-6-9 En este ejemplo, la complejidad ciclomática = 4.
  • 38.
  • 39. Pruebas de la Caja Negra Las pruebas de caja negra, también denominada prueba de comportamiento, se centran en los requisitos funcionales del software. O sea, la prueba de caja negra permite al ingeniero de software obtener conjuntos de condiciones de entrada que ejerciten completamente todos los requisitos funcionales de un programa. La prueba de caja negra no es una alternativa a las técnicas de prueba de caja blanca. Más bien se trata de un enfoque complementario que intenta descubrir diferentes tipos de errores que los métodos de caja blanca.
  • 40. Pruebas de la Caja Negra A diferencia de la prueba de caja blanca, que se lleva a cabo previamente en el proceso de prueba, la prueba de caja negra tiende a aplicarse durante fases posteriores. Ya que la prueba de caja negra centra su atención en el campo de la información.
  • 41. Las pruebas de Caja Negra responden a preguntas: ¿Cómo se prueba la validez funcional? ¿Cómo se prueba el rendimiento y el comportamiento del sistema? ¿Qué clases de entrada compondrán unos buenos casos de prueba? ¿Es el sistema particularmente sensible a ciertos valo- res de entrada? ¿De qué forma están aislados los límites de una clase de datos? ¿Qué volúmenes y niveles de datos tolerará el sis- tema? ¿Qué efectos sobre la operación del sistema tendrán combinaciones específicas de datos?
  • 42. Ejemplo, Caja Negra Como ejemplo, consideremos los datos contenidos en una aplicación de automatización bancaria. Este software acepta datos en la siguiente forma: Código de área: En blanco ó un número de 3 dígitos Prefijo: Número de 3 dígitos que no comience por 0 ó 1 Sufijo: Número de 4 dígitos Contraseña: Valor alfanumérico de 12 dígitos Órdenes: "Comprobar", "Depositar","Pagar factura", etc. Los casos de prueba se seleccionan de manera que se ejercite el mayor número de atributos de cada clase de equivalencia a la vez.
  • 43. Prueba de comparación Hay situaciones (por ejemplo, aviónica de aeronaves, control de planta nuclear) en las que la fiabilidad del software es algo absolutamente crítico. En ese tipo de aplicaciones, a menudo se utiliza hardware y software redundante para minimizar la posibilidad de error. Cuando se desarrolla software redundante, varios equipos de ingeniería del software separados desarrollan versiones independientes de una aplicación, usando las mismas especificaciones.
  • 44. Prueba de comparación (cont...) En esas situaciones, se deben probar todas las versiones con los mismos datos de prueba, para asegurar que todas proporcionan una salida idéntica. Luego, se ejecutan todas las versiones en paralelo y se hace una comparación en tiempo real de los resultados, para garantizar la consistencia. Con las lecciones aprendidas de los sistemas redundantes, se sugiere que, para las aplicaciones críticas, se deben desarrollar versiones de software independientes, incluso aunque sólo se vaya a distribuir una de las versiones en el sistema final basado en computadora.
  • 45. Prueba de la Tabla Ortogonal Cuando el número de parámetros de entrada es pequeño y los valores de cada uno de los parámetros está claramente delimitado, es factible realizar esta prueba En cambio, cuando el número de valores de entrada crece y el número de valores diferentes para cada elemento de dato se incrementa, la prueba exhaustiva se hace impracticable o imposible.
  • 46. Prueba de la Tabla Ortogonal Para ilustrar la prueba de la tabla ortogonal, considerar un sistema que tiene tres elementos de entrada, X, Y y Z. Cada uno de estos elementos de entrada tiene tres valores diferentes. Hay 3 x 3 x 3 = 27 posibles casos de prueba.
  • 47. Pruebas en entornos especializados A medida que el software de computadora se ha hecho más complejo, ha crecido también la necesidad de enfoques de pruebas especializados. Los métodos de prueba de caja blanca y de caja negra tratados son aplicables a todos los entornos, pero a veces se necesitan unas directrices y enfoques especiales para las pruebas.
  • 48. Prueba de interfaces gráficas de usuario Las interfaces gráficas de usuario (IGUs) presentan interesantes desafíos para los ingenieros del software. Debido a los componentes reutilizables provistos como parte de los entornos de desarrollo de las GUI, la creación de la interfaz de usuario se ha convertido en menos costosa en tiempo y más exacta. Al mismo tiempo, la complejidad de las IGUs ha aumentado, originando más dificultad en el diseño y ejecución de los casos de prueba.
  • 49. Prueba de interfaces gráficas de usuario Considerando el gran número de permutaciones asociadas con las operaciones IGU, sería necesario para probar utilizar herramientas automáticas.
  • 50. Prueba de arquitectura cliente/servidor La arquitectura cliente/servidor (C/S) representa un desafío significativo para los responsables de la pruebas del software. La naturaleza distribuida de los entornos clien/servidor, los aspectos de rendimiento asociados con el proceso de transacciones, las complejidades de las redes, y la necesidad de servir a múltiples clientes desde una base de datos centralizada se combinan todos para hacer las pruebas de la arquitectura C/S y el software residente en ellas, considerablemente más difíciles que la prueba de aplicaciones individuales.
  • 51. Prueba de la documentación y facilidades de ayuda Los errores en la documentación pueden ser tan destructivos para la aceptación del programa, como los errores en los datos o en el código fuente. Nada es más frustrante que seguir fielmente el manual de usuario y obtener resultados o comportamientos que no coinciden con los anticipados por el documento. Por esta razón, la prueba de la documentación debería ser una parte importante de cualquier plan de pruebas del software.
  • 52. Prueba de sistemas de tiempo-real La naturaleza asíncrona y dependiente del tiempo de muchas aplicaciones de tiempo real, añade un nuevo y potencialmente difícil elemento a la complejidad de las El responsable del diseño de casos pruebas o sólo tiene que considerar los casos de prueba de caja blanca y de caja negra, sino también el tratamiento de sucesos (por ejemplo, procesamiento de interrupciones), la temporización de los datos y el paralelismo de las tareas (procesos) que manejan los datos.
  • 53. Conclusiones ● El principal objetivo del diseño de casos de prueba es obtener un conjunto de pruebas que tengan la mayor probabilidad de descubrir los defectos del software. ● A menudo, los desarrolladores de software expen- mentados dicen que «la prueba nunca termina, simple- mente se transfiere de usted (el ingeniero del software) al cliente: Cada vez que el cliente usa el programa, lle- va a cabo una prueba.
  • 54. Lectura recomendada. GOOGLE Y LAS PRUEBAS Principio: “No existe software perfecto en el mundo”. Finalidad: “Pruebas constantes en diversos momentos de la vida del SW”. http://googletesting.blogspot.com/2011/01/how- google-tests-software.html http://www.javiergarzas.com/2011/04/pruebas- software-en-google.html
  • 55. Preguntas 1. ¿Qué son las Pruebas de Software? 2. Si fuéramos realmente buenos programando, no habría errores que buscar. ¿Estás de acuerdo con esa frase? 3. ¿Cuándo se dice que una prueba es buena o exitosa? 4. Explique la diferencia entre: Prueba de Caja Negra y Blanca 5. ¿Qué es la Complejidad Ciclomática? 6. Calcule la Complejidad Ciclomática. 7. ¿En que se basa la Prueba de la documentación y facilidades de ayuda?