Sei sulla pagina 1di 60

Ingeniería de Software

Clase 10:
Estrategias de Pruebas

Hugo R. Cordero S.
Clase 1
Objetivos
2

 Conocer los diferentes conceptos relacionadas a las


pruebas de software
 Entender como se complementan las estrategias y
planes de pruebas para el software
Temas
3

 Introducción
 Pruebas de Software
 Niveles de pruebas
 Tipos de pruebas
 Estrategias y plan de pruebas
Introducción
4

Contexto de las pruebas

La economía mundial es cada vez más Las aplicaciones crecen en tamaño,


dependiente del software. complejidad y distribución.

Los negocios demandan mayor productividad Las pruebas y las revisiones mejoran la
y CALIDAD en menos tiempo. CALIDAD del software
Introducción
5

¿Qué son los errores y defectos?


 ¿Qué es un Error?

 Una acción humana que produce un


resultado incorrecto

 ¿Qué es un Defecto?
 Una manifestación de un error en software
 También conocido como un defecto o “bug”

 De ser ejecutado, un defecto puede causar

un fallo
Introducción
6

¿Qué es un fallo?
 Una desviación del software de su entrega esperada o

servicio
 Es un defecto encontrado

 El fallo es un acontecimiento, el defecto es un estado del

software, causado por un error


Introducción
7

Los defectos y los fallos provienen


 Errores en especificación, diseño e implementación del

software
 Errores en el uso del sistema

 Condiciones ambientales

 Daño intencional

 Consecuencia de errores tempranos, defectos y fallas


Introducción
8

El costo de los defectos

COSTO

TIEMPO
Requerimientos Diseño Construcción Pruebas Tiempo de Uso
Introducción
9

El enfoque a las pruebas…


 El software se prueba para descubrir errores cometidos sin

darse cuenta al realizar su diseño y construcción


 Un proceso de prueba eficaz es aquel que descubre los

errores
 La prueba es un conjunto de actividades que se planean con

anticipación y se realizan de manera sistemática.


Introducción
10

Las pruebas del software


Verificación y Validación (V&V)
11

Verificación
 Es el proceso de evaluación de un sistema o de uno de sus
componentes para determinar si los productos de una fase
dada satisfacen las condiciones impuestas al comienzo de dicha
fase.
 ¿Estamos construyendo el producto correctamente?
Validación
 El proceso de evaluación de un sistema o de uno de sus
componentes durante o al final del proceso de desarrollo para
determinar si satisface los requisitos marcados por el usuario
 ¿Estamos construyendo el producto correcto?
Verificación y Validación
12

Verificación Estática
 Se analizan las diferentes representaciones del sistema
(diagramas, requerimientos, código fuente) en busca de defectos
 No requiere que el código se ejecute
 Se logra con inspecciones del software
Verificación Dinámica
 Se contrasta dinámicamente la respuesta de prototipos
ejecutables del sistema con el comportamiento operacional
esperado
 El sistema se tiene que ejecutar
 Se logra mediante pruebas del software
Pruebas de Software
13

 Pruebas (test):
 Una actividad en la cual un sistema o uno de sus componentes se
ejecuta en circunstancias previamente especificadas, los
resultados se observan y registran y se realiza una evaluación
de algún aspecto
 Caso de prueba (test case):
 Un conjunto de entradas, condiciones de ejecución y resultados
esperados desarrollados para un objetivo particular
Pruebas de Software
14

Ideas paradójicas de las pruebas


 La prueba exhaustiva del software es impracticable (no se

pueden probar todas las posibilidades de su


funcionamiento ni siquiera en programas sencillos
 El objetivo de las pruebas es la detección de defectos en el

software (descubrir un error es el éxito de una prueba)


 Mito

 “Un defecto implica que somos malos profesionales y que


debemos sentirnos culpables todo el mundo comete errores”
Pruebas de Software
15

Objetivos de las pruebas


 Determinar que el producto software satisface los
requerimientos especificados.
 Confirma que los productos trabajados apropiadamente
reflejan los requerimientos especificados. En otras palabras, la
verificación asegura que “se construye el producto
correctamente”.
 Confirmación, a través de la provisión de objetivos
evidenciables, que los requerimientos especificados han sido
cumplidos a cabalidad.
Pruebas de Software
16

Objetivos de las pruebas


 Determinar que el producto de software cumple su

propósito.
 Confirma que el producto, como condición rutinaria, cumplirá a
cabalidad con su uso propuesto. En otras palabras, la
validación asegura que “se construye el producto correcto”.
 Detectar Defectos.
 Para descubrir fallas o defectos en el software donde su
comportamiento no está en conformidad con su especificación.
Niveles de prueba
17

Pruebas de Bajo Nivel


 De Unidad, Unitarias o de Componentes

 De Integración

Pruebas de Alto Nivel


 De Sistema

 De Aceptación
Niveles de prueba
18

Pruebas Unitarias
 Verifica el funcionamiento y busca defectos de los
componentes de software que pueden ser analizados
individualmente. (Ej: módulos, programas, objetos y clases).
Niveles de prueba
19

Pruebas Unitarias
 Como se analizan individualmente, se utilizan “stubs” y

“drivers” para reemplazar el software faltante y simular las


interfaces entre los componentes del software. El “driver”
reemplaza a un componente que «llama» al componente a ser
probado; mientras que el “stubs” reemplaza a un componente
que es llamado por el componente bajo prueba.
Niveles de prueba
20

Pruebas Unitarias
 Generalmente ejecutados por desarrolladores.

 Se utilizan herramientas del entorno de desarrollo,


depuradores, etc. que permiten el acceso al código.
 Usualmente los errores se arreglan al momento (sin necesidad

de documentarlos)
 Utilizados en XP para preparar y automatizar casos de

prueba antes de codificar. Esto se llama una prueba de primer


enfoque o desarrollo basado en pruebas.
Niveles de prueba
21

Pruebas Unitarias
 Herramientas:

 JUnit
 TestNG (versión mejorada de JUnit)
 PHPUnit
 CPPUnit
 NUnit (.Net)
 MOQ (creación dinámica de objetos simuladores, mocks)
Pruebas unitarias automáticas
22

22
Pruebas unitarias automáticas
23

23
Niveles de prueba
24

Pruebas de Integración
 Prueba interfaces entre distintos componentes o
interacciones ente distintas partes de un sistema. Se pueden
dividir en:
 Pruebas de integración de componentes

 Prueba las interacciones entre los componentes de un sistema. Se


realiza después de las pruebas Unitarias (o de componentes)
 Pruebas de integración de sistemas
 Prueba las interacciones entre los sistemas. Generalmente se realiza
después de las pruebas de sistema.
Niveles de prueba
25

Pruebas de Integración - Estrategias


 Pruebas de integración ‟Big-Bang‟

 Se realiza cuando todos los componentes o sistemas están


completamente integrados
 Se prueba el integrado como un todo.
 Ventaja: No se tienen que simular partes.
 Desventaja: Ocupa tiempo y dificultad para rastrear fallas.
Niveles de prueba
26

Pruebas de Integración - Estrategias


 Pruebas de integración ‟paso por paso‟

 Los componentes se integran uno por uno y en cada integración se


realizan las pruebas.
 Testeo incremental.
 Ventaja: Fácil de rastrear las fallas
 Se deben simular partes, por lo que demanda más tiempo.
Niveles de prueba
27

Pruebas de Integración - Estrategias


 Top-Down: Las pruebas se realizan desde el principio hasta el

final, siguiendo el flujo de control.


Niveles de prueba
28

Pruebas de Integración - Estrategias


 Bottom-Up: Las pruebas se realizan desde el final del flujo de

control hasta el principio.


 Según funcionalidades: Las pruebas se llevan a cabo en base

a las funcionalidades según lo documentado en la


especificación funcional.
Niveles de prueba
29

Pruebas de Sistema
 Se concentra en el comportamiento de todo el sistema. Se

incluyen pruebas basadas en requerimientos, riesgos, casos de


uso, procesos de negocio, etc. Se realizan tanto pruebas
funcionales como no funcionales.
 Relacionado con el comportamiento de todo el sistema en su

totalidad, según haya sido redefinido en el alcance del


proyecto.
 Comprueba que el sistema construido cumpla con todas sus

especificaciones.
Niveles de prueba
30

Pruebas de Aceptación
 Se presenta el software al cliente para su aceptación.

 Es el cliente el que debe decidir si el producto ya está listo.

 Se realiza en un entorno de pruebas, simulando ser el entorno

donde será implementado el software.


 También se puede dividir en niveles. Ejemplos:

 Las pruebas de aceptación de usabilidad de componentes se deben


realizar durante las pruebas de componentes
 Las pruebas de aceptación para una nueva mejora de
funcionalidad se deben realizar antes de las pruebas de sistema.
Niveles de prueba
31

Pruebas de Aceptación
 Otros tipos de pruebas de aceptación:

 Pruebas de aceptación del usuario


 Pruebas de aceptación operacional
 Pruebas del contrato de aceptación
 Pruebas de regulación de aceptación
 Pruebas Alfa
 Pruebas Beta
Niveles de prueba
32

Pruebas de Aceptación: Pruebas Alfa


 Pruebas internas, generalmente por el mismo equipo

 Puede ser usuarios externos también, pero…

 Se realiza en el entorno del desarrollador

Pruebas de Aceptación: Pruebas Beta


 También llamado ‟pruebas de campo‟

 Siempre son usuarios externos usan el producto

 Ambientes de trabajo reales

 Los usuarios informan de los errores o incidentes encontrados


mientras usaban el producto
Tipos de prueba
33

 Los tipos de prueba son un medio para clarificar el objetivo


de ciertos niveles de prueba en un programa o proyecto.
 Enfocar las Pruebas en un específico objetivo de prueba y
seleccionar el apropiado tipo de prueba hace más fácil
comunicar y tomar decisiones.
Tipos de prueba
34

 Un tipo de prueba está enfocado en un particular objetivo de


prueba, el cual podría ser la prueba de una función a ser
realizada por un componente o sistema; una característica no
funcional, tal como la confiabilidad o la usabilidad; o pruebas
relativas a los cambios, como pruebas de confirmación o de
regresión.
 Los tipos son:
 Prueba Funcional
 Prueba No Funcional
 Prueba Estructural
 Prueba relacionadas a los cambios
Tipos de prueba
35

Prueba funcional
 La prueba funcional considera el comportamiento especificado

y se denomina también: Prueba de Caja Negra.


 El funcionamiento de un sistema o componente, está
especificado en:
 Especificación de Requerimientos
 Especificación Funcional
 Especificación de Componentes
 Casos de Uso
 Historias de Usuario, etc.
Tipos de prueba
36

Prueba funcional
 Pueden existir funciones no documentadas que serán

también parte de los


requerimientos de un sistema.
 Puedes ser realizada desde dos perspectivas:

 Basada en los requerimientos


 Basada en los procesos de negocio
Tipos de prueba
37

Prueba No funcional
 Un segundo objetivo de las pruebas es la prueba de las

características de calidad o atributos no funcionales del


sistema.
 Probamos algo que necesitamos medir en alguna escala de

medida.
 La prueba no funcional, así como la prueba funcional es

realizada en todos los niveles de prueba.


Tipos de prueba
38

Prueba No funcional
 Incluye las pruebas de:

 Carga
 Estrés
 Usabilidad
 Mantenibilidad
 Confiabilidad
 Portabilidad
Tipos de prueba
39

Prueba No funcional: De Estrés


 O también conocidas como pruebas de performance o

rendimiento
 Es el proceso de poner demanda en un sistema o dispositivo
y medir su respuesta
 Permite:

 Identificar cuellos de botella


 Reducir el riesgo de caídas del sistema
 Aprovechar los recursos de TI más eficientemente
 Conocer los límites que soporta el sistema
Tipos de prueba
40

Prueba No funcional: De Estrés


 Algunas herramientas para medir performance:

 JMeter
 Grinder
 LoadSim
 Apache benchmark
 Paessler
 WAPT
Tipos de prueba
41

Prueba Estructural
 Un tercer objetivo es la estructura del sistema o componente.

Es frecuentemente llamado Prueba de caja blanca, debido a


que el interés está en lo que ocurre dentro de la caja.
 Es frecuentemente usado como un modo para medir la

rigurosidad de las pruebas a través de la cobertura de un


conjunto de elementos estructurales.
 Es comúnmente aplicado a nivel de prueba de componentes y

pruebas de integración.
Tipos de prueba
42

Prueba relativas a los cambios


 El último objetivo de las pruebas es la prueba de los cambios.

 Prueba de confirmación: Ejecutar de nuevo la prueba para


confirmar que el defecto haya sido reparado.
 Pruebas de regresión: Las pruebas se realizan con la

intención de comprobar que el sistema no ha retrocedido (es


decir, que no tienen ahora más defectos en ella como
consecuencia de algún cambio) . Es decir se prueba lo que ya
se había probado anteriormente y pasó correcto.
Automatización de las pruebas
43

Elementos
 Gestor de pruebas

 Gestiona la ejecución de las pruebas del programa. Mantiene un


registro de los datos de las pruebas, resultados esperados y
facilidades probadas del programa.
 Generador de datos de prueba
 Genera datos de prueba para el programa a probar. Se logra
seleccionando datos de una base de datos o utilizando patrones
para generar datos aleatorios.
 Oráculo
 Predice resultados esperados de las pruebas. Pueden ser versiones
previas del programa o sistemas de prototipos.
Automatización de las pruebas
44

Elementos
 Las pruebas back-to-back implican ejecutar el oráculo y el
programa a probar, en paralelo.
 Las diferencias entre sus salidas son resaltadas.
 Comparador de ficheros.
 Compara los resultados de las pruebas del programa con los
resultados de pruebas previas e informa de las diferencias entre
ellos. Se utilizan en pruebas de regresión, donde se comparan los
resultados de ejecutar diferentes versiones.
 Generador de informes
 Proporciona informes y facilidades de generación para los
resultados de las pruebas.
Automatización de las pruebas
45

Elementos
 Analizador dinámico.

 Añade código a un programa para contar el número de veces que


se ha ejecutado cada sentencia. Después de las pruebas, se
genera un perfil de ejecución que muestra cuántas veces se ha
ejecutado cada sentencia del programa.
 Simulador.
 Hay varios tipos de simuladores. Los simuladores de la máquina
objetivo simulan la máquina sobre la que se ejecuta el programa.
Estrategias de pruebas
46

 Describe la técnica, patrón y/o herramientas a utilizarse en


el diseño de los casos de prueba. Por ejemplo en el caso de
pruebas unitarias de un procedimiento, esta sección podría
indicar “Se aplicará la estrategia caja de negra de
fronteras de la precondición”.
 En lo posible en la estrategia se debe precisar el número
mínimo de casos de prueba a diseñar
 La estrategia también explica el grado de automatización
que se exigirá, tanto para la generación de casos de
prueba como para su ejecución.
Estrategias de pruebas
47

 La estrategia define:
 Técnicas de pruebas (manual o automática) y herramientas a ser
usadas.
 Qué criterios de éxito y culminación de la prueba serán usados.
 Consideraciones especiales afectadas por requerimientos de
recursos o que tengan implicaciones en la planificación.
 En resumen, son todos los métodos que facilitan probar los
niveles y tipos de pruebas definidos mediante casos de
prueba
Plan de pruebas
48

Objetivo
 Señalar el enfoque, los recursos y el esquema de

actividades de prueba, así como los elementos a probar, las


características, las actividades de prueba, el personal
responsable y los riesgos asociados
 Puede haber un plan global que explique el énfasis en

realizar sobre los distintos tipos de prueba (verificación,


integración, aceptación)
Plan de pruebas
49

Documentos
 Según el estándar IEEE 829,

se definen varios
documentos relacionados con
el diseño de las pruebas
Plan de pruebas
50

Relación con las estrategias de pruebas


 El plan de pruebas es la suma de la estrategias de pruebas

y la logística para realizar las pruebas


 Una estrategia de prueba es lo que quieres probar.
Logística de las pruebas son los recursos que se necesita
para poner en marcha lo que se quiere probar, con la
forma en que deseas probar. Y la unión de esta pareja es
el Plan de pruebas: factores como el donde, el cuando y el
con que, las pruebas se llevará a cabo.
Plan de pruebas
51

¿Cuál viene primero?


 No se debe forzar un primero; ya que cada uno de ellos

evoluciona a medida que avanza el proyecto. Pero si lo que


realmente interesa es la documentación de estos elementos,
entonces la estrategia de prueba vendría antes del plan de
pruebas.
Plan de pruebas
52

Ejemplo de caso de prueba


 ID Caso de prueba
 Descripción de la prueba
 Resultados esperados
 Resultados actuales
 Indicador si pasó o falló
 Anotaciones
Plan de pruebas
53

Ejemplo de caso de prueba (2)


 Se puede especificar en detalle los datos y la secuencia de
pasos para la prueba
Plan de pruebas
54

Ejemplo de caso de prueba (3)


 Pueden ser cuadros más resumidos
Plan de pruebas
55

Documento de Pruebas
 Objetivo
 Alcance
 Esquema de Pruebas
 Pruebas de Interface
 Pruebas de Funcionalidad
 Pruebas de Integración
 Condiciones de Excepción
 Pruebas de Mensajes de Error
 Pruebas de Integridad
Plan de pruebas
56

 Pruebas de Seguridad
 Pruebas de Performance
 Requerimientos para pruebas
 De datos
 De simuladores
 De hardware
 De software
 Recursos humanos
 Cronograma de pruebas
Herramientas para pruebas
57

 TestLink
 Qmetry
 TestRail
 qTest
 PractiTest
 Zephyr
 TestLodge
 Selenium
Resumen
58

 Un defecto es una manifestación de un error en software. El


fallo es un defecto encontrado.
 Verificación responde a la pegunta: ¿Estamos construyendo
el producto correctamente? , mientras que validación
responde a ¿Estamos construyendo el producto correcto?
 Las pruebas son una actividad en la cual un sistema o uno
de sus componentes se ejecuta en circunstancias
previamente especificadas, los resultados se observan y
registran y se realiza una evaluación de algún aspecto
 Los cuatro niveles de pruebas son: unitarias, de integración,
de aceptación y de sistema
 Los tipos de prueba son funcional, no funcional, estructural y
relacionada a cambios.
¿Preguntas?
59

 ¿Cuáles son los principales niveles y tipos de


pruebas?
Referencias
60

 Eric Braude, Ingeniería de Software. Una perspectiva


orientada a objetos (1ra. Edición)
 Capítulo 9, Integración, verificación y validación del sistema
 Ingeniería de Software. Un enfoque desde la guía SWEBOK
(1ra. edic.), Salvador Sánchez, Miguel Ángel Sicilia, Daniel
Rodríguez
 Capítulo 7: Pruebas
 Guillermo Pantaleo, Ludmila Rinaudo, Ingeniería de
Software (1ra. Edición)
 Capítulo 16, Pruebas de software
 Capítulo 17, Proceso de pruebas de software
 Roger S. Pressman, Ingeniería de Software: Un enfoque
práctico (7ma edición)
 Capítulo 17: Estrategias de pruebas de software

Potrebbero piacerti anche