Académique Documents
Professionnel Documents
Culture Documents
3
0 – General
01 – Contenidos de la Presentación
4
0 – General
02 – Contenido
• Capítulo I Introducción.
• Capítulo II Principios de las pruebas de software.
• Capítulo III Pruebas durante el ciclo de vida del software.
• Capítulo IV Técnicas estáticas.
• Capítulo V Técnicas de prueba (dinámicas).
• Capítulo VI Gestión de las pruebas.
• Capítulo VII Herramientas de Pruebas.
5
0 – General
03 – Programa
El seminario de tres días con posible evaluación final por parte del
ISTQB incluye :
6
0 – General
04 – Documentación
• Un manual completo.
• Un conjunto de preguntas de tipo test para preparar el examen.
• Listas de bibliografía, estándares, etc.
• Referencias:
• Certified Tester Foundation Level Syllabus Maintenance Release
(Marzo de 2010)
• ISTQB Glossary of terms used in Software Testing Version 2.1
7
0 – General
05 – Evaluación
8
0 – General
06 – Niveles de Conocimiento
9
10
Capítulo I – Introducción
• I/01 Destinatarios.
• I/02 ISTQB / Organizaciones Internacionales.
• I/03 Probador certificado.
11
I – Introducción
01 – Destinatarios
12
I – Introducción
02 – ISTQB / Organizaciones Internacionales
14
15
Capítulo II – Fundamentos de las
pruebas de Software
• II/01 Conceptos y definiciones.
• II/02 ¿Por qué es necesario probar?.
• II/03 ¿Qué son las pruebas (Testing)?
• II/04 Problemática de la comprobación y las pruebas.
• II/05 Siete Principios de las Pruebas.
• II/06 Proceso de pruebas fundamental.
• II/07 Psicología de las pruebas.
• II/08 Código de buenas prácticas.
• II/09 Resumen.
16
II - Fundamentos de las pruebas de software
01 – Conceptos y definiciones
• Depuración:
Localización y corrección de errores internos.
• Prueba:
Búsqueda dirigida y sistemática de los efectos del error, para demostrar
defectos.
• Prueba de Software:
Cada ejecución de un objeto de prueba que sirva para su comprobación.
18
II - Fundamentos de las pruebas de software
01 – Conceptos y definiciones
19
II - Fundamentos de las pruebas de software
01 – Conceptos y definiciones
Calidad de Software
20
II - Fundamentos de las pruebas de software
01 – Conceptos y definiciones
Calidad de Software
• La Calidad de Software según la norma ISO / IEC 9126 abarca:
• Funcionalidad.
• Fiabilidad.
• Usabilidad.
• Eficiencia.
• Mantenibilidad.
• Portabilidad.
• El aseguramiento de la calidad (QS/QA) diferencia entre:
• Medidas constructivas para evitar errores (p.ej. mediante métodos
adecuados de ingeniería de software).
• Métodos analíticos para la detección de errores (p. ej. mediante
pruebas, ya que el descubrimiento de errores sirve para corregir
defectos y elevar de esta manera la calidad del software).
21
II - Fundamentos de las pruebas de software
01 – Conceptos y definiciones
Medidas QA
constructivas
Medidas Medidas
Técnicas Organizativas
Listas de Requisitos
Métodos Herramientas Directrices Estándares
Chequeo legales
Plantillas
• Motivación principal:
Los errores que no se cometen no necesitan ser corregidos.
22
II - Fundamentos de las pruebas de software
01 – Conceptos y definiciones
Medidas QA
analíticas
Medidas Medidas
estáticas dinámicas
Análisis de
código. • Partición de equivalencia
Compiladores • Análisis de valores límite • Cobertura de sentencias
• Transición de estados • Cobertura de decisiones o
• Tablas de decisión ramas
• Cobertura de condiciones
23
II – Fundamentos de las pruebas de software
02.1 – ¿Por qué es necesario probar?
24
II – Fundamentos de las pruebas de software
02.1 – ¿Por qué es necesario probar?
25
II – Fundamentos de las pruebas de software
02.1 – ¿Por qué es necesario probar?
26
II – Fundamentos de las pruebas de software
02.1 – ¿Por qué es necesario probar?
Ejemplo: Phobos 1
• Al margen del error, parecería lógico haber “asegurado” una orden tan crítica
como demostró ser la que se envió. Estaba previsto, pero la versión definitiva
del código que la contenía no se implantó a causa de las prisas en la
finalización de los trabajos.
27
II – Fundamentos de las pruebas de software
02.1 – ¿Por qué es necesario probar?
28
II – Fundamentos de las pruebas de software
02.2 – ¿Por qué es necesario probar?
• Las causas de los errores (al margen de la falibilidad del ser humano)
pueden ser: presión en los tiempos, complejidad de la aplicación o la
arquitectura, tecnologías cambiantes, existencia de un gran número de
interfaces, etc.
29
II – Fundamentos de las pruebas de software
02.3 – ¿Por qué es necesario probar?
• Los errores que se detecten antes del uso del software pueden ser corregidos
antes de que generen fallos.
30
II - Fundamentos de las pruebas de software
02.4 – ¿Por qué es necesario probar?
Calidad de Software
• Fiabilidad
• Capacidad de un software / un sistema de mantener un rendimiento /
funcionalidad bajo condiciones predeterminas durante un periodo de
tiempo definido.
• Da una idea del comportamiento de la calidad a lo largo del tiempo.
• Factores asociados: tolerancia a fallos, capacidad de recuperación
ante fallos.
• Usabilidad*
• Un software es usable si es:
• Fácil de entender (uso intuitivo).
• Fácil de aprender.
• Existe normativa específica.
* ver ISO / IEC 9241.
32
II - Fundamentos de las pruebas de software
02.4 – ¿Por qué es necesario probar?
33
II - Fundamentos de las pruebas de software
02.4 – ¿Por qué es necesario probar?
• Ejemplos:
• Una descripción puede dejar de ser concisa en aras de la claridad.
• Un software puede ser redundante (y con ello más difícil de mantener)
para aumentar su fiabilidad.
• Una base de datos lo puede ser para mejorar los tiempos de acceso.
34
II - Fundamentos de las pruebas de software
02.5 – ¿Por qué es necesario probar?
35
II - Fundamentos de las pruebas de software
02.5 – ¿Por qué es necesario probar?
¿Cuánto esfuerzo en pruebas es suficiente?
36
II - Fundamentos de las pruebas de software
02.5 – ¿Por qué es necesario probar?
• Criterios de finalización
• No localizar defectos durante un tiempo determinado.
Es una métrica simple pero no es suficiente. La posibilidad de que exista un
error crítico podría forzar la continuación de las pruebas.
37
II - Fundamentos de las pruebas de software
02.5 – ¿Por qué es necesario probar?
• Criterios de finalización
La pendiente de la curva
representa el número total
de fallos encontrados, es
muy pronunciada hasta
casi el final de los 18
intervalos de pruebas, a
partir de este punto el
crecimiento de fallos irá
decreciendo hasta hacerse
nulo, momento en el que
ya se habrán encontrado
todos los fallos esperados.
38
II - Fundamentos de las pruebas de software
02.5 – ¿Por qué es necesario probar?
• Criterios de finalización
Las técnicas de crecimiento de fiabilidad del software, se utilizan para estimar
la tasa de fallos y la fiabilidad de un sistema de software durante la fase de
pruebas de su desarrollo. Además, se podrá predecir el número de fallos que
tendrá un sistema en la fase de producción, de forma que el gestor del
proyecto dispondrá de una útil herramienta de decisión para:
1. Establecer si el conjunto de pruebas al que ha sido sometido el sistema
ha resultado suficiente de forma que se pueda autorizar su paso a
producción.
2. Reducir la posibilidad de que ocurra una incidencia grave en producción.
3. Estimar el momento, durante la fase de pruebas, en que se alcanzan los
objetivos de fiabilidad del sistema.
39
II - Fundamentos de las pruebas de software
03 – ¿Qué son las pruebas (Testing)?
40
II - Fundamentos de las pruebas de software
03 – ¿Qué son las pruebas (Testing)?
41
II - Fundamentos de las pruebas de software
04 – Problemática de la comprobación y las pruebas
42
II - Fundamentos de las pruebas de software
04 – Problemática de la comprobación y las pruebas
• Alcance
• El alcance de las pruebas debe ser, por consiguiente, reducido - esto
sucede en función de la relación entre Prioridades y Riesgo establecida
utilizando formas de proceder sistemáticas.
• Un alto esfuerzo de pruebas para la eliminación de fallos “menores” no está
justificado.
• Implementar un programa sin comprobar los errores en sus características
esenciales no tiene mucho sentido.
• En la práctica se prueba mediante casos puntuales.
• En todo caso, esta prueba puntual se determina en la práctica de
manera analítica.
43
II - Fundamentos de las pruebas de software
04 – Problemática de la comprobación y las pruebas
• Costes
• Las pruebas originan altos costes dentro del desarrollo de software
• Sobre todo en grandes proyectos de IT el esfuerzo para realizar las
pruebas puede ser el mayor de todos respecto del esfuerzo total
empleado.
• Las pruebas tempranas contribuyen a la mejora del proceso de
desarrollo y reducen de esta manera los costes (entre otras causas
por la reducción de errores descubiertos en fases posteriores del
desarrollo de software, ya que ahí el descubrimiento de fallos y su
resolución conlleva un esfuerzo claramente mayor).
44
II - Fundamentos de las pruebas de software
04 – Problemática de la comprobación y las pruebas
• Costes
• Los errores que no se encuentran en las pruebas también producen
costes (Coste de Errores):
• Pérdidas de imagen, esfuerzos para las correcciones y
compensación de daños amenazan al productor.
• Errores o pérdidas de datos y tiempos de inactividad son las
consecuencias para los clientes.
45
II - Fundamentos de las pruebas de software
05 – Siete Principios de las Pruebas
46
II - Fundamentos de las pruebas de software
05 – Siete Principios de las Pruebas
47
II - Fundamentos de las pruebas de software
05 – Siete Principios de las Pruebas
Las actividades de prueba deberían iniciarse tan pronto como sea posible
en el ciclo de vida de desarrollo y deberían tener objetivos concretos.
48
II - Fundamentos de las pruebas de software
05 – Siete Principios de las Pruebas
49
II - Fundamentos de las pruebas de software
05 – Siete Principios de las Pruebas
Si se repiten una y otra vez los casos de prueba, se llegará a que el mismo
conjunto de casos de prueba no sirva para localizar nuevos defectos. Para
superar esta “paradoja del pesticida”, los casos de prueba necesitan ser
revisados de manera regular y se necesita escribir casos nuevos (y
diferentes) para ejercitar diferentes partes del software o sistema para
localizar más defectos.
50
II - Fundamentos de las pruebas de software
05 – Siete Principios de las Pruebas
51
II - Fundamentos de las pruebas de software
05 – Siete Principios de las Pruebas
52
II - Fundamentos de las pruebas de software
06 – Proceso de pruebas fundamental
53
II - Fundamentos de las pruebas de software
06 – Proceso de pruebas fundamental
54
II - Fundamentos de las pruebas de software
06.1 – Proceso de pruebas fundamental
Planificación de las pruebas
• Comienza con el inicio del proceso de desarrollo
• Principales tareas:
Inicio
• Determinar el alcance y los riesgos.
• Identificar los objetivos de las pruebas y los Planificación y
criterios de finalización. control
• Seleccionar y priorizar las pruebas (p.ej. según el
riesgo). Análisis y diseño
• Determinar las técnicas, cobertura, herramientas,
entorno y equipos de prueba.
Implementación y
• Determinar los métodos y estrategia. Ejecución
• Planificar las actividades.
Evaluación y
• Adquirir/planificar los recursos.
Documentación
• Personal.
• Entorno y medios de apoyo.
Cierre
• Coste.
• La planificación debe tomar en consideración la
información que le proporcionen las actividades Fin
de control y monitorización.
55
II - Fundamentos de las pruebas de software
06.1 – Proceso de pruebas fundamental
• Principales tareas:
• Tomar decisiones basadas en la información que le proporciona la Cierre
monitorización de las pruebas.
• Repriorizar las pruebas cuando aparece un riesgo identificado (por Fin
ejemplo, retraso en la entrega del sw).
• Cambiar la planificación según la disponibilidad del entorno.
56
II - Fundamentos de las pruebas de software
06.2 – Proceso de pruebas fundamental
57
II - Fundamentos de las pruebas de software
06.3 – Proceso de pruebas fundamental
58
II - Fundamentos de las pruebas de software
06.3 – Proceso de pruebas fundamental
59
II - Fundamentos de las pruebas de software
06.4 – Proceso de pruebas fundamental
60
II - Fundamentos de las pruebas de software
06.4 – Proceso de pruebas fundamental
61
II - Fundamentos de las pruebas de software
06.4 – Proceso de pruebas fundamental
62
II - Fundamentos de las pruebas de software
06.5 – Proceso de pruebas fundamental
Actividades de cierre
• Recoger datos de las actividades de prueba
Inicio
completadas para consolidar experiencia.
• Cierre de los informes de incidencias o apertura de Planificación y
control
solicitudes de cambio para todos los puntos que
sigan abiertos.
• Comprobación de que entregables han sido Análisis y diseño
63
II - Fundamentos de las pruebas de software
07 – Psicología de las pruebas
64
II - Fundamentos de las pruebas de software
07 – Psicología de las pruebas
65
II - Fundamentos de las pruebas de software
07 – Psicología de las pruebas
El desarrollador. El probador.
• Transforma los requisitos. • Planifica sus pruebas.
• Desarrolla estructuras. • Especifica casos de prueba.
• Programa el software. • Sólo quiere encontrar errores.
• Consigue un producto. • Los errores del programador son
su éxito.
⇒ ¡El desarrollador es constructivo!. ⇒ ¡El probador es destructivo!.
¡Falso!
¡También las pruebas son constructivas, ya que su objetivo es
un producto libre de errores!
66
II - Fundamentos de las pruebas de software
07 – Psicología de las pruebas
Las dificultades
• El probador experimentado mantiene una distancia suficiente respecto del
objeto de la prueba.
• Cuanto más alejado esté el probador del desarrollo más
independientemente y más objetivamente podrá llevar a cabo su trabajo.
• Una distancia demasiado grande respecto del objeto de prueba puede,
sin embargo, provocar que se necesite más tiempo para las pruebas.
67
II - Fundamentos de las pruebas de software
07 – Psicología de las pruebas
68
II - Fundamentos de las pruebas de software
07 – Psicología de las pruebas
69
II - Fundamentos de las pruebas de software
07 – Psicología de las pruebas
70
II - Fundamentos de las pruebas de software
07 – Psicología de las pruebas
71
II - Fundamentos de las pruebas de software
07 – Psicología de las pruebas
72
II - Fundamentos de las pruebas de software
07 – Psicología de las pruebas
Problemas de comunicación
• Especialmente en fases del proyecto estresantes la notificación de los
errores puede generar problemas, sobre todo si los probadores son vistos
como portadores de malas noticias.
• La manera de notificar el error y la descripción del mismo son decisivos.
• No criticar a las personas sino mostrar el error de forma objetiva.
• Facilitar la solución del error al desarrollador mediante la notificación.
• El objetivo común debe estar siempre en primer plano.
• Una comunicación insuficiente o la ausencia de ésta entre probadores y
desarrolladores puede impedir el buen trabajo en equipo.
• En ocasiones, no hay entendimiento entre el equipo de pruebas y el de
desarrollo.
• Los desarrolladores deberían tener nociones básicas de pruebas.
• Los probadores deberían conocer las características esenciales del desarrollo de
software.
73
II - Fundamentos de las pruebas de software
07 – Psicología de las pruebas
Problemas de comunicación
74
II - Fundamentos de las pruebas de software
08 – Código de buenas prácticas
Necesario porque:
• Debido a su participación en las pruebas del software el probador podría
acceder a cierta información privilegiada y confidencial.
• Es necesario, entre otras razones, asegurar que dicha información no es
objeto de un uso inapropiado.
El ISTQB establece el siguiente código de buenas prácticas:
• PUBLICO: Los probadores de software certificados actuarán conforme al interés
público.
• CLIENTE Y PROVEEDOR: Los probadores de software certificados actuarán de la
mejor manera posible para el interés de sus clientes y proveedores a los que
pertenecen, de conformidad con el interés público.
• PRODUCTO: Los probadores de software certificados asegurarán que los entregables
que proporcionen cumplan con los más altos estándares profesionales posibles.
• JUICIO: Los probadores de software certificados mantendrán integridad e
independencia en sus juicios profesionales.
75
II - Fundamentos de las pruebas de software
08 – Código de buenas prácticas
76
II - Fundamentos de las pruebas de software
09 – Resumen
77
II - Fundamentos de las pruebas de software
09 – Resumen
78
79
Capítulo III – Las pruebas en el ciclo
de vida del software
• III/01 Modelos de desarrollo de software.
• III/02 Niveles de prueba.
• Pruebas de componentes.
• Pruebas de integración.
• Pruebas del sistema.
• Pruebas de aceptación.
• III/03 Tipos de prueba.
• III/04 Pruebas de mantenimiento.
• III/05 Resumen.
80
III – Las pruebas en el ciclo de vida del software
01 – Modelos de desarrollo de software
Modelos de procedimiento
• Los modelos de procedimiento relacionan métodos de desarrollo de software
con fases de proyecto para permitir un desarrollo del proyecto estandarizado.
• Las pruebas encajan en el modelo, estando asociadas a actividades de
desarrollo.
• Ejemplos de modelos de procedimiento:
• Modelo en cascada.
• Modelo genérico en V.
• Modelo en V 97 (Modelo de procedimiento de la federación).
• Modelo en V XT (nuevo modelo de procedimiento de la federación [2004]).
• Extreme Programming (XP).
81
III – Las pruebas en el ciclo de vida del software
01.1 – Modelos de desarrollo de software
82
III – Las pruebas en el ciclo de vida del software
01.1 – Modelos de desarrollo de software
83
III – Las pruebas en el ciclo de vida del software
01.1 – Modelos de desarrollo de software
84
III – Las pruebas en el ciclo de vida del software
01.1 – Modelos de desarrollo de software
Pruebas de
integración
• Pruebas de integración.
Pruebas de
• Probar si los componentes individuales componentes
trabajan en conjunto tal y como se
esperaba. Codificación
85
III – Las pruebas en el ciclo de vida del software
01.1 – Modelos de desarrollo de software
Pruebas de
integración
• Pruebas de aceptación.
Pruebas de
• Pruebas del cliente para comprobar el componentes
cumplimiento de los requisitos
especificados. Codificación
86
III – Las pruebas en el ciclo de vida del software
01.1 – Modelos de desarrollo de software
Codificación
Desarrollo
e integración
Verificación
87
III – Las pruebas en el ciclo de vida del software
01.1 – Modelos de desarrollo de software
Especificación Pruebas de
de requisitos aceptación
Codificación
88
III – Las pruebas en el ciclo de vida del software
01.1 – Modelos de desarrollo de software
Especificación Pruebas de
de requisitos aceptación
Codificación
89
III – Las pruebas en el ciclo de vida del software
01.1 – Modelos de desarrollo de software
Codificación
90
III – Las pruebas en el ciclo de vida del software
01.2 – Modelos de desarrollo de software
Modelos de desarrollo iterativos-incrementales
• Desarrollo de software iterativo
• Las actividades: definición de requisitos, diseño, desarrollo y pruebas se dividen en
etapas pequeñas y se lanzan continuamente.
• Para poder reorientar el proyecto si es necesario debe alcanzarse un consenso con
el usuario tras cada iteración.
• Ejemplos de modelos iterativos
• Prototipado: construcción rápida de una representación utilizable del sistema,
seguida de modificaciones sucesivas hasta que el sistema esté preparado.
• Rapid Application Development (RAD): la interfaz del usuario se implementa
mediante funcionalidad comercial, ignorando la funcionalidad que será desarrollada
con posterioridad.
• Rational Unified Process (RUP): modelo orientado a objeto, producto de Rational /
IBM. Proporciona sobre todo el lenguaje UML y soporte para el proceso unificado.
• Modelos de desarrollo ágiles, como Extreme Programming (XP): el desarrollo y las
pruebas se llevan a cabo sin que exista una especificación de requisitos
formalizada.
91
III – Las pruebas en el ciclo de vida del software
01.3 – Modelos de desarrollo de software
Las pruebas dentro del modelo de ciclo de vida
• Hay varias características asociadas a unas buenas pruebas que aplican a
todos los modelos de ciclo de vida:
• Para cada actividad de desarrollo hay una actividad de prueba asociada
• Cada nivel de prueba tiene objetivos específicos al nivel.
• Debería iniciarse el análisis y diseño de las pruebas de cada nivel durante la
actividad de desarrollo asociada
• Los probadores debieran involucrarse en la revisión de documentación tan pronto
como estén disponibles los borradores
• Se pueden combinar o reorganizar los niveles de prueba en función de la
naturaleza del proyecto o de la arquitectura del sistema. Por ejemplo, para la
integración de un software comercial (COTS) en un sistema, el comprador
podría llevar a cabo pruebas de integración a nivel de sistema (esto es:
integración con la infraestructura y con otros sistemas, o despliegue del
sistema) y pruebas de aceptación (pruebas funcionales y/o no funcionales; y
operacionales y/o de usuario).
92
III – Las pruebas en el ciclo de vida del software
02.1 – Niveles de prueba. Pruebas de componentes
Definiciones y conceptos
• Pruebas de componentes (Definición):
Pruebas de cada uno de los componentes básicos del software (componentes)
respecto de su programación.
Debido a las diferentes definiciones de componentes básicos de software en
los distintos lenguajes de programación existen diferentes definiciones para
las pruebas de componentes:
• Pruebas de módulo (denominadas así, p.ej., en C).
• Pruebas de clases (denominadas así, p.ej., en Java o C++ ).
• Pruebas de unidad (denominadas así, p.ej., en Pascal).
• Los componentes comprobados serán, respectivamente, módulos, clases o
unidades.
93
III – Las pruebas en el ciclo de vida del software
02.1 – Niveles de prueba. Pruebas de componentes
¿Qué se prueba?
• Pruebas completas de los componentes individuales.
• Un componente puede estar formado por varios elementos más simples.
• Comentario.:
A nivel de pruebas de componentes puede tener sentido la ejecución de
pruebas de carga.
94
III – Las pruebas en el ciclo de vida del software
02.1 – Niveles de prueba. Pruebas de componentes
¿Dónde y como se prueba?
95
III – Las pruebas en el ciclo de vida del software
02.1 – Niveles de prueba. Pruebas de componentes
Generalidades
• Fuentes de casos:
• Especificación del componente.
• Diseño de SW.
• Modelo de datos.
• Objetos de prueba típicos:
• Componentes.
• Programas.
• Conversión de datos / migración de programas.
• Módulos de base de datos.
• Los defectos suelen corregirse según se prueba.
• No se suelen documentar los errores.
• Una posible aproximación es preparar y automatizar las pruebas antes de
codificar (“test first approach” o “test driven development”). Son modelos
iterativos válidos para cuando las modificaciones suelen ser pequeñas.
96
III – Las pruebas en el ciclo de vida del software
02.1 – Niveles de prueba. Pruebas de componentes
¿Dónde y como se prueba?
• Para la ejecución de los casos de prueba se utilizan, por regla general, stubs
(maquetas) y, según el caso, controladores de pruebas
• El controlador de pruebas constituye o utiliza la interfase abierta del objeto de
prueba (componente)
• Los controladores de pruebas posibilitan la ejecución de los componentes en el
entorno del software
• Los controladores de pruebas simulan entradas, p.ej., del usuario
• Los controladores de pruebas recogen valores de salida
• Los controladores de pruebas proporcionan normalmente entornos de ejecución
de software
• Opcionalmente un controlador de pruebas también permite el registro de
diferentes valores.
97
III – Las pruebas en el ciclo de vida del software
02.1 – Niveles de prueba. Pruebas de componentes
¿Dónde y como se prueba?
• Los controladores de pruebas pueden ser programados por uno mismo si:
• Se tiene conocimientos de programación.
• El código de programa está disponible.
• Se dispone de herramientas de programación.
98
III – Las pruebas en el ciclo de vida del software
02.1 – Niveles de prueba. Pruebas de componentes
Relación entre:
• Componentes,
• Controladores de pruebas,y
• Stubs.
Controlador Datos
Componente
de pruebas de prueba
Stub
99
III – Las pruebas en el ciclo de vida del software
02.1 – Niveles de prueba. Pruebas de componentes
¿Porqué se prueba?
• Pruebas funcionales
• Las pruebas de componentes deben asegurar su funcionalidad:
• ¿Se cumplen todas las especificaciones?.
• ¿Se ejecutan correctamente todas las funciones?.
• Cada una de las funciones de un componente se comprueba, al menos,
con un caso de prueba.
• Los errores frecuentes que se pueden encontrar con estas pruebas son:
• Errores en la elaboración.
• Ausencia de funciones.
100
III – Las pruebas en el ciclo de vida del software
02.1 – Niveles de prueba. Pruebas de componentes
¿Porqué se prueba?
• Pruebas de robustez
• Se prueba cómo de robusto es un componente.
• La robustez describe la capacidad de respuesta de un software frente a
entradas incorrectas, etc.
• La robustez se prueba mediante casos de prueba negativos.
• Los casos de prueba negativos son casos que contienen datos de entrada
incorrectos o no permitidos.
• Si el componente dispone de un tratamiento de excepciones para cada
posible entrada de datos errónea, se considera robusto.
• Sin el correspondiente tratamiento de excepción los datos erróneos se
introducen en el proceso y pueden ocasionar errores.
• Las posibles consecuencias son caídas y mal funcionamiento de los
componentes
101
III – Las pruebas en el ciclo de vida del software
02.1 – Niveles de prueba. Pruebas de componentes
¿Porqué se prueba?
• Otras pruebas posibles
• Según los requisitos también deben ser cumplidas otras características
de la calidad de software.
102
III – Las pruebas en el ciclo de vida del software
02.2 – Niveles de prueba. Pruebas de integración
Definiciones y conceptos
• Prueba de integración (Definición):
Pruebas de la interrelación de los elementos del software (componentes) tras
su integración
103
III – Las pruebas en el ciclo de vida del software
02.2 – Niveles de prueba. Pruebas de integración
¿Qué se prueba?
104
III – Las pruebas en el ciclo de vida del software
02.2 – Niveles de prueba. Pruebas de integración
¿Qué se prueba?
• En las pruebas de integración se comprueban también las interfases con el
entorno del sistema.
105
III – Las pruebas en el ciclo de vida del software
02.2 – Niveles de prueba. Pruebas de integración
106
III – Las pruebas en el ciclo de vida del software
02.2 – Niveles de prueba. Pruebas de integración
107
III – Las pruebas en el ciclo de vida del software
02.2 – Niveles de prueba. Pruebas de integración
108
III – Las pruebas en el ciclo de vida del software
02.2 – Niveles de prueba. Pruebas de integración
¿Por qué se prueba?
• Los errores de interfase no aparecen hasta después de la integración de los
elementos básicos:
• Si se cambian los controladores de pruebas y los stubs por interfases de
componentes “reales” pueden aparecer circunstancialmente errores.
• P. ej. se pueden perder ciertos datos, no transmitirse o transmitirse de manera
errónea, etc.
• Las pruebas de integración deberían asentarse sobre las pruebas de
componentes:
• Todos los errores de las pruebas de componentes podrían ser encontrados, en
principio, en las pruebas de integración pero sería muy complicado localizarlos.
• Probar los componentes en el nivel de integración es confuso.
• No todos los casos de prueba pueden siquiera “lanzarse”.
109
III – Las pruebas en el ciclo de vida del software
02.2 – Niveles de prueba. Pruebas de integración
Pruebas e integración
• Existen diferentes alternativas para las estrategias de integración.
• Generalmente las estrategias serán establecidas por el gestor/responsable de
pruebas.
• El modo de proceder incremental es común a todas las estrategias (excepción:
Big Bang).
• La elección de la estrategia deberá tener en cuenta la eficiencia de las
pruebas
• La estrategia de integración decide acerca del esfuerzo de las pruebas (p.ej.
utilización de herramientas, programación de controladores de pruebas, stubs
etc.)
• La terminación de los componentes fija para cada estrategia de integración el
marco temporal.
• Sin unos componentes probados no es eficaz una estrategia de integración
encaminada a ahorrar esfuerzos.
110
III – Las pruebas en el ciclo de vida del software
02.2 – Niveles de prueba. Pruebas de integración
Pruebas e integración
• En función del proyecto se deberá sopesar entre el ahorro de tiempo y el
esfuerzo para las pruebas:
• Probar lo que está terminado – eventualmente mayor esfuerzo, por el
contrario, no existen periodos de inactividad.
• Seguir una estrategia establecida – menor esfuerzo pero, por el
contrario, eventualmente, periodos de inactividad.
111
III – Las pruebas en el ciclo de vida del software
02.2 – Niveles de prueba. Pruebas de integración
Pruebas e integración
• Estrategias de integración
• Estrategia Bottom-Up:
• Se lleva a cabo una integración de abajo a arriba.
• Se empieza por aquellos componentes que no llaman a otras partes del
programa.
• Siguen paso a paso los componentes que sólo llaman a la parte ya
integrada.
• Se aplica en desarrollos nuevos, pruebas de equipos grandes y
distribuidos.
112
III – Las pruebas en el ciclo de vida del software
02.2 – Niveles de prueba. Pruebas de integración
Pruebas e integración
• Estrategias de integración
• Características de la estrategia Bottom-Up:
• No existen huecos que deban ser completados por stubs.
• Los componentes superiores deben ser simulados mediante controladores
de pruebas.
• Implantación de la estrategia Bottom-Up:
• La implantación de la estrategia sólo es posible para software construido
jerárquicamente de manera constante – por ello en su forma pura no tiene
apenas relevancia práctica.
113
III – Las pruebas en el ciclo de vida del software
02.2 – Niveles de prueba. Pruebas de integración
Pruebas e integración
• Estrategias de integración
• Estrategia Top-Down:
• La integración se lleva a cabo sistemáticamente de arriba a abajo.
• Se empieza por los componentes que no son llamadas desde otros
componentes del software.
• Paso a paso se integran aquellos componentes que únicamente son
llamados desde la parte ya integrada.
• Se aplica cuando se utiliza software ajeno o Frameworks.
114
III – Las pruebas en el ciclo de vida del software
02.2 – Niveles de prueba. Pruebas de integración
Pruebas e integración
• Estrategias de integración
• Características de la estrategia Top-Down:
• Debido a la forma de proceder no son necesarios controladores de
pruebas.
• Todos los componentes subordinados deben ser sustituidos por stubs.
115
III – Las pruebas en el ciclo de vida del software
02.2 – Niveles de prueba. Pruebas de integración
Pruebas e integración
• Estrategias de integración
• Integración orientada al proceso de negocio:
• La integración se lleva a cabo por procesos de negocio.
• En cada caso se integran los componentes necesarios por parte de un
proceso de negocio.
• También se denominan como pruebas End-to-End.
• Características de la integración orientada al proceso de negocio:
• Los controladores de pruebas sustituyen los componentes de rango
superior.
• Todos los componentes subordinados de deben sustituir por stubs.
116
III – Las pruebas en el ciclo de vida del software
02.2 – Niveles de prueba. Pruebas de integración
Pruebas e integración
• Estrategias de integración
• Integración orientada a funciones:
• La integración se orienta a una función del sistema escogida.
• Se integra cada uno de los componentes necesitados por la función
correspondiente del sistema.
117
III – Las pruebas en el ciclo de vida del software
02.2 – Niveles de prueba. Pruebas de integración
Pruebas e integración
• Estrategias de integración
• Integración Ad-Hoc:
• Los componentes ya probados son integrados – en tanto sea posible-
inmediatamente después de su programación y comprobación exitosa.
• Características de la integración Ad-Hoc:
• No existen retrasos en las pruebas, por lo que ocasionalmente se puede
lograr un acortamiento del proceso completo de desarrollo del software.
• Dependiendo del tipo de componente terminado pueden ser necesarios
stubs y controladores de pruebas.
• Implantación de la estrategia Ad-Hoc:
• La integración Ad-Hoc puede ser empleada en cualquier situación – en la
práctica suele ser combinada con otras estrategias.
118
III – Las pruebas en el ciclo de vida del software
02.2 – Niveles de prueba. Pruebas de integración
Pruebas e integración
• Estrategias de integración
• Integración no incremental (big bang):
• Se integra en el momento en que se dispone de todos los componentes.
• Esta estrategia se aplica, p. ej., en proyectos de mantenimiento o
ampliación, así como en el marco de migraciones.
• Características de la integración no incremental:
• El área de las pruebas tiene mucho “tiempo muerto” – no se puede probar
durante largo tiempo.
• Las pruebas se hacen más complicadas y más amplias - los efectos de los
errores aparecen con frecuencia y son difíciles de rastrear.
119
III – Las pruebas en el ciclo de vida del software
02.2 – Niveles de prueba. Pruebas de integración
Pruebas e integración
La integración debe llevarse a cabo de acuerdo Las pruebas deben ser eficientes, es decir,
con la arquitectura del sistema y la preparación encontrar el mayor número de errores graves
de los componentes. sin utilizar para ello demasiados recursos.
• Fuentes de casos:
• Diseño de software y del sistema
• Arquitectura
• Workflows
• Casos de uso
121
III – Las pruebas en el ciclo de vida del software
02.2 – Niveles de prueba. Pruebas de integración
Generalidades
• Objetos de prueba típicos:
• Implementación de bases de datos de subsistemas
• Infraestructura
• Interfaces
• Configuración del sistema
• Configuración de datos
122
III – Las pruebas en el ciclo de vida del software
02.3 – Niveles de prueba. Pruebas de sistema
Definiciones y conceptos
123
III – Las pruebas en el ciclo de vida del software
02.3 – Niveles de prueba. Pruebas de sistema
¿Qué se prueba?
• Pruebas del sistema integrado desde el punto de vista del usuario
• Implantación completa y correcta de los requisitos.
• Implantación en el entorno real del sistema y con datos cercanos a la práctica.
• El entorno de pruebas debería corresponderse con el entorno de producción
• Se omiten los controladores de pruebas y los stubs.
• Todas las interfaces externas del sistema se probarán bajo condiciones de
producción.
• Recreación lo más exacta posible del entorno posterior de producción.
124
III – Las pruebas en el ciclo de vida del software
02.3 – Niveles de prueba. Pruebas de sistema
• De acuerdo con la calidad de software según (ISO 9126) las pruebas del
sistema diferencian entre requisitos:
• Funcionales
• Funcionalidad
• No funcionales
• Fiabilidad
• Usabilidad
• Eficiencia
• Mantenibilidad
• Portabilidad
125
III – Las pruebas en el ciclo de vida del software
02.3 – Niveles de prueba. Pruebas de sistema
Requisitos funcionales
• Cuestión: ¿Las características requeridas quedan implementadas por las
funciones disponibles?
• El sistema debe ser probado en los siguientes puntos:
• Idoneidad
• ¿Son adecuadas las funciones disponibles para la utilización prevista?
• Precisión
• ¿Se ejecutan las funciones correctamente (como estaba acordado)?
• interoperabilidad
• ¿Se proporciona una interrelación libre de errores con el entorno del
sistema?
• Conformidad
• ¿Se cumplieron las normas y preceptos?
• Seguridad
• ¿Están protegidos los datos /programas frente a accesos/pérdidas?
126
III – Las pruebas en el ciclo de vida del software
02.3 – Niveles de prueba. Pruebas de sistema
Requisitos funcionales
Requisitos no funcionales
(Eficiencia, fiabilidad, usabilidad, mantenibilidad, portabilidad)
128
III – Las pruebas en el ciclo de vida del software
02.3 – Niveles de prueba. Pruebas de sistema
Requisitos no funcionales
129
III – Las pruebas en el ciclo de vida del software
02.3 – Niveles de prueba. Pruebas de sistema
Requisitos no funcionales
130
III – Las pruebas en el ciclo de vida del software
02.3 – Niveles de prueba. Pruebas de sistema
Requisitos no funcionales
• Pruebas de carga.
• ¿Cómo se comporta el sistema bajo condiciones de carga nominales (número
creciente de usuarios/acciones)?
• Pruebas de rendimiento.
• ¿Cómo de rápido es el sistema en determinadas funciones/casos de uso?
• Pruebas de estrés
• ¿Como reacciona el sistema con sobrecarga?
• ¿Como reacciona el sistema al regresar al modo de funcionamiento normal?
131
III – Las pruebas en el ciclo de vida del software
02.3 – Niveles de prueba. Pruebas de sistema
Requisitos no funcionales
• Pruebas de estabilidad.
• ¿Con qué frecuencia se cae el sistema por unidad de tiempo determinada?.
• Comportamiento del sistema en funcionamiento prolongado.
• Pruebas de robustez.
• ¿Cómo reacciona el sistema frente a una utilización incorrecta o frente a errores
de entrada (manejo de excepciones)?.
• Comportamiento de sistema frente a defectos de hardware y el regreso al
funcionamiento normal.
132
III – Las pruebas en el ciclo de vida del software
02.3 – Niveles de prueba. Pruebas de sistema
Requisitos no funcionales
133
III – Las pruebas en el ciclo de vida del software
02.3 – Niveles de prueba. Pruebas de sistema
Requisitos no funcionales
• Comprobación de la documentación
• ¿Concuerda la documentación del programa con el sistema real?
• ¿La documentación se ha escrito de manera clara y comprensible?
• Comprobación de la mantenibilidad
• ¿Se dispone de documentos adecuados acerca del desarrollo del sistema?
• ¿Se han cumplido los estándares de código preestablecidos?
• ¿Tiene el sistema una arquitectura estructurada (modular)?
134
III – Las pruebas en el ciclo de vida del software
02.3 – Niveles de prueba. Pruebas de sistema
Generalidades
• Fuentes de casos:
• Especificación de requisitos del software y del sistema
• Casos de uso
• Especificación funcional
• Informes de análisis de riesgos
135
III – Las pruebas en el ciclo de vida del software
02.4 – Niveles de prueba. Pruebas de aceptación
Definiciones y conceptos
• Pruebas de aceptación (Definición):
Las pruebas de aceptación comprueban el producto desde el punto de vista del usuario
o del cliente antes de su paso a producción – ¿Se cumplen las expectativas del
usuario/cliente?
136
III – Las pruebas en el ciclo de vida del software
02.4 – Niveles de prueba. Pruebas de aceptación
137
III – Las pruebas en el ciclo de vida del software
02.4 – Niveles de prueba. Pruebas de aceptación
138
III – Las pruebas en el ciclo de vida del software
02.4 – Niveles de prueba. Pruebas de aceptación
• Se comprueba si el software
• Cumple las expectativas de diferentes usuarios
• Deja una impresión positiva en el usuario
• Muestra errores graves, que reducen la aceptación por parte del usuario
139
III – Las pruebas en el ciclo de vida del software
02.4 – Niveles de prueba. Pruebas de aceptación
140
III – Las pruebas en el ciclo de vida del software
02.4 – Niveles de prueba. Pruebas de aceptación
141
III – Las pruebas en el ciclo de vida del software
02.4 – Niveles de prueba. Pruebas de aceptación
142
III – Las pruebas en el ciclo de vida del software
02.4 – Niveles de prueba. Pruebas de aceptación
143
III – Las pruebas en el ciclo de vida del software
02.4 – Niveles de prueba. Pruebas de aceptación
Generalidades
• Fuentes de casos:
• Requisitos de usuario
• Requisitos de sistema
• Casos de uso
• Procesos de negocio
• Informes de análisis de riesgos
• Objetos de prueba típicos:
• Procesos de negocio en el sistema integrado completo
• Procesos operacionales y de mantenimiento
• Procedimientos de usuario
• Formularios
• Informes
• Configuración de datos
144
III – Las pruebas en el ciclo de vida del software
03 – Tipos de prueba
Tipos de prueba
145
III – Las pruebas en el ciclo de vida del software
03.1 – Tipos de prueba
Pruebas funcionales
• Las funciones que tiene que realizar un sistema, subsistema o componente
pueden ser descritas en productos de trabajo, como una especificación de
requisitos, casos de uso, o una especificación funcional, o bien pueden
quedar indocumentados. Las funciones son “qué” hace el sistema.
• Las pruebas funcionales se basan en funciones y rasgos (descritos en
documentos o sobreentendidos por los probadores) y en su
interoperabilidad con sistemas específicos, y pueden llevarse a cabo en
todos los niveles de prueba (por ejemplo, las pruebas de componentes
pueden basarse en la especificación del componente).
• Pueden usarse técnicas basadas en especificaciones para obtener casos
de prueba a partir de la funcionalidad del software o del sistema (véase
Capítulo 5). Las pruebas funcionales toman en consideración el
comportamiento externo del software (pruebas de caja negra).
• Existe un tipo de prueba funcional, la prueba de seguridad que investiga las
funciones (por ejemplo, un cortafuegos) relativas a la detección de
amenazas, como virus, de intrusos maliciosos. Otro tipo de prueba
funcional, la prueba de interoperabilidad, evalúa la capacidad del producto
software para interactuar con uno o varios componentes o sistemas
específicos.
146
III – Las pruebas en el ciclo de vida del software
03.2 – Tipos de prueba
Pruebas no funcionales
147
III – Las pruebas en el ciclo de vida del software
03.3 – Tipos de prueba
148
III – Las pruebas en el ciclo de vida del software
03.4 – Tipos de prueba
Pruebas después de la aceptación
• El cliente ha aceptado el producto y lo ha llevado a producción
• Las fases propias del desarrollo y las pruebas relacionadas han
finalizado.
• El software mismo está sin embargo al comienzo de su vida
• A menudo se implanta para muchos años y se sigue desarrollando.
• Seguro que sigue conteniendo errores y por ello se sigue trabajando
sobre él.
• Debe ser adaptado a nuevas condiciones o integrado en un nuevo
entorno.
• ¡Cada nueva versión del producto, cada nueva actualización y cualquier
otro tipo de cambio debe ser probado de nuevo!
149
III – Las pruebas en el ciclo de vida del software
03.4 – Tipos de prueba
150
III – Las pruebas en el ciclo de vida del software
04 – Pruebas de mantenimiento
151
III – Las pruebas en el ciclo de vida del software
04 – Pruebas de mantenimiento
Pruebas después de la aceptación
• ¿Cómo se prueban las modificaciones en el software?
• Pruebas de regresión
Pruebas de un sistema que ya ha sido comprobado por si, debido a las
modificaciones, surgen nuevos errores (p.ej., después de la corrección
de errores).
• Comentario:
Las pruebas de regresión son necesarias y se aplican ya antes de la
aceptación del producto.
152
III – Las pruebas en el ciclo de vida del software
04 – Pruebas de mantenimiento
Pruebas después de la aceptación
• En función del alcance de las pruebas de regresión se distingue entre:
• Repetición de la prueba del error (también llamado Retest)
• Repetir la ejecución de los casos de prueba que han descubierto errores
para comprobar que fueron eliminados.
• Las repeticiones de las pruebas son, de esta manera, una parte de las
pruebas de regresión
153
III – Las pruebas en el ciclo de vida del software
04 – Pruebas de mantenimiento
Pruebas después de la aceptación
154
III – Las pruebas en el ciclo de vida del software
05 – Resumen
155
156
Capítulo IV – Técnicas estáticas
• IV/01 Las técnicas estáticas y el proceso de prueba
• IV/02 Proceso de revisión
• IV/03 Análisis estático (Mediante herramientas)
• IV/04 Resumen
157
IV – Técnicas estáticas
01 – Las técnicas estáticas y el proceso de prueba
Conceptos generales
• El término “técnicas estáticas”, “pruebas estáticas” o –frecuentemente
también- “análisis estático” engloba procedimientos que adoptan
• Análisis manual del objeto de prueba (leer, etc.) o
• Análisis del objeto de prueba respaldado por herramientas sin ejecutar el objeto
de prueba
• Se prescinde de los datos de prueba (necesarios en las pruebas dinámicas).
• Los errores pueden ser descubiertos directamente con las pruebas estáticas
(no únicamente en base a sus efectos)
• El objetivo de las pruebas estáticas es encontrar errores / incidencias en las
especificaciones mismas antes de que se implementen (totalmente).
• Corregir especificaciones o supuestos y evitar errores en el software
• Descubrir y eliminar los puntos débiles del proceso
158
IV – Técnicas estáticas
01 – Las técnicas estáticas y el proceso de prueba
Conceptos generales
• Beneficios:
• Detección y corrección temprana de defectos
• Mejora de la productividad del desarrollo
• Tiempos de desarrollo reducidos
• Mejores costes y tiempos de prueba
• Reducciones en el coste durante su tiempo de vida
• Menos defectos
• Mejora en las comunicaciones.
• Las revisiones pueden encontrar omisiones, por ejemplo, en los requisitos,
algo que no se puede encontrar durante las pruebas dinámicas.
• Tanto las revisiones como el análisis estático y las pruebas dinámicas
tienen el mismo objetivo - identificar defectos. Son complementarias:
diferentes técnicas pueden encontrar distintos tipos de defectos de forma
efectiva y eficiente.
• Entre los defectos típicos que son más fáciles de encontrar en las
revisiones que en las pruebas dinámicas, se encuentran: desviaciones de
los estándares, defectos en los requisitos o en el diseño, mantenibilidad
insuficiente y especificaciones de interfaz incorrectas.
159
IV – Técnicas estáticas
02 – Proceso de revisión
Conceptos y definiciones
160
IV – Técnicas estáticas
02 – Proceso de revisión
Objetivos de una revisión
• Las revisiones deben mejorar el proceso de desarrollo y asegurar la calidad
del producto
• Las verificaciones en la rama izquierda del modelo en V – es decir, la
correcta implementación de los requisitos de una etapa a otra – se
llevan a cabo, p.ej., mediante revisiones.
• Una calidad alta en la documentación (en toda la documentación) mejora
obligatoriamente la calidad del producto
• Si no hay errores en las especificaciones/requisitos no se pueden
implementar errores.
161
IV – Técnicas estáticas
02 – Proceso de revisión
Ventajas e inconvenientes de la revisión
• Ventajas
• Documentación limpia
• Bajos costes en comparación al alto potencial de ahorro
• Desarrollo mejorado del producto mediante una documentación sin
errores
• Menos esfuerzo de pruebas durante el ciclo de vida del software
• Aumento de la comunicación como consecuencia de las revisiones
• Intercambio de ideas / intercambio de Know-how
162
IV – Técnicas estáticas
02 – Proceso de revisión
• Inconvenientes
• Se pueden originar tensiones en el caso de que el autor sea tratado o
atacado personalmente.
• Expertos en la materia deben formarse como supervisores.
• Se necesita tiempo libre para esta actividad.
• Una mala preparación disminuye el éxito.
• La calidad del moderador y de los participantes en la revisión determina
en gran medida el resultado.
• Si el moderador no consigue mantener la revisión en un plano técnico se
reduce el éxito.
163
IV – Técnicas estáticas
02.1 – Proceso de revisión
Fases de una revisión
• Todos los tipos de revisiones se basan en una división común en fases
• Planificación
• Organización de la revisión (p.ej., por el moderador)
• Planificación de plazos (p.ej., por el moderador) y de recursos (por regla
general por el gestor)
• Elección de los participantes y asignación de roles (por regla general por el
gestor)
• Selección de los objetos de prueba
• Definición de los criterios de entrada y salida para revisiones más formales
(ej.: inspecciones)
• Preparación organizativa
• En su caso se citan todos los participantes para una reunión previa
(Reunión de Kick off)
• Distribución de los objetos de prueba
• Distribución de toda la documentación relevante para la evaluación
• Acuerdo de los criterios de prueba (ej: checklists), reparto de tareas,
objetivos, procesos
• Comprobación de los criterios de entrada (para revisiones más formales)
164
IV – Técnicas estáticas
02.1 – Proceso de revisión
166
IV – Técnicas estáticas
02.1 – Proceso de revisión
167
IV – Técnicas estáticas
02.2 – Proceso de revisión
Roles y responsabilidades
• A los participantes en una revisión se les asignan diferentes roles y tareas o
bien, se deben cubrir diferentes roles:
• Gestor
• Inicia la revisión y planifica en su caso su desarrollo, define participantes y distribuye
recursos
• Moderador
• Es neutral respecto del objeto de prueba y dirige la revisión
• Dirige la discusión (enfocado a los objetivos)
• Modera entre los diferentes puntos de vista
168
IV – Técnicas estáticas
02.2 – Proceso de revisión
Roles y responsabilidades
• Autor
• Elaborador o representante del elaborador del objeto de prueba
• Si se establece una crítica, es al objeto de prueba – ¡no debe ser criticado
personalmente!
• Asume finalmente las modificaciones requeridas
• Documentador
• Documenta la revisión
• Prepara una lista de todas las consideraciones realizadas y de todos los errores
reconocidos
• Supervisor (también revisor o inspector)
• Expertos en la materia que participan en una revisión – por regla general pueden
participar hasta cinco supervisores en la revisión
• Reciben previamente el objeto de prueba y trabajan sobre él
• Descubren errores, plantean problemas, etc.
• Tienen, idealmente, el enfoque de un supervisor acerca de aspectos especiales
• Indican qué partes del objeto de prueba deben ser corregidas y cuales pueden
mantenerse sin modificaciones
169
IV – Técnicas estáticas
02.3 – Proceso de revisión
Tipos de revisión (IEEE 1028)
• El proceso fundamental de la revisión –tal y como se ha descrito aquí– se
puede dividir a su vez en diferentes modalidades de revisiones
• Algunas de estas modalidades se diferencian en algunos aspectos del
procedimiento general descrito
• La diferenciación general de la revisión viene determinada por la clase de
objeto de prueba a tratar
• El proceso de desarrollo de software o el curso del proyecto se analiza y
se hace un dictamen
• Esto también se refiere a revisiones de gestión (estas revisiones no influyen
directamente en el proceso de pruebas y no se tratan más dentro de este
seminario)
• La documentación / los productos del proceso de desarrollo se analizan
y se someten a dictamen
• Revisión en el sentido de este apartado
170
IV – Técnicas estáticas
02.3 – Proceso de revisión
Tipos de revisión (IEEE 1028)
• Inspección: Desarrollo
171
IV – Técnicas estáticas
02.3 – Proceso de revisión
172
IV – Técnicas estáticas
02.3 – Proceso de revisión
Tipos de revisión (IEEE 1028)
• Walkthrough: desarrollo
• En este tipo de revisiones se distribuye previamente a lo sumo la
documentación. Puede haber una preparación previa a la reunión de
revisión.
• El propio autor presenta el objeto de prueba en una reunión y suele
liderarla. Suele haber un documentador distinto del autor. Informe de
revisión y lista de hallazgos
• Durante la presentación del objeto de prueba por parte del autor, los
supervisores intentan descubrir errores o problemas. Es frecuente
que sea una revisión entre iguales (peer review)
• Puede variar desde bastante informal a muy formal
• Sesiones abiertas / de duración indefinida (open-ended)
• Propósitos: aprender, ganar conocimiento y encontrar defectos
• Ejemplos para la utilización de Walkthroughs
• Walkthrough de documentación
• Walkthrough de propuestas para GUI
• Walkthrough de procesos de negocio
173
IV – Técnicas estáticas
02.3 – Proceso de revisión
174
IV – Técnicas estáticas
02.3 – Proceso de revisión
Tipos de revisión (IEEE 1028)
• Revisión técnica: desarrollo
• Comprobación de los aspectos técnicos del objeto de prueba
• Suelen participar expertos en la materia, si es posible expertos externos
al proyecto. Pueden participar también iguales o ser enteramente una
reunión entre iguales (peer review)
• La reunión se desarrolla sin el autor. Suele haber moderador
• Comprobación sólo en base a los requisitos y al patrón de pruebas
• Se hace un dictamen unánime de la valoración global. Opcionalmente,
uso de listas de comprobación, informe de revisión, lista de hallazgos,
participación de los gestores
• Preparación previa a la reunión
• Puede variar desde bastante informal a muy formal
• Propósito: discutir, tomar decisiones, evaluar alternativas, encontrar
defectos, resolver problemas y comprobar conformidad (con
especificaciones, planes, normas y estándares)
175
IV – Técnicas estáticas
02.3 – Proceso de revisión
• Aumento de la comunicación
• Muy eficiente si el personal es adecuado (y los procedimientos correctos)
• Se requiere disponer de personal experto (con tiempo disponible, lo que
no siempre es fácil)
• Gran esfuerzo para la preparación y la elaboración posterior
• Se precisa de un moderador y un encargado de documentar la reunión
• Es posible una búsqueda de errores estructurada
176
IV – Técnicas estáticas
02.3 – Proceso de revisión
Tipos de revisión (IEEE 1028)
• Revisión informal: desarrollo
• La variante más simple de las revisiones
• A menudo iniciada por el autor
• Solo es necesaria la elección de los supervisores
• No se requiere una reunión de revisión
• Los resultados suelen transmitirse en forma de lista. Puede (o no)
documentarse
• Su utilidad depende mucho del revisor
• A menudo en forma de lectura mutua de los objetos de prueba de entre
colegas
• Objetivo: Forma barata de obtener (algún) beneficio
177
IV – Técnicas estáticas
02.3 – Proceso de revisión
178
IV – Técnicas estáticas
02.4 – Proceso de revisión
179
IV – Técnicas estáticas
02.4 – Proceso de revisión.
180
IV – Técnicas estáticas
03 – Análisis estático
Conceptos y definiciones
• Los aspectos que pueden / suelen comprobarse con esta técnica son:
• Directrices de programación y estándares
• Construcción del programa (análisis del flujo de control)
• Utilización de datos (análisis del flujo de datos)
• Complejidad de la estructura del programa (Métricas – p.ej., complejidad
ciclomática)
181
IV – Técnicas estáticas
03 – Análisis estático
Generalidades
182
IV – Técnicas estáticas
03 – Análisis estático
Generalidades
• Como herramientas se utilizan compiladores o analizadores
• Compilador
• Descubren errores de sintaxis en el lenguaje de programación
• Proporcionan comprobantes del uso de las partes del programa (listas de
referencias cruzadas)
• Comprueban la utilización correcta de los tipos de variables
• Encuentran variables no declaradas y código inaccesible (p.ej., el
compilador de Java)
• Los analizadores se refieren más a aspectos como
• Convenciones y
• Estándares.
183
IV – Técnicas estáticas
03 – Análisis estático
• Objetivo
• Encontrar errores dentro de la construcción del programa
(ramas muertas / código muerto etc.)
• Procedimiento
• Representación del código en forma de
• gráfico de flujo de control
• Gráfico orientado
?
• Sentencias del programa / secuencias como nodos
• Decisiones / Bucles como aristas
• Se crean generalmente mediante una herramienta
184
IV – Técnicas estáticas
03 – Análisis estático
• Resultado
• Representación visible del código del programa
• Las anomalías se encuentran con facilidad
y se pueden comprobar sus fallos
• Salidas/saltos de bucles
• Ramas muertas
?
185
IV – Técnicas estáticas
03 – Análisis estático
186
IV – Técnicas estáticas
03 – Análisis estático
• Procedimiento :
• Una variable x puede ser accedida a lo largo de una ruta del programa
de las siguientes maneras:
• x se define (d) – asignar un valor (p.ej., x = 1)
• x está indefinida (i) – La variable no tiene al principio ningún valor
• x se referencia (r) – ¡el valor de x no se modifica! (p.ej., z = x + 5 o if(x > 0)
)
• x no se utiliza (e) – x no se utiliza en la sentencia
• El flujo se datos de una variable puede ser de esta manera representado
por una secuencia de d, i, r y e
• En el caso de que una de estas secuencias tenga una secuencia parcial
sin sentido existe una anomalía de flujo de datos
187
IV – Técnicas estáticas
03 – Análisis estático
Análisis del flujo de datos
• Ventajas:
• Descubrimiento seguro de determinados tipos de errores
• Localización directa del error
• Buen complemento a otros procedimientos de pruebas
• Inconvenientes:
• Limitado a escasos tipos de errores
188
IV – Técnicas estáticas
03 – Análisis estático
189
IV – Técnicas estáticas
03 – Análisis estático
Métricas y su determinación
190
IV – Técnicas estáticas
03 – Análisis estático
Métricas y su determinación
• Número ciclomático
• Medida de la complejidad estructural del código en base a los gráficos de flujo de control
• Determinación de las rutas de programa independientes
• Puntos de referencia para la evaluación de la prueba y el mantenimiento
v(G) = e − n + p
191
IV – Técnicas estáticas
03 – Análisis estático
Métricas y su determinación
• Ejemplo IV/03-2
(Número ciclomático) v(G) = e − n + p
• El ejemplo de la derecha tiene
1
• 2 conexiones externas: 1
• p= 2 2
2 3
• 14 nodos: n = 14
3 4
• 19 aristas: e = 19 4 6
5 7
1 5 6 7 8
9 11 12
8 13
9 10 10 16 11
• Si v (G ) = e − n + p 14
15
19 12
se obtiene con ello un valor para el 17
18 13
número ciclomático de v (G ) = 7
14
192
IV – Técnicas estáticas
03 – Análisis estático
Métricas y su determinación
• Número ciclomático (s. McCabe) – motivo de utilización
• Puede así servir como directriz de comprobación en pruebas de grupo
estructuradas
• Una desviación entre el número de decisiones y el valor del número
ciclomático reducido en una unidad apunta a errores:
• Una rama innecesaria
• La falta de una rama
• El número ciclomático puede utilizarse como una medida adicional para
la cobertura de las pruebas, ya que v(G) está relacionado con el número
de rutas del programa
• El número ciclomático es un mejor indicador para la propensión a errores
de un segmento del programa que su tamaño (medido en LOC – Lines
Of Code)
193
IV – Técnicas estáticas
04 – Resumen
Afirmaciones importantes del capítulo
194
IV – Técnicas estáticas
04 – Resumen
Afirmaciones importantes del capítulo
195
IV – Técnicas estáticas
04 – Resumen
Afirmaciones importantes del capítulo
196
197
Capítulo V – Técnicas de diseño de
prueba
• V/01 El proceso de desarrollo de las pruebas
• V/02 Categorización de las técnicas de diseño de
prueba
• V/03 Técnicas de caja negra (basadas en
especificación)
• V/04 Técnicas de caja blanca (basadas en la
estructura)
• V/05 Técnicas basadas en la experiencia
• V/06 Selección de técnicas de prueba
• V/07 Resumen
198
V – Técnicas de diseño de prueba
01 – El proceso de desarrollo de las pruebas
Definiciones y conceptos
• En las pruebas dinámicas se compara el resultado esperado y el resultado
obtenido, donde los resultados obtenidos se obtienen mediante la ejecución
de los casos de prueba sobre el objeto de prueba.
199
V – Técnicas de diseño de prueba
01 – El proceso de desarrollo de las pruebas
200
V – Técnicas de diseño de prueba
01 – El proceso de desarrollo de las pruebas
Diseño de las pruebas
• Durante el diseño de las pruebas los casos de prueba y datos de prueba se
crean y especifican.
• Un caso de prueba consiste en:
• Conjunto de valores de entrada
• Precondiciones de ejecución
• Resultados esperados y poscondiciones de ejecución
desarrolladas para cubrir ciertas condiciones de prueba
• En el ‘Standard for Software Test Documentation’ (IEEE 829) se describe el
contenido de:
• Especificaciones de diseño de pruebas
• Especificaciones de casos de prueba
201
V – Técnicas de diseño de prueba
01 – El proceso de desarrollo de las pruebas
202
V – Técnicas de diseño de prueba
01 – El proceso de desarrollo de las pruebas
Implementación de las pruebas
• Los procedimientos de pruebas y scripts automatizados son incorporados en
una planificación de ejecución de pruebas que define el orden en que se
ejecutarán, cuando y por quien.
203
V – Técnicas de diseño de prueba
02 – Categorización de las técnicas de diseño de prueba
Generalidades
204
V – Técnicas de diseño de prueba
02 – Categorización de las técnicas de diseño de prueba
Procedimiento de actuación. Técnicas de caja negra
• El probador considera al objeto de prueba como una caja negra
• La estructura del programa es irrelevante o desconocida
205
V – Técnicas de diseño de prueba
02 – Categorización de las técnicas de diseño de prueba
206
V – Técnicas de diseño de prueba
02 – Categorización de las técnicas de diseño de prueba
207
V – Técnicas de diseño de prueba
03 – Técnicas de caja negra
Generalidades
• Las siguientes técnicas de caja negra son las que se tratan de manera más
profunda:
• Formación de clases de equivalencia
• Análisis de valores límite
• Pruebas referidas a estados
Se trata de las técnicas más importantes y más utilizadas
• Otras técnicas de caja negra son, p.ej. :
• Pruebas aleatorias
• Análisis de gráficos de causa y efecto
• Pairwise Testing
208
V – Técnicas de diseño de prueba
03 – Técnicas de caja negra
Generalidades
• El objetivo de las pruebas funcionales es la comprobación de la integridad y
funcionamiento correcto de las funciones
• El sistema se comprueba respecto de sus especificaciones
• ¿Están contenidas correctamente todas las funciones solicitadas?
209
V – Técnicas de diseño de prueba
03.1 – Técnicas de caja negra
Formación de clases de equivalencia
210
V – Técnicas de diseño de prueba
03.1 – Técnicas de caja negra
Formación de clases de equivalencia – procedimiento de actuación
211
V – Técnicas de diseño de prueba
03.1 – Técnicas de caja negra
• Ejemplo V/03-1:
• Un programa precisa la entrada de un peso en “Kg.” (una función
integrada redondea siempre sin decimales – valores menores que “0,5”
se redondean a “0”)
• Se permiten aquí valores ≥ 0 y no permitidos serían todos los números
negativos y los valores de entrada no numéricos (p.ej., “Hugo”)
• Clase de equivalencia válida: x≥0
• 1. Clase de equivalencia no válida: x<0
• 2. Clase de equivalencia no válida : x = no numérico
212
V – Técnicas de diseño de prueba
03.1 – Técnicas de caja negra
• Ejemplo V/03-1:
• Junto a las clases de equivalencia no válidas enunciadas anteriormente
existen más clases de equivalencia no válidas que no se tienen en
cuenta en este ejemplo:
213
V – Técnicas de diseño de prueba
03.1 – Técnicas de caja negra
214
V – Técnicas de diseño de prueba
03.1 – Técnicas de caja negra
Formación de clases de equivalencia – procedimiento de actuación
• Las clases de equivalencia de cada variable (de cada elemento) deben ser
subdivididas
• CE válida: dentro del rango de definición se agrupan todos los valores
que se procesan de forma idéntica por el objeto de prueba
• En ejemplo V/03-1 son todas las entradas numéricas positivas
215
V – Técnicas de diseño de prueba
03.1 – Técnicas de caja negra
Formación de clases de equivalencia – procedimiento de actuación
216
V – Técnicas de diseño de prueba
03.1 – Técnicas de caja negra
Formación de clases de equivalencia – procedimiento de actuación
• Ejemplo V/03-2:
• Un programa calcula el precio de un producto en función de su valor, un
descuento en % y gastos de envío establecidos de (6,- , 9,- o 12,-€
según envío)
217
V – Técnicas de diseño de prueba
03.1 – Técnicas de caja negra
Formación de clases de equivalencia – procedimiento de actuación
• Ejemplo V/03-2:
• Las clases de equivalencia válidas permiten formar las siguientes combinaciones
o casos de prueba (CP01, CP02 y CP03) :
CE33: x = 12 Válido 12
218
V – Técnicas de diseño de prueba
03.1 – Técnicas de caja negra
Variable Calse de equivalencia Estado Represen- CP0 CP0 CP0 CP0 CP0 CP0 CP1
tante 4 5 6 7 8 9 0
Valor del CE11: x >= 0 Válido 1000,00
producto
CE12: x < 0 No válido -1000,00
CE33: x = 12 Válido 12
219
V – Técnicas de diseño de prueba
03.1 – Técnicas de caja negra
Variable Clase de Estado CP01 CP02 CP03 CP04 CP05 CP06 CP07 CP08 CP09 CP10
equivalencia
Valor del Válido 1000,00
producto
No válido -1000,00
No válido Hugo
No válido -1%
No válido 101%
No válido Hugo
Gastos de Válido 6
envío
Válido 9
Válido 12
No válido 5
No válido Hugo
220
V – Técnicas de diseño de prueba
03.1 – Técnicas de caja negra
221
V – Técnicas de diseño de prueba
03.1 – Técnicas de caja negra
• Descomposición
• El éxito o el fracaso de la calidad de las pruebas depende de la precisión
con que se descompongan las variables individuales
• De la precisión a la hora de descomponer las variables / elementos
individuales depende la calidad de las pruebas
• Las CE no reconocidas implican el riesgo de pasar posibles efectos de
error por alto, ya que sus representantes pueden provocar resultados
diferentes
222
V – Técnicas de diseño de prueba
03.1 – Técnicas de caja negra
• Elección de representantes
• Cada valor de una CE puede ser elegido como representante para la
prueba – lo lógico es sin embargo elegir “valores típicos”.
• Los representantes de las CE no válidas deben ser siempre unidos con
representantes idénticos de la misma CE válida en casos de prueba
(combinaciones estándar).
• Con el fin de no enmascarar errores no se deben elegir representantes
de CE no válidas junto a representantes de otras CE no válidas.
223
V – Técnicas de diseño de prueba
03.1 – Técnicas de caja negra
224
V – Técnicas de diseño de prueba
03.1 – Técnicas de caja negra
225
V – Técnicas de diseño de prueba
03.1 – Técnicas de caja negra
226
V – Técnicas de diseño de prueba
03.2 – Técnicas de caja negra
¡La experiencia muestra que los errores son más frecuentes en las
regiones límite!
227
V – Técnicas de diseño de prueba
03.2 – Técnicas de caja negra
228
V – Técnicas de diseño de prueba
03.2 – Técnicas de caja negra
• Ejemplo V/03-3:
• Rango de valores para el descuento en %: 0,00 ≤ x ≤ 100,00
• Formación de CE
3 Clases (< 0, Rango de definición, > 100)
p.ej., con los representantes: -50,00; 50,00; 150,00
• Análisis de valores límite
amplía los representantes a :
1. (-50,00): -0,01
2. (50,00): 0,00; 100,00
3. (150,00): 100,01
229
V – Técnicas de diseño de prueba
03.3 – Técnicas de caja negra
Tablas de decisión
• Es un buen sistema para representar la lógica de los requisitos de usuario,
sobre todo las reglas de negocio complejas.
• Las tablas de decisión están compuestas por cuatro secciones:
REGLAS DE DECISIÓN
230
V – Técnicas de diseño de prueba
03.3 – Técnicas de caja negra
Tablas de decisión
• Ejemplo:
REGLAS DE DECISIÓN
CONDICIONES 1 2 3 4
¿Pago contado? S S N N
ACCIONES
Calcular descuento del 5%
X X
sobre el importe de la compra
Calcular descuento del 7%
X X
sobre el importe de la compra
Calcular importe neto de la
X X X X
factura
231
V – Técnicas de diseño de prueba
03.4 – Técnicas de caja negra
Pruebas referidas al estado
Los dos procedimientos conocidos hasta el momento solo tienen en cuenta los
comportamientos de entrada/salida según las especificaciones
• Los diferentes estados que puede adoptar un objeto de prueba durante su
ejecución no son contemplados
• ¿Tienen consecuencias los procesos que ya han tenido éxito sobre el
desarrollo posterior?
• Los diferentes estados que puede adoptar un objeto de prueba durante su
ejecución se representan mediante un modelo de estados
• Una prueba referida al estado debería ejecutar para cada estado todas las
funciones definidas para el mismo al menos una vez
232
V – Técnicas de diseño de prueba
03.4 – Técnicas de caja negra
Pruebas de transición de estados
• Para aquellos sistemas que se ajusten a un modelo de transición de
estados, el objetivo de las pruebas sobre este tipo de sistemas sería
demostrar la conformidad de los requisitos especificados en forma de
diagrama de transición de estados o tablas de transición de estados.
EVENTOS
ESTADOS
Evento_1 Evento_n
Estado_2
Ignorar
Estado_1 Acción_ 1
(1) (n)
Ignorar Ignorar
Estado_m
(n*(m-1)+1) (n*m)
• Todas las entradas posibles a la máquina están enumeradas a través de las columnas de la
tabla. Todos los estados posibles están enumerados a través de las filas. Desde la tabla de
transición de estados anterior, es fácil ver que si la máquina está en S1 (la primera fila), y la
siguiente entrada es el carácter 1, la máquina permanecerá en S1. Si llega un carácter 0, la
máquina realizará la transición a S2 como puede verse desde la segunda columna. En el
diagrama esto es denotado por la flecha desde S1 a S2 etiquetada con un 0.
234
V – Técnicas de diseño de prueba
03.4 – Técnicas de caja negra
Pruebas referidas al estado
• Criterios de finalización de pruebas
• Cada estado se debe alcanzar al menos una vez
• Cada transición de estados se debe alcanzar al menos una vez
• Ventajas e inconvenientes del procedimiento
• Es una buena posibilidad de probar objetos de prueba dependientes del
estado
• Método apropiado para las pruebas de clases en caso de disponer del
ciclo de vida del objeto
• Los estado son a menudo muy complejos en su estructura, esto es, son
determinados por un gran número de parámetros diferentes
• Tanto la definición de casos de prueba como la valoración de las pruebas
son muy trabajosos en estos casos
• La cobertura de todas las transiciones de estado no garantiza unas
pruebas completas
235
V – Técnicas de diseño de prueba
03.5 – Técnicas de caja negra
Pruebas de escenarios de uso o casos de uso
• Estas pruebas consisten en validar un sistema siguiendo la lógica de los
casos de uso (también llamados escenarios de uso).
• Los casos de uso describen los flujos de un sistema teniendo en cuenta
situaciones reales a las que se enfrenta el usuario.
236
V – Técnicas de diseño de prueba
03.5 – Técnicas de caja negra
Pruebas de escenarios de uso o casos de uso
• Los casos de uso son muy interesantes para diseñar las pruebas de
aceptación de usuario.
• Además ayudan a descubrir defectos que no se encuentran durante las
pruebas de componentes, pero si en las pruebas de integración de
componentes, cuando esos mismos componentes interactúan unos con
otros.
Proceso dirigido por los Casos de Uso
«trace» «trace»
«trace»
«trace»
Pruebas
Unitarias
Pruebas Funcionales X
Caso de Prueba
[The Unified Software Development Process. I. Jacobson, G. Booch and J. Rumbaugh. Addison-Wesley, 1999]
237
V – Técnicas de diseño de prueba
03.6 – Técnicas de caja negra
Generalidades
• Comprobación de la funcionalidad como objetivo de las técnicas de caja negra
• El resultado de las pruebas depende de la calidad de la especificación
de requisitos (p.ej., especificación con errores o incompleta)
• Si existen errores en la especificación también se probará con errores – se
prueba la funcionalidad descrita (anteriormente debería ser asegurada la
calidad del código del programa mediante un análisis estático)
• Si el objeto de prueba contiene funciones que no han sido especificadas
éstas permanecerán sin descubrir
• Estas características no requeridas pueden ser problemáticas p.ej., cuando
llevan a problemas de estabilidad o seguridad o cuando no se cumplen las
expectativas del cliente
238
V – Técnicas de diseño de prueba
03.6 – Técnicas de caja negra
Generalidades
• A pesar de estas carencias las pruebas funcionales son las de mayor peso
dentro de las pruebas
239
V – Técnicas de diseño de prueba
04 – Técnicas de caja blanca
Procedimiento para el “análisis basado en código”
• Se va a profundizar ahora en las siguientes técnicas dinámicas de caja blanca
• Cobertura de sentencias
• Cobertura de ramas
• Cobertura de condiciones
• Cobertura de rutas
• Estas técnicas son las más importantes y utilizadas. Otras técnicas de caja
blanca son p.ej., :
• LCSAJ (Linear Code Sequence And Jump)
• Procedimiento basado en el flujo de datos
240
V – Técnicas de diseño de prueba
04 – Técnicas de caja blanca
Herramientas
241
V – Técnicas de diseño de prueba
04 – Técnicas de caja blanca
Herramientas
• Las técnicas de caja blanca necesitan en muchos casos el apoyo de
herramientas - p.ej., durante la
• especificación de casos de prueba
• P.ej., deducción de gráficos de flujo de control a partir del código del
programa
• ejecución de los casos de prueba
• Herramientas para el seguimiento y control de los procesos dentro del
objeto de pruebas
• La utilización de herramientas en este punto asegura y aumenta la calidad de
las pruebas
• Debido a la complejidad de los procesos, la ejecución manual:
• Consume tiempo y recursos
• Es propensa a errores y difícil de llevar a cabo
242
V – Técnicas de diseño de prueba
04 – Técnicas de caja blanca
243
V – Técnicas de diseño de prueba
04.1 – Técnicas de caja blanca
Cobertura de sentencias
• Cada sentencia de un programa y su ejecución respectiva constituyen el
centro de la observación
• ¿Qué casos de prueba son necesarios para ejecutar todas las sentencias
disponibles o bien una cuota determinada de las mismas?
• La base de esta investigación es el gráfico de flujo de control
• cada sentencia se representa mediante un nodo y el flujo de datos entre
sentencias mediante una arista
• las secuencias de sentencias son de nuevo agrupadas en un nodo (se ejecuta
una directamente a continuación de la otra)
• El objetivo de las pruebas (criterio de finalización de las pruebas) consiste
en ejecutar un número predeterminado de sentencias (Medida de cobertura
o Medida-C0)
244
V – Técnicas de diseño de prueba
04.1 – Técnicas de caja blanca
Cobertura de sentencias
• Ejemplo V/04-1
• Se da el siguiente segmento de programa representado a la derecha
como gráfico de flujo de control :
if (i > 0) {
j = f(i);
if (j > 10) {
for (k=i; k > 10; k --) {
...
}
}
}
245
V – Técnicas de diseño de prueba
04.1 – Técnicas de caja blanca
Cobertura de sentencias
• Ejemplo V/04-1
• El gráfico de flujo de control representado en la parte
derecha
• contiene dos sentencias IF y un bucle (dentro de la
segunda sentencia IF)
246
V – Técnicas de diseño de prueba
04.1 – Técnicas de caja blanca
Cobertura de sentencias
• Ejemplo V/04-2
• El segundo ejemplo representa el gráfico de un
segmento de programa algo más complicado
• Se compone de tres sentencias IF y un bucle (dentro
de una sentencia IF)
• Cuatro caminos diferentes recorren la parte del
programa
• de la primera sentencia IF salen dos caminos
• para ambas ramas de la primera sentencia IF se dan
respectivamente otras dos posibilidades de recorrido
debido a las siguientes sentencias IF
• el recorrido del bucle no se contempla aquí como un
camino
• Por uno de los caminos se alcanzan sólo siete de las
doce sentencias (C0=58,33%)
• para una cobertura del 100% de las sentencias se
necesitan aquí cuatro casos de prueba
247
V – Técnicas de diseño de prueba
04.1 – Técnicas de caja blanca
Cobertura de sentencias – Generalidades
• La medida de cobertura se realiza mediante herramientas
• Se habla de los llamados analizadores de cobertura
• Ventajas/Inconvenientes del procedimiento
• Las sentencias muertas, esto es, las sentencias que no pueden ser
alcanzadas se encuentran en el caso de una solicitud de cobertura total.
• Si existen sentencias muertas en el programa no es posible alcanzar una
cobertura del 100%
• Las sentencias no existentes – sentencias que serían necesarias para la
función – se quedan fuera
• Lo que se prueba es si todas las sentencias contenidas son ejecutables /
accesibles
• ¡Si en una parte del programa falta una sentencia, esto no podrá ser
determinado mediante la cobertura de sentencias!
248
V – Técnicas de diseño de prueba
04.2 – Técnicas de caja blanca
249
V – Técnicas de diseño de prueba
04.2 – Técnicas de caja blanca
250
V – Técnicas de diseño de prueba
04.2 – Técnicas de caja blanca
251
V – Técnicas de diseño de prueba
04.2 – Técnicas de caja blanca
Cobertura de decisiones o ramas
• Este método lleva, por lo general, a mayor número de casos de prueba que la
cobertura de sentencias
• ¡La cobertura del 100% de las sentencias está contenida en una
cobertura del 100% de las ramas!
• No se puede evitar tener que recorrer varias veces algunas aristas
• Inconvenientes
• Las sentencias que falten no son localizadas
• Inapropiado para la comprobación de condiciones complejas
• Insuficiente para la comprobación de bucles
• No se tienen en cuenta las dependencias entre bucles
252
V – Técnicas de diseño de prueba
04.2 – Técnicas de caja blanca
Cobertura de sentencias y de ramas
• Ambos procedimientos se refieren al recorrido de gráficos de flujo de control
• La diferencia se debe al diferente número de casos de prueba
253
V – Técnicas de diseño de prueba
04.3 – Técnicas de caja blanca
Otras técnicas basadas en estructura. Cobertura de condiciones
• Este procedimiento examina los procesos dentro de las sentencias de un
segmento de programa
• ¿En qué condiciones se basa el valor verdadero que devuelve una
sentencia?
• El objetivo es localizar errores que se encuentren en condiciones (condiciones
múltiples)
• Las condiciones múltiples se forman mediante la unión con operadores
(OR, AND, etc.) de condiciones elementales (p.ej., a > 2 OR b < 6)
• Las condiciones elementales (como parte de una condición también
condiciones elementales parciales) no contienen operadores lógicos
(p.ej., a > 2) – se permiten los símbolos relacionales (=, > , <, etc.)
• Se distinguen tres variantes de la cobertura de condiciones
• Cobertura de condiciones simple, múltiple y múltiple mínima
254
V – Técnicas de diseño de prueba
04.3 – Técnicas de caja blanca
a > 2 OR b < 6
• Con cuatro casos de prueba se consigue la
cobertura múltiple
Los casos de prueba para la cobertura de
condiciones múltiple serían p.ej. : • Se han formado todas las posibles
combinaciones de estados (verdadero & falso)
a=6 (verd.) b=9 (falso) a>2 OR b<6 (verd.) • Se han alcanzado todas las posibles salidas de
a=6 (verd.) b=2 (verd.) a>2 OR b<6 (verd.) la condición múltiple
a=1 (falso) b=2 (verd.) a>2 OR b<6 (verd.)
a=1 (falso) b=9 (falso) a>2 OR b<6 (falso) • El número de casos de prueba crece
exponencialmente:
• n = Nº de condiciones elementales
• 2n = Numero de casos de prueba
256
V – Técnicas de diseño de prueba
04.3 – Técnicas de caja blanca
257
V – Técnicas de diseño de prueba
04.3 – Técnicas de caja blanca
258
V – Técnicas de diseño de prueba
04.3 – Técnicas de caja blanca
259
V – Técnicas de diseño de prueba
04.3 – Técnicas de caja blanca
Otras técnicas basadas en estructura. Cobertura de rutas
• La base del análisis es de nuevo el gráfico de flujo de control
• Las sentencias son los nodos
• El flujo de datos se representa mediante aristas
• Una ruta es el recorrido de nodos y aristas de principio al fin del gráfico
de flujo de control
• El objetivo de las pruebas (criterio de finalización de las pruebas) es un valor
predefinido de cobertura de rutas:
260
V – Técnicas de diseño de prueba
04.3 – Técnicas de caja blanca
261
V – Técnicas de diseño de prueba
04.3 – Técnicas de caja blanca
262
V – Técnicas de diseño de prueba
04.3 – Técnicas de caja blanca
Otras técnicas basadas en estructura. Cobertura de rutas
• La cobertura de rutas del 100% sólo se puede lograr con los segmentos de
programa más sencillos
• Un bucle lleva p.ej., a una explosión de los casos de prueba, ya que cada posible
recorrido del bucle debe ser considerado como una ruta propia
263
V – Técnicas de diseño de prueba
05 – Técnicas basadas en la experiencia
264
V – Técnicas de diseño de prueba
05 – Técnicas basadas en la experiencia
• Como método es aplicable mas bién en las etapas posteriores de las pruebas
265
V – Técnicas de diseño de prueba
05 – Técnicas basadas en la experiencia
Especificación intuitiva de casos de prueba
• El probador debe tener experiencia o conocimientos que pueda transformar en
casos de prueba
• Intuición – ¿Dónde pueden estar los errores?
• La intuición caracteriza a un buen probador
• Experiencia – ¿Dónde hubo errores en el pasado?
• Los probadores experimentados tienen este conocimiento
• Alternativamente se pueden recuperar listas con efectos de error recurrentes
• Saber / conocimiento – ¿Dónde se pueden esperar aquí los errores?
• Entran los detalles especiales del proyecto
• ¿Dónde se pueden esperar más errores en función de la complejidad o la escasez de
tiempo?
266
V – Técnicas de diseño de prueba
05 – Técnicas basadas en la experiencia
Casos de prueba intuitivos – Posibles fuentes
• Resultados de pruebas y experiencias práctica con sistemas similares
• Eventualmente un antecesor del software o un sistema con funcionalidad similar
• Experiencias de usuarios
• Intercambio de experiencias relativas al software en círculos de usuarios
267
V – Técnicas de diseño de prueba
05 – Técnicas basadas en la experiencia
Especificación intuitiva de casos de prueba
• La especificación intuitiva de casos de prueba es un buen complemento para
los procedimientos sistemáticos
• Debe permanecer, sin embargo, como un complemento
• No hay criterios para comprobar su integridad – el número de casos de prueba
intuitivos puede variar mucho
268
V – Técnicas de diseño de prueba
05 – Técnicas basadas en la experiencia
Pruebas exploratorias
• Consiste en la realización concurrente de diseño, ejecución, y registro de
pruebas, y aprendizaje basado en unos objetivos de prueba dentro de una
planificación de pruebas.
• En las pruebas orientadas a scripts manuales, la ejecución de las pruebas, sin
embargo, se lleva a cabo, siguiendo una secuencia de pruebas previamente
documentada.
• Técnica informal en la que el probador controla de manera activa el diseño de
las pruebas así como de aquellas pruebas que se han ejecutado, y utiliza la
información obtenida durante las pruebas para diseñar nuevas y mejores
pruebas.
• Buena aproximación cuando:
• Las especificaciones son escasas o inadecuadas,
• Hay presiones de tiempo, y
• Como complemento a otras técnicas mas formales
269
V – Técnicas de diseño de prueba
05 – Técnicas basadas en la experiencia
Pruebas exploratorias. Comparativa de aproximaciones
Vs
En las pruebas exploratorias, las pruebas son diseñadas y ejecutadas al mismo tiempo,
y a menudo no son registradas
270
V – Técnicas de diseño de prueba
06 – Selección de técnicas de prueba
• Los probadores normalmente, cuando crean los casos de prueba, usan una
combinación de técnicas de prueba que incluye procesos, normas y técnicas
“data-driven”, para asegurar una adecuada cobertura del objeto bajo prueba.
271
V – Técnicas de diseño de prueba
07 – Resumen
Afirmaciones importantes del capítulo
• Existen muchos procedimientos de prueba diferentes con objetivos distintos
• Algunas pruebas requieren controladores de pruebas y stubs adicionales
• Diferencia entre técnicas de caja negra y caja blanca
• ¡El objetivo debería ser especificar con el mínimo esfuerzo los casos de
prueba más relevantes!
• La formación de clases de equivalencia en combinación con el análisis de
valores límite debería aplicarse a cada objeto de prueba
• Las pruebas referidas al estado tienen en cuenta los diferentes estados que
puede adoptar un objeto de prueba durante su ejecución
• En general los procedimientos de caja negra no pueden descubrir funciones
desarrolladas adicionalmente a las funciones especificadas
272
V – Técnicas de diseño de prueba
07 – Resumen
273
274
Capítulo VI – Gestión del proceso de
pruebas
• VI/01 Consideraciones previas generales
• VI/02 Organización del equipo de pruebas
• VI/03 Estimación y planificación de las pruebas
• VI/04 Monitorización y control de las pruebas
• VI/05 Gestión de la configuración
• VI/06 Riesgo y pruebas
• VI/07 Gestión de incidencias
• VI/08 Resumen
275
VI – Gestión del proceso de pruebas
01 – Consideraciones previas generales
Consideraciones previas.
276
VI – Gestión del proceso de pruebas
02 – Organización del equipo de pruebas
Generalidades.
• Las pruebas son una actividad que se distribuye durante el proceso de
desarrollo completo.
• Desde el primer componente hasta la aceptación.
• Las pruebas comienzan ya con la elaboración de los primeros documentos
(en forma de revisiones).
• En cada fase del desarrollo se dispone de diferentes objetos de prueba
para los que a su vez se deben implantar diferentes procedimientos de
pruebas.
• Pruebas de componentes, pruebas de integración, pruebas de
sistema, etc.
• Para cada una de estas fases de pruebas deben formarse probadores o
equipos de pruebas.
• Hay que equilibrar los costes y el aprovechamiento.
• Escoger al equipo de pruebas en base a las áreas.
277
VI – Gestión del proceso de pruebas
02.1 – Organización del equipo de pruebas
278
VI – Gestión del proceso de pruebas
02.2 – Organización del equipo de pruebas
279
VI – Gestión del proceso de pruebas
02.3 – Organización del equipo de pruebas
Perfiles.
• Para proyectos grandes, complejos o críticos desde el punto de vista de la
seguridad de las personas, suele ser mejor tener múltiples niveles de prueba,
siendo realizados algunos o todos ellos por probadores independientes. El
personal de desarrollo puede participar en las pruebas, especialmente en los
niveles más bajos, pero su falta de objetividad suele limitar su efectividad. Los
probadores independientes pueden tener autoridad para requerir y definir
procesos y reglas de pruebas pero los probadores sólo deberían asumir esos
roles relacionados con el proceso sólo cuando hay un claro mandato al
respecto.
280
VI – Gestión del proceso de pruebas
02.3 – Organización del equipo de pruebas
Perfiles.
281
VI – Gestión del proceso de pruebas
02.3 – Organización del equipo de pruebas
Perfiles.
282
VI – Gestión del proceso de pruebas
02.3 – Organización del equipo de pruebas
283
VI – Gestión del proceso de pruebas
02.3 – Organización del equipo de pruebas
284
VI – Gestión del proceso de pruebas
02.3 – Organización del equipo de pruebas
285
VI – Gestión del proceso de pruebas
02.3 – Organización del equipo de pruebas
286
VI – Gestión del proceso de pruebas
02.3 – Organización del equipo de pruebas. Perfiles
Perfiles.
• Automatizador de pruebas.
• Comprueba las posibilidades de automatización y las lleva a cabo.
• Conocimientos:
• Experiencia como probador.
• Conocimientos (Know-how) en diseño de pruebas y automatización.
• Experiencia en programación.
• Muy buenos conocimientos de las herramientas implantadas.
287
VI – Gestión del proceso de pruebas
02.3 – Organización del equipo de pruebas. Perfiles
Perfiles.
288
VI – Gestión del proceso de pruebas
02.3 – Organización del equipo de pruebas. Perfiles
Perfiles.
• Experto técnico.
• Completa el equipo de pruebas en caso de necesidad.
• Pueden ser:
• Administradores o diseñadores de bases de datos.
• Expertos en interfases de usuario.
• Especialistas en redes.
• Otros perfiles.
• Según el planteamiento del problema, el entorno de pruebas, etc. pueden
incorporarse otros especialistas al equipo de pruebas.
• Aquí se necesitan conocimientos especiales en materias que no tengan relación
con las pruebas, p.ej., expertos en usabilidad o psicólogos.
289
VI – Gestión del proceso de pruebas
02.3 – Organización del equipo de pruebas. Perfiles
Perfiles.
• Perfiles Soft
• A las cualificaciones técnicas referidas se añaden factores como:
• Capacidad de trabajo en equipo, habilidad política o diplomática.
• Disponibilidad para consultar acerca de hechos evidentes.
• Capacidad para imponerse, apariencia de seguridad.
• Exactitud y creatividad.
• Manejar con seguridad situaciones complejas.
• Comentario:
Sin estas características añadidas un probador sólo tendrá un éxito condicional
aunque sea muy competente en la materia.
290
VI – Gestión del proceso de pruebas
03.1 – Estimación y planificación de las pruebas
Planificación.
• En esta sección se cubre el propósito de la planificación de las pruebas,
tanto en proyectos de desarrollo e implementación como en actividades de
mantenimiento. La planificación puede documentarse en un plan de
proyecto o en un plan maestro de pruebas y en planes de pruebas
separados para cada nivel de prueba (como en las pruebas de sistema y de
aceptación). El ‘Standard for Software Test Documentation’ (IEEE 829)
bosqueja los documentos de planificación de las pruebas.
• La planificación está influida por la política de pruebas de la organización,
el alcance de las pruebas, objetivos, riesgos, restricciones, criticidad,
capacidad de ser probado y disponibilidad de los recursos. Cuanto más
progrese el proyecto y la planificación de las pruebas, más información se
encontrará disponible y más detalle podrá incluirse en el plan.
• La planificación de las pruebas es una actividad continua y se lleva a cabo
a lo largo de todas las actividades y procesos del ciclo de vida.
• El uso de la realimentación que proporcionan las actividades de pruebas,
permite reconocer riesgos de cambio, de forma que se pueda ajustar la
planificación.
291
VI – Gestión del proceso de pruebas
03.2 – Estimación y planificación de las pruebas
Actividades de planificación de las pruebas.
• Entre las actividades de planificación de las pruebas se puede incluir:
• Determinar el alcance y los riesgos, e identificar los objetivos de las pruebas.
• Determinar el enfoque general a aplicar durante las pruebas (la estrategia de
prueba), incluyendo la definición de los niveles de prueba y los criterios de
finalización.
• Integrar y coordinar las actividades de prueba dentro de las actividades del ciclo
de vida del software: adquisición, suministro, desarrollo, operación y
mantenimiento.
• Tomar decisiones acerca de qué probar, que roles llevarán a cabo las
actividades de prueba, como deberán hacerse las actividades de prueba y como
se evaluarán los resultados de las pruebas.
• Planificar las actividades de análisis y diseño de las pruebas.
• Planificar la implementación, ejecución y evaluación de las pruebas.
• Asignar recursos a las diferentes actividades definidas.
• Definir la cantidad, nivel de detalle, estructura y plantillas para la documentación
de prueba.
• Seleccionar métricas para la monitorización y controlar la preparación y
ejecución de las pruebas, la resolución de defectos y los factores de riesgo.
• Establecer el nivel de detalle de los procedimientos de prueba con vistas a
proporcionar suficiente información para soportar una preparación y ejecución
de las pruebas reproducible.
292
VI – Gestión del proceso de pruebas
03.3 – Estimación y planificación de las pruebas
Plan de pruebas.
293
VI – Gestión del proceso de pruebas
03.4 – Estimación y planificación de las pruebas
Plan de pruebas según IEEE 829.
294
VI – Gestión del proceso de pruebas
03.5 – Estimación y planificación de las pruebas
Criterios de entrada
• Los criterios de entrada definen cuándo comenzar a probar, como por ejemplo,
al principio de un nivel de pruebas o cuando se tiene un conjunto de pruebas
preparado para su ejecución.
• Típicamente, los criterios de entrada pueden consistir en:
• Disponibilidad y preparación del entorno de pruebas.
• Preparación de las herramientas de pruebas en el entorno de pruebas.
• Disponibilidad de código que se puede probar.
• Disponibilidad de datos de prueba.
295
VI – Gestión del proceso de pruebas
03.6 – Estimación y planificación de las pruebas
296
VI – Gestión del proceso de pruebas
03.7 – Estimación y planificación de las pruebas
297
VI – Gestión del proceso de pruebas
03.8 – Estimación y planificación de las pruebas
Estrategia de Pruebas, Aproximación de pruebas
• La Aproximación o Enfoque de las pruebas es la implementación de la
Estrategia de pruebas para un proyecto específico
• Típicamente incluye decisiones tomadas basándose en los objetivos de las
pruebas y la evaluación de riesgos.
• Es el punto de partida para:
• La planificación del proceso de pruebas.
• La selección de las técnicas y tipos de pruebas a llevar a cabo.
• La definición de los criterios de entrada y de salida.
• La selección del enfoque de las pruebas debería considerar el contexto,
incluyendo:
• Riesgo de fallo en el proyecto, peligros que pueden afectar al producto y riesgos
de fallo del producto que pueden afectar a las personas, al entorno y a la
compañía.
• Capacidades y experiencia de las personas en las técnicas de prueba, las
herramientas y los métodos.
• El objetivo de esfuerzo de las pruebas y la misión del equipo de pruebas
• Aspectos reguladores, como las regulaciones internas y externas que aplican al
equipo de desarrollo.
• La naturaleza del producto y del negocio.
298
VI – Gestión del proceso de pruebas
03.8 – Estimación y planificación de las pruebas
Estrategia de Pruebas, Aproximación de pruebas
• Una forma de clasificar las aproximaciones o enfoques de prueba se basa
en el momento en el que se inicia el diseño de las pruebas:
• Enfoques preventivos, en los que las pruebas se diseñan tan pronto como se
puede.
• Enfoques reactivos, en los que el diseño se realiza después de que se ha
producido el software o el sistema.
• Entre los enfoques o estrategias típicos se incluyen:
• Enfoques analíticos, como las pruebas basadas en riesgos, en las que la prueba
se orienta a las áreas de mayor riesgo.
• Enfoques basados en modelos, como las pruebas estocásticas, en los que se
utiliza información estadística acerca de los ratios de fallo (como los modelos de
crecimiento de fiabilidad) o uso (como los perfiles operacionales).
• Enfoques metódicos como los basados en fallos (incluyendo error guessing y
fault-attacks), los basados en la experiencia, los basados en listas de
comprobación y los que se basan en características de calidad.
• Enfoques que cumplen procesos o estándares, como los especificados por
estándares industriales o las metodologías “agiles”.
• Enfoques dinámicos y heurísticos como las pruebas exploratorias en las que las
pruebas reaccionan a los eventos más que lo que se haya podido planear por
anticipado, y en las que la ejecución y la evaluación son tareas concurrentes.
299
VI – Gestión del proceso de pruebas
03.8 – Estimación y planificación de las pruebas
Estrategia de Pruebas, Aproximación de pruebas
300
VI – Gestión del proceso de pruebas
04.1 – Monitorización y control del proceso de prueba
Monitorización.
• El propósito de la monitorización de las pruebas es proporcionar
realimentación y visibilidad de las actividades de prueba. La información a
monitorizar puede ser recogida de forma manual o automática y puede
utilizarse para medir criterios de salida, como la cobertura. Pueden
utilizarse también métricas para valorar el progreso respecto del calendario
y presupuesto planificados. Entre las métricas de prueba comunes se
incluyen:
• Porcentaje de trabajo realizado en la preparación de casos de prueba (o
porcentaje de casos de prueba preparados).
• Porcentaje de trabajo realizado en la preparación del entorno de pruebas.
• Ejecución de casos de prueba (por ejemplo: número de casos de prueba que se
han lanzado / que no se han lanzado y casos de prueba que han pasado / que
han fallado.
• Información de defectos (por ejemplo, densidad de defectos, defectos
encontrados y corregidos, ratio de fallos y resultados de las re-pruebas).
• Cobertura de pruebas respecto a requisitos, riesgos o código.
• Confianza subjetiva de los probadores en el producto.
• Fechas de hitos de prueba.
• Costes de las pruebas, incluyendo el coste comparado con los beneficios de
encontrar el siguiente defecto o de lanzar la siguiente prueba.
301
VI – Gestión del proceso de pruebas
04.2 – Monitorización y control del proceso de prueba
Informes de pruebas
302
VI – Gestión del proceso de pruebas
04.2 – Monitorización y control del proceso de prueba
Informes de pruebas
• En el ‘Standard for Software Test Documentation’ (IEEE 829) se recomienda
una estructura para el informe resumen de las pruebas:
• Identificador del documento
• Resumen
• Variaciones
• Evaluación comprensible
• Resumen de resultados
• Evaluación
• Resumen de actividades
• Aprobación.
303
VI – Gestión del proceso de pruebas
04.3 – Monitorización y control del proceso de prueba
304
VI – Gestión del proceso de pruebas
05 – Gestión de la configuración
Generalidades.
• En el transcurso del desarrollo de software se producen una gran cantidad de
datos / informaciones/ resultados.
• Comenzando con los requisitos.
• Las especificaciones y el diseño del sistema.
• Componentes individuales y elementos integrados.
• Versiones completas del sistema.
• Dentro del proyecto existe un gran número de diferentes colaboradores que
deben trabajar juntos en los objetos mencionados anteriormente.
• Las partes individuales pasan por diferentes manos y son modificadas en
diferentes lugares.
305
VI – Gestión del proceso de pruebas
05 – Gestión de la configuración
Generalidades.
• Para mantener la perspectiva, cada documento, cada dato, cada versión del
programa debe ser descrito y catalogado claramente.
• Se asignan sucesivas versiones numeradas del software, etc.
• Las autorizaciones para su elaboración posterior son anotadas, etc.
• Las modificaciones se posponen para un control posterior.
306
VI – Gestión del proceso de pruebas
05 – Gestión de la configuración
Generalidades.
• Todas las tareas mencionadas anteriormente se engloban bajo el término de
gestión de la configuración
• El objetivo de la gestión de la configuración es establecer y mantener la
integridad de los productos (Componentes, datos y documentación) del
software o del sistema durante el proyecto y el ciclo de vida del producto
• Se trata en este caso de una función transversal dentro del proyecto – todas
las modificaciones deben ser recogidas de forma centralizada y poder ser
dadas a conocer según un esquema claramente definido
• Según el tipo y el alcance del proyecto pueden variar en gran medida los
requerimientos para la gestión de la configuración – se debe definir un plan de
gestión de la configuración individualizado
307
VI – Gestión del proceso de pruebas
05 – Gestión de la configuración
Problemas típicos.
• Si se desatiende la gestión de la configuración surgirán casi irremediablemente
p.ej., los siguientes problemas:
• “Confusión de versiones” – confusión acerca de que versiones de los
ficheros van juntas, qué versiones son actuales – ¡se programa en base a
especificaciones “antiguas”!
• ¿Dónde y cuando se modificó algo? ¿Quién lo hizo? – Una modificación
paralela de los datos es posible... Las modificaciones pueden ser en
ocasiones sobrescritas.
• ¿Qué versión de los ficheros se probó? – ¡Sin indicaciones claras acerca
de las versiones se dificultan las pruebas y su valoración!
308
VI – Gestión del proceso de pruebas
05 – Gestión de la configuración
309
VI – Gestión del proceso de pruebas
05 – Gestión de la configuración
Comprobación de la configuración.
• Una comprobación de la configuración se implanta para verificar la efectividad
de la gestión de la configuración.
310
VI – Gestión del proceso de pruebas
06 – Riesgo y pruebas
Definición de riesgo.
311
VI – Gestión del proceso de pruebas
06.1 – Riesgo y pruebas
Riesgos del proyecto.
• Los riesgos asociados a proyecto que puedan influir en el éxito de éste deben
ser gestionados.
• Se ha de estimar la probabilidad de que ocurra y el daño potencial.
• Implementar medidas para tratar los riesgos identificados.
• Evitar riesgos
• Mitigar riesgos (preparar de forma activa medidas para reducir la probabilidad y/o el
daño potencial).
• Controlar riesgos (preparar medidas necesarias si el riesgo se transforma en un
problema, reservar tiempo y dinero).
• Ignorar el riesgo (esperar que los riesgos no acaben generando un problema, rezar,
cruzar los dedos, etc).
• Las tres primeras opciones cuestan dinero, la cuarta puede costar mucho
dinero.
312
VI – Gestión del proceso de pruebas
06.1 – Riesgo y pruebas
Riesgos típicos en un proyecto.
• Factores organizativos.
• Falta de recursos o de capacidad.
• Problemas personales entre equipos o entre miembros del mismo equipo.
• Insuficiente cooperación entre departamentos.
• Estimaciones no realistas.
• Factores técnicos.
• Requisitos incorrectos, incompletos o no realistas.
• No se pueden satisfacer los requisitos debido a la existencia de ciertas restricciones
• Tecnologías, métodos o herramientas nuevos.
• Baja calidad del diseño, del código o de las pruebas.
• No disponibilidad del entorno de pruebas a tiempo.
• Conversión de datos tardía, planificación y desarrollo de la migración y herramientas
de migración/conversión de datos de prueba.
• Riesgos asociados al proveedor.
• Cambios debidos a requisitos legales.
• Problemas contractuales con el suministrador.
• Mala calidad de los productos proporcionados por suministradores nuevos.
313
VI – Gestión del proceso de pruebas
06.2 – Riesgo y pruebas
315
VI – Gestión del proceso de pruebas
07 – Gestión de incidencias
Localización de errores durante el trabajo de pruebas.
• Los probadores ejecutan las pruebas especificadas y documentan los
resultados.
316
VI – Gestión del proceso de pruebas
07 – Gestión de incidencias
Tareas de la gestión de incidencias.
• En la gestión de incidencias se recogen todos las incidencias / errores
encontrados en el proyecto.
• Además de su recogida y administración se establecen informaciones
adicionales para los errores individuales.
• Se determina la gravedad del error.
• Estado del error- p.ej., abierto, en proceso de trabajo, solucionado…
• Todas las informaciones se almacenan en una base de datos central.
• Aquí es posible un tratamiento sin redundancias.
• Se proporciona una visión óptima acerca de los errores encontrados y su
tratamiento.
317
VI – Gestión del proceso de pruebas
07 – Gestión de incidencias
Tareas de la gestión de incidencias.
• Sin un proceso de gestión de incidencias en funcionamiento no se puede tener
un tratamiento ordenado de las mismas.
• La gestión de incidencias debe construirse al principio del proyecto.
• Algunos puntos que deben ser considerados para una gestión correcta de
incidencias son:
• Proporcionar notificaciones / formularios de notificación comunes.
• Todos las incidencias / errores / problemas deben ser recogidos,
independientemente de parte de qué persona involucrada en el proceso
provengan y de dónde hayan aparecido.
• Se debe definir una manera de proceder determinada para el tratamiento
de las incidencias (definir el proceso).
• Debe de existir en la organización unas normas establecidas para
clasificar las incidencias.
318
VI – Gestión del proceso de pruebas
07 – Gestión de incidencias
Reparto de tareas.
• Probador.
• Ejecuta las pruebas para detectar errores.
• Documenta los resultados (Documentación de pruebas).
• Registra los errores en la base de datos (Notificación de errores y desviaciones).
• Gestor de pruebas.
• Evalúa las notificaciones de errores.
• Otorga prioridades (de acuerdo con el director de proyecto, el cliente, ...)
• Supervisa el tratamiento.
319
VI – Gestión del proceso de pruebas
07 – Gestión de incidencias
Reparto de tareas.
• Gestión de las modificaciones o Change Control Board (CCB)
• Toma decisiones sobre las modificaciones y su priorización.
• Desarrollador.
• Corrige los errores de acuerdo con sus prioridades.
• Lleva a cabo todas las modificaciones acordadas.
320
VI – Gestión del proceso de pruebas
07 – Gestión de incidencias
Notificación de incidencia (informe de incidencias)
• Objetivos.
- Proporcionar a los desarrolladores y otros roles de la organización,
información sobre los problemas detectados para permitir su identificación
y corrección en caso necesario.
- Proporcionar a los responsables de pruebas un medio de seguimiento de la
calidad del sistema bajo prueba y del progreso de las pruebas.
- Proporcionar ideas para la mejora del proceso de pruebas.
321
VI – Gestión del proceso de pruebas
07 – Gestión de incidencias
Contenido de una notificación de incidencia (informe de incidencias).
• La notificación del error / incidencia debería contener al menos los siguientes
puntos:
• Datos de la incidencia.
• Número único (p.ej., asignación secuencial).
• Datos acerca del objeto de prueba (nombre, versión).
• Entorno de pruebas.
• Nombre del notificador.
• Fecha de la primera aparición.
• Clasificación de la incidencia.
• Clase de la incidencia.
• Estado de la incidencia (nueva, repetición de las pruebas, etc.).
• Prioridad (primera valoración del notificador acerca de su urgencia).
322
VI – Gestión del proceso de pruebas
07 – Gestión de incidencias
Contenido de una notificación de incidencia (informe de incidencias).
• Descripción.
• Descripción breve.
• Descripción detallada de los pasos realizados durante la prueba que permitan su
reproducción y resolución, incluyendo toda la información adicional que se
considere importante (logs, datos de prueba, capturas de pantalla, etc.).
• Caso de prueba que ha provocado la incidencia (proporciona toda la información
acerca de las condiciones).
• Caso de prueba (proporciona toda la información acerca de las condiciones).
• Efecto de la incidencia.
• Origen de la incidencia.
• Referencia a notificaciones relacionadas.
• Comentarios.
• Eventualmente medidas de corrección adoptadas.
323
VI – Gestión del proceso de pruebas
07 – Gestión de incidencias
Clases.
• La gravedad de una incidencia / error se determina según su clase:
• Las clases se pueden formar libremente.
• Las clases proporcionan diferentes niveles que se puede asignar a una
incidencia (críticas, graves, medias, ligeras).
• La base para la clasificación puede ser el grado de perjuicio en la
implantación del producto [DIN 66271].
324
VI – Gestión del proceso de pruebas
07 – Gestión de incidencias
Priorización.
• El tratamiento / la corrección de errores se lleva a cabo en función de la
prioridad asignada:
• Un criterio de priorización en sin duda la gravedad del error, en la que se
tienen en cuenta los efectos del mismo.
• Otros criterios pueden ser también el desarrollo del proyecto, etc. ¿En
que medida se impide el desarrollo posterior del proceso?
• Las prioridades podrían ser: eliminación indispensable, eliminación en el
siguiente tratamiento posterior del objeto, etc.
325
VI – Gestión del proceso de pruebas
07 – Gestión de incidencias
Estado de la incidencia.
• El estado de la incidencia determina en que fase de elaboración se
encuentra.
• Posibles caracterizaciones pueden ser:
• Nuevo – el error o incidencia ha sido notificado por primera vez por parte del
probador.
• Abierto – la notificación se liberó por parte del gestor de pruebas.
• Rechazado – la notificación fue rechazada por el gestor de pruebas.
• Investigado – el desarrollador intenta identificar el error.
• Observación – no se puede identificar el error, está en observación.
• En proceso – el error se ha liberado para su corrección (en caso contrario se
rechaza).
• Repetición de la prueba –se asigna por parte del desarrollador después de la
corrección.
• Solucionado – se asigna por el probador cuando el error se demuestra eliminado
después de la repetición de la prueba.
• No solucionado – la asigna el probador cuando el error continúa apareciendo.
326
VI – Gestión del proceso de pruebas
07 – Gestión de incidencias
Ejemplo de ciclo de vida de un error / incidencia.
• Se pueden dar las siguientes transiciones de estado:
Nuevo
Observación
Abierto
Rechazado
Investigado
En proceso
de corrección
327
VI – Gestión del proceso de pruebas
07 – Gestión de incidencias
Estados.
• Sólo un probador puede confirmar un error como solucionado.
328
VI – Gestión del proceso de pruebas
08 – Resumen
Afirmaciones importantes del capítulo.
• Para poder llevar a cabo pruebas efectivas deberían separase
organizativamente en los niveles más altos de las pruebas las actividades de
desarrollo y de pruebas.
329
VI – Gestión del proceso de pruebas
08 – Resumen
330
331
Capítulo VII – Herramientas de
pruebas
• VII/01 Tipos de herramienta de pruebas
• VII/02 Uso efectivo de las herramientas: beneficios y
riesgos potenciales
• VII/03 La introducción de una herramienta en una
organización
• VII/04 Resumen
332
VII – Herramientas de pruebas
01.1 – Tipos de herramienta de prueba
Significado y propósito del soporte a pruebas mediante herramientas
• Las herramientas de pruebas pueden dar soporte a una o varias actividades de
pruebas. Incluyen:
• Herramientas utilizadas directamente en las pruebas, como herramientas de
ejecución de pruebas, de generación de datos y de comparación de resultados.
• Herramientas para ayudar en la gestión del proceso de pruebas y en el reporte y
monitorización de la ejecución de las pruebas.
• Herramientas usadas en la exploración (ej.: herramientas que monitorizan la
actividad de un fichero para una aplicación)
• Cualquier herramienta que de soporte a las pruebas (ej.: una hoja Excel)
333
VII – Herramientas de pruebas
01.2 – Tipos de herramienta de prueba
Clasificación de las herramientas de prueba
• Las tareas de pruebas pueden tanto apoyarse en herramientas (Tools) como
automatizarse mediante ellas.
• El apoyo de herramientas tiene sentido en aquellas áreas en las que se
trabaja de forma “creativa”.
• La pura ejecución de las pruebas - el doing - puede automatizarse
mediante herramientas.
• La totalidad de las herramientas se denomina en relación al concepto CASE
(Computer Aided Software Engineering), CAST-Tools (Computer Aided
Software Testing).
• Las herramientas se diferencian según su utilización. Para cada etapa del
proceso de pruebas se dispone de diferentes herramientas.
• Algunas de ellas pueden ser utilizadas para dar soporte a más de una
actividad. En tal caso se clasificará en base a la actividad a la que esté más
ligada.
334
VII – Herramientas de pruebas
01.2 – Tipos de herramienta de prueba
Clasificación de las herramientas de prueba (Cont.)
• Algunas herramientas dan soporte a un tipo de actividad. Hay vendedores que
ofrecen familias de herramientas (suites) que proporcionan soporte a la
mayoría o a todas las actividades asociadas al proceso de pruebas (HP-
Quality Center, IBM-Rational, Borland…)
• Las herramientas son particularmente útiles cuando hay tareas repetitivas
proporcionando:
• Mejoras en la eficiencia
• Mejoras en la fiabilidad
• Algunas herramientas pueden ser intrusivas, pudiendo afectar al tiempo de
respuesta de la aplicación, por ejemplo: las herramientas de cobertura de
código (instrumentalización) o las de análisis de prestaciones (marcaje de
tiempos). Al tiempo adicional se le denomina efecto sonda.
• Hay herramientas que son particularmente útiles a los desarrolladores. En este
curso se marcarán con una “D”.
335
VII – Herramientas de pruebas
01.2 – Tipos de herramienta de prueba
Clasificación de las herramientas de prueba (Cont.)
1.- Herramientas de soporte a la gestión y ejecución de las pruebas
A) Herramientas de gestión de pruebas
B) Herramientas de gestión de requisitos
C) Herramientas de gestión de incidencias
D) Herramientas de gestión de configuración
2.- Herramientas de soporte a las pruebas estáticas
A) Herramientas de revisión
B) Herramientas para el análisis estático (D)
C) Herramientas de modelado (D)
3.- Herramientas de soporte a la especificación de pruebas
A) Herramientas para el diseño de las pruebas
B) Herramientas de preparación de datos de prueba
4.- Herramientas de soporte a la ejecución y el registro de resultados
A) Herramientas para la ejecución de pruebas (Robots de pruebas, Depuradores (D)
y controladores de prueba).
B) Herramientas que proporcionan marcos de pruebas unitarias (frameworks) o
armazones de prueba (D).
C) Comparadores de prueba.
D) Herramientas de medida de cobertura (D).
E) Herramientas de prueba de seguridad.
5.- Herramientas de soporte al rendimiento y monitorización
A) Herramientas de análisis dinámico (D).
B) Herramientas de pruebas de rendimiento, carga y estrés.
C) Herramientas de monitorización
6.- Herramientas de soporte para áreas de aplicación específicas
7.- Otras herramientas.
336
VII – Herramientas de pruebas
01.3 – Tipos de herramienta de prueba
1.- Herramientas de soporte a la gestión y ejecución de las pruebas
A) Herramientas de gestión de pruebas
• También conocidas como herramientas para la gestión de los casos y el
proceso de prueba .
• Apoyo al probador en la administración y la gestión de pruebas.
• Seguimiento de la ejecución de las pruebas y el estado de los casos de
pruebas.
• Interfaz con herramientas:
• Ejecución de casos.
• Gestión de incidencias.
• Gestión de requisitos.
• Gestión de configuración.
• Soporte a la trazabilidad de requisitos-casos-resultados-incidencias.
• Registro y administración de los casos, datos y resultados de prueba.
• Documentación de las pruebas.
• Generación automática de documentos como el plan de pruebas o los
informes de pruebas. En general, documentación de las pruebas a partir de
la información registrada (directa, resumida o procesada).
337
VII – Herramientas de pruebas
01.3 – Tipos de herramienta de prueba
338
VII – Herramientas de pruebas
01.3 – Tipos de herramienta de prueba
339
VII – Herramientas de pruebas
01.3 – Tipos de herramienta de prueba
340
VII – Herramientas de pruebas
01.4 – Tipos de herramienta de prueba
2.- Herramientas de soporte a las pruebas estáticas
A) Herramientas de revisión
• Dentro de los diversos tipos de revisión existentes, las herramientas de
revisión (también conocidas como herramientas de soporte al proceso de
revisión) son tanto más útiles:
• Cuanto más formal sea el proceso.
• Cuanta más gente participe en el proceso.
• Cuanto más repartida físicamente se encuentre.
• Entre las características que puede incluir una herramienta de soporte a las
revisiones están:
• Almacenar información acerca de los procesos de revisión.
• Almacenar, organizar, comunicar y ayudar al seguimiento de los comentarios.
• Generar informes acerca de los defectos y el esfuerzo necesario para su
resolución.
• Gestionar reglas y/o listas de comprobación (checklist).
• Realizar el seguimiento de la trazabilidad entre documentos y código fuente.
• Proporcionar ayuda a las revisiones online, lo que resulta útil si el equipo se
encuentre dispersado geográficamente.
• Monitorizar el estado de cada revisión (pasada, pasada con correcciones…).
• Recoger e informar métricas.
341
VII – Herramientas de pruebas
01.4 – Tipos de herramienta de prueba
342
VII – Herramientas de pruebas
01.4 – Tipos de herramienta de prueba
343
VII – Herramientas de pruebas
01.5 – Tipos de herramienta de prueba
3.- Herramientas de soporte a la especificación de pruebas
344
VII – Herramientas de pruebas
01.5 – Tipos de herramienta de prueba
345
VII – Herramientas de pruebas
01.5 – Tipos de herramienta de prueba
346
VII – Herramientas de pruebas
01.5 – Tipos de herramienta de prueba
347
VII – Herramientas de pruebas
01.5 – Tipos de herramienta de prueba
348
VII – Herramientas de pruebas
01.6 – Tipos de herramienta de prueba
4.- Herramientas de soporte a la ejecución y el registro de resultados.
• Se pueden distinguir los siguientes tipos:
A) Herramientas para la ejecución de pruebas.
B) Herramientas que proporcionan marcos de pruebas unitarias (frameworks) o
armazones de prueba (D).
C) Comparadores de prueba.
D) Herramientas de medida de cobertura (D).
E) Herramientas de prueba de seguridad.
349
VII – Herramientas de pruebas
01.6 – Tipos de herramienta de prueba
350
VII – Herramientas de pruebas
01.6 – Tipos de herramienta de prueba
351
VII – Herramientas de pruebas
01.6 – Tipos de herramienta de prueba
A) Herramientas para la ejecución de pruebas. Robots de prueba.
(Cont.)
352
VII – Herramientas de pruebas
01.6 – Tipos de herramienta de prueba
• Depuradores (D)
• Herramienta para la búsqueda de errores en un programa.
• Posibilitan un proceso secuencial del programa (ejecución de
sentencias individuales).
• El proceso puede pararse en cualquier momento para comprobar
cada una de las sentencias y condiciones.
• Las variables se pueden definir o referenciar de forma individual.
353
VII – Herramientas de pruebas
01.6 – Tipos de herramienta de prueba
• Controladores de pruebas
• Permiten el acceso a un objeto de prueba sin las interfases
correspondientes.
• Regulan la entrada y salida de datos y documentan el desarrollo.
• Registro de valores obtenidos.
• Pueden ser productos estándar ya preparados o se pueden programar
especialmente para el objeto de prueba a tratar.
• Proporcionan, además, por regla general, un entorno de ejecución.
354
VII – Herramientas de pruebas
01.6 – Tipos de herramienta de prueba
B) Herramientas que proporcionan marcos de pruebas unitarias
(frameworks) o armazones de prueba (D).
• Un armazón de pruebas (test harness) puede facilitar la prueba de
componentes o de parte de un sistema mediante la simulación del entorno en
el que van a correr estos objetos de prueba. Esto puede llevarse a cabo ya
sea porque otros componentes de este entorno no se encuentran aún
disponibles o simplemente para proporcionar un entorno predecible y
controlable en el que pueda localizarse cualquier tipo de fallo en el objeto
bajo prueba.
• Puede crearse un marco (framework) en aquellos casos en los que puede
ejecutarse una parte del código, un objeto, método o función, unidad o
componente, llamando al objeto a probar y/o proporcionando realimentación.
Esto se puede hacer proporcionando medios artificiales de suministrar
entradas al objeto de prueba (drivers) y/o suministrando stubs que
proporcionen una salida del objeto, en lugar de disponer de salidas reales
• Las herramientas que proporcionan armazones de prueba pueden usarse
para proporcionar marcos de ejecución en los casos en los que se
comprueba middleware, donde se ha de probar de forma conjunta lenguajes,
sistemas operativos o hardware.
355
VII – Herramientas de pruebas
01.6 – Tipos de herramienta de prueba
B) Herramientas que proporcionan marcos de pruebas unitarias
(frameworks) o armazones de prueba (D). (Cont.)
• Pueden ser denominadas herramientas de marco de pruebas unitarias
cuando se enfocan a este nivel de prueba. Este tipo de herramienta ayuda
a ejecutar pruebas de componente en paralelo a la construcción del código.
Dentro de esta familia de herramientas están las “xUnit”: JUnit, NUnit…
Este tipo de herramientas son muy similares a las de ejecución,
proporcionando utilidades para almacenar casos y monitorizar resultados.
Lo que no tienen es capacidad de grabar y reproducir casos.
356
VII – Herramientas de pruebas
01.6 – Tipos de herramienta de prueba
C) Comparadores de prueba.
357
VII – Herramientas de pruebas
01.6 – Tipos de herramienta de prueba
D) Herramientas de medida de cobertura (D)
• Miden el porcentaje de tipos específicos de estructura de código que han sido
ejercitadas (por ejemplo, sentencias, ramas o decisiones y llamadas a módulos
o funciones).
• Pueden ser intrusivas o no intrusivas (suelen ser intrusivas) dependiendo de
las técnicas de medición utilizadas, qué es lo que se mide y el lenguaje de
codificación.
• Las herramientas intrusivas, mediante una instrumentalización se instalan
contadores que registran cada acceso. Después de finalizar las pruebas las
herramientas pueden valorar a partir del estado de los contadores qué grado
de cobertura se obtiene para las pruebas.
• Puede ser aplicada a diversos niveles de prueba, pero sobre todo se usa en
pruebas de componente.
• Una cobertura de un 100% de un determinado tipo de estructura no implica
una cobertura de prueba del 100%.
358
VII – Herramientas de pruebas
01.6 – Tipos de herramienta de prueba
E) Herramientas de prueba de seguridad.
• Hay diversos elementos que ayudan a proteger a un sistema o aplicación de
ataques externos. Un cortafuegos, por ejemplo, no es estrictamente una
herramienta de seguridad, pero puede utilizarse en las pruebas de seguridad.
• Las herramientas de prueba de seguridad buscan en el sistema
vulnerabilidades específicas. Pueden centrarse en la red, el software base, el
código de la aplicación o la base de datos.
• Pueden incluir:
• Identificación de virus.
• Detección de intrusiones.
• Simulación de ataques externos.
• Comprobación de puertos.
359
VII – Herramientas de pruebas
01.7 – Tipos de herramienta de prueba
360
VII – Herramientas de pruebas
01.7 – Tipos de herramienta de prueba
361
VII – Herramientas de pruebas
01.7 – Tipos de herramienta de prueba
362
VII – Herramientas de pruebas
01.7 – Tipos de herramienta de prueba
C) Herramientas de monitorización.
• Las herramientas de monitorización no son estrictamente herramientas de
prueba, pero proporcionan información que puede utilizarse con propósitos
de prueba y que no se encuentran disponibles mediante otros medios.
• Las herramientas de monitorización analizan, verifican e informan de forma
continua y en tiempo real acerca del uso de recursos específicos del
sistema:
• Número de usuarios de una red
• Tráfico de red
• …
• Proporcionan alertas (pueden enviar mensajes a un administrador, por
ejemplo) acerca de posibles problemas en el servicio.
• Pueden guardar logs con los resultados obtenidos para su análisis posterior
(evolución histórica de datos).
• Por otra parte, pueden almacenar información acerca de la versión del
software de aplicación y del de pruebas, ayudando a mantener la
trazabilidad.
363
VII – Herramientas de pruebas
01.8 – Tipos de herramienta de prueba
6.- Herramientas de soporte para necesidades de prueba específicas.
• Existen determinadas herramientas para ciertas necesidades específicas
de prueba, como por ejemplo, para el Análisis de la calidad de los datos:
• Los datos son la parte central de algunos proyectos concretos, como:
• Proyectos de conversión/migración de datos
• Algunas aplicaciones, como warehouses de datos
• Y sus atributos pueden cambiar en términos de criticidad y volumen.
• En este contexto, se necesita emplear herramientas para el análisis de la calidad
de los datos, para verificar y revisar la conversión de los datos y las reglas de
migración, de cara asegurar que los datos preparados son correctos, completos
y cumplen con un estándar predefinido para ese contexto específico.
• Existen también herramientas para las pruebas de usabilidad.
364
VII – Herramientas de pruebas
01.9 – Tipos de herramienta de prueba
7.- Otras herramientas.
• Las herramientas de prueba que se han enumerado aquí no son las únicas
utilizadas por los probadores – también pueden usar hojas de cálculo, SQL
o herramientas de depuración (D), por ejemplo.
365
VII – Herramientas de pruebas
02.1 – Uso efectivo de herramientas
Beneficios y riesgos de usar una herramienta de soporte
• La simple compra o alquiler de una herramienta no garantiza el éxito (no
hay balas de plata ni soluciones mágicas). Cada tipo de herramienta puede
necesitar esfuerzos adicionales para lograr beneficios reales y duraderos.
En el uso de herramientas de prueba, al igual que en cualquier otra
herramienta, hay beneficios potenciales y oportunidades, pero también hay
riesgos.
• Entre los potenciales beneficios del uso de herramientas se incluyen:
• Reducción del trabajo repetitivo (por ejemplo, correr pruebas de regresión,
volver a introducir los mismos datos de prueba y verificación del cumplimiento de
estándares de codificación). Las actividades repetitivas suelen generar errores
cuando se hacen a mano.
• Mayor consistencia (puedes estar seguro que una máquina va a ejecutar
exactamente la misma prueba, en el caso de una persona no siempre está tan
claro).
• Posibilidad de repetición (por ejemplo, pruebas ejecutadas por una herramienta
y pruebas obtenidas a partir de requisitos).
• Evaluación objetiva (por ejemplo, medidas estáticas, cobertura) no hay
posibilidad de que quede información sin registrar por olvido.
• Facilidad de acceso a la información de las pruebas y a los casos de prueba (por
ejemplo, estadísticas y gráficos acerca del progreso de las pruebas, de ratios de
incidencias y de prestaciones).
366
VII – Herramientas de pruebas
02.1 – Uso efectivo herramientas
Beneficios y riesgos de usar una herramienta de soporte.
• Entre los riesgos asociados al uso de herramientas se incluyen:
• Expectativas no realistas acerca de la herramienta (incluyendo funcionalidad
y facilidad de uso). Una herramienta no resuelve:
• Un problema organizativo. Lo más que puede hacer es ayudar a su resolución,
reduciendo esfuerzos.
• Una mala capacitación de un probador. Se puede gestionar perfectamente casos de
prueba incorrectos o incompletos
• Subestimación del tiempo, coste y esfuerzo necesario para la introducción
inicial de una herramienta (incluyendo formación y soporte experto externo). No
sólo es que no se le saque todo el partido al principio, es que, inicialmente,
puede requerir más tiempo hacer el trabajo que cuando se hacía manualmente
• Subestimación del tiempo y esfuerzo necesario para lograr de la
herramienta beneficios significativos y continuados (incluyendo la
necesidad de cambios en el proceso de prueba y mejora continua en la forma de
utilizar la herramienta). Los beneficios se obtienen a largo plazo
• Subestimación del esfuerzo necesario para mantener los elementos de
prueba generados por la herramienta. Disponer para cada incidencia de
información del módulo que ha generado un error resultar muy útil para realizar
análisis históricos o de tendencias de la calidad del módulo, pero hay que
identificarlo y documentarlo
• Demasiada dependencia de la herramienta. A veces parece haber una fiebre
por amortizar la herramienta usándola para tareas para las que resultan más
adecuadas las pruebas manuales.
367
VII – Herramientas de pruebas
02.1 – Uso efectivo herramientas
Beneficios y riesgos de usar una herramienta de soporte (cont.).
• Entre los riesgos asociados al uso de herramientas se incluyen (cont.):
• Descuidar el control de versiones de los elementos de prueba dentro de la
herramienta.
• Descuidar aspectos relativos a la relación e interoperabilidad entre
herramientas críticas, como herramientas de gestión de requisitos, de control
de versiones, de gestión de incidencias o seguimiento de defectos y
herramientas procedentes de múltiples proveedores.
• Proveedores de herramientas que abandonan el negocio, retiran la
herramienta o la venden a otro proveedor diferente.
• Respuesta pobre por parte del proveedor para el soporte, las actualizaciones
y el arreglo de defectos.
• Suspensión de un proyecto de herramienta open-source/libre.
• Ciertos imprevistos, como la incapacidad de soportar una plataforma nueva.
368
VII – Herramientas de pruebas
02.2 – Uso efectivo herramientas
Consideraciones especiales para ciertos tipos de herramientas.
• Herramientas de ejecución de las pruebas
• Las herramientas de ejecución de las pruebas reproducen scripts diseñados para
implementar pruebas que han sido almacenados de forma electrónica. Este tipo de
herramienta suele requerir esfuerzos significativos para lograr beneficios
significativos.
• Los scripts pueden ser capturados grabando acciones manuales. Pero este
enfoque no permitiría cubrir un número elevado de scripts de pruebas automáticas,
porque los scripts capturados son una representación lineal con datos y acciones
específicas en cada script. Y podrían ser inestables si ocurriese algún evento
inesperado.
• Un enfoque de pruebas “data-driven” separa los datos, normalmente en hojas de
cálculo, y usa un script de pruebas más genérico que puede leer los datos de
entrada y ejecutar el mismo script con diferentes datos. Los probadores que no
conocen el lenguaje de script pueden entonces crear los datos de prueba para esos
scripts predefinidos. También se podrían utilizar algoritmos para la generación de
los datos de entrada al script.
• Se necesita, en todos los casos, disponer de experiencia técnica en el lenguaje de
script (ya sea por parte de los probadores o por especialistas en automatización de
pruebas).
• Sea cual sea la técnica de scripting utilizada, deben almacenarse los resultados
esperados de cada prueba para su posterior comparación
369
VII – Herramientas de pruebas
02.2 – Uso efectivo herramientas
Consideraciones especiales para ciertos tipos de herramientas.
370
VII – Herramientas de pruebas
02.2 – Uso efectivo herramientas
Consideraciones especiales para ciertos tipos de herramientas.
• Herramientas de gestión de las pruebas
• Las herramientas de gestión de las pruebas tienen que disponer de una interfaz
con otras herramientas u hojas de cálculo, con el objeto de producir información
en el mejor formato posible para las necesidades de la organización.
• Como en el resto de los casos, hay que tener un proceso de pruebas bien
definido antes de introducir la herramienta
371
VII – Herramientas de pruebas
03 – Introducción de una herramienta en una organización
Generalidades.
• ¿Que tipo apoyo mediante herramientas es deseable/ necesitado?
• ¡Para esto debe analizarse los más detalladamente posible la situación
del proyecto!
• Consideraciones previas:
• Una herramienta no puede remplazar un proceso de pruebas inexistente
o compensar una forma de procedimiento descuidada.
• En principio las herramientas son tan poderosas como aquel que las
implementa (“A fool with a tool is still a fool”)
372
VII – Herramientas de pruebas
03 – Introducción de una herramienta en una organización
373
VII – Herramientas de pruebas
03 – Introducción de una herramienta en una organización
Elección de una herramienta.
• Entre los principales aspectos a considerar a la hora de seleccionar una
herramienta para una organización se incluyen:
• Evaluación de la madurez, fortalezas y debilidades de la organización
• Identificación de las oportunidades que para la mejora de un proceso de prueba
proporcionaría el soporte de herramientas
• Definición de requisitos claros y criterios objetivos. Establecimiento de pesos. Entre
los criterios se pueden considerar:
• Adaptación a la operativa y a las necesidades específicas
• Flexibilidad
• Soporte local (incluyendo formación, soporte y aspectos comerciales)
• Hacer un estudio de mercado (selección previa)
• Evaluación de las necesidades de formación teniendo en cuenta los conocimientos
de automatización de pruebas del equipo de pruebas actual.
• Prueba(s) piloto y/o demostraciones por parte del vendedor para comprobar la
funcionalidad requerida y determinar si el producto satisface sus objetivos
• Estimación del ratio coste-beneficio basándose en una propuesta de negocio sólida.
• Evaluación, tomando en consideración los criterios y pesos
• Informe de resultados
• Revisión de resultados
• Selección de la herramienta
374
VII – Herramientas de pruebas
03 – Introducción de una herramienta en una organización
Introducción (implantación).
• Se debería establecer e instalar previamente un proceso de pruebas funcional.
• Esto es, entender qué se está haciendo y por qué se hace/se debe hacer.
375
VII – Herramientas de pruebas
03 – Introducción de una herramienta en una organización
Introducción (implantación).
• La introducción de una nueva herramienta debe llevarse a cabo en seis pasos:
• Proyecto piloto
• Revisión de las experiencias /resultados
• Adaptación de los procesos / de las herramientas
• Formación a los usuarios
• Introducción para la implantación general
• Formación o entrenamiento que acompañe a la implantación
376
VII – Herramientas de pruebas
03 – Introducción de una herramienta en una organización
Introducción (implantación).
• La introducción mencionada anteriormente parece en principio muy laboriosa,
sin embargo es necesaria.
• El proyecto piloto proporciona informaciones importantes para la implantación
posterior.
• Mediante revisiones se pueden aclarar las medidas, o eventualmente las
adaptaciones, necesarias.
• ¡La formación temprana es generalmente indispensable!
• La introducción se hará solo cuando se pueda asegurar una implantación
correcta.
377
VII – Herramientas de pruebas
03 – Introducción de una herramienta en una organización
Introducción (implantación). Factores de éxito
• Entre los factores de éxito asociados al despliegue de la herramienta en una
organización se incluyen:
• Desplegar de forma incremental la herramienta.
• Adaptar y mejorar procesos adaptados al uso de la herramienta (quede claro, el
proceso marca la selección de la herramienta, una vez seleccionada, se adaptan
para aprovechar las capacidades al máximo y mejorar la eficiencia).
• Proporcionar formación y soporte de consultas a los nuevos usuarios.
• Definir líneas guía para su uso. Elaborar manuales de usuario adaptados a la
organización.
• Implementar una forma de aprender lecciones del uso de la herramienta. Establecer
un mecanismo de mejora continua.
• Monitorizar el uso y los beneficios que proporciona la herramienta. Calcular el ROI.
• Proporcionar soporte al equipo de pruebas para una herramienta dada
• Recopilar lecciones aprendidas de todos los equipos.
378
VII – Herramientas de pruebas
03 – Introducción de una herramienta en una organización
Costes de la introducción (implantación).
• La introducción de una herramienta puede estar unida a costes relevantes.
• Adquisición,
• Mantenimiento,
• Eventualmente hardware adicional requerido y
• Formación a los colaboradores.
379
VII – Herramientas de pruebas
03 – Introducción de una herramienta en una organización
Amortización de los costes de adquisición.
• La gran pregunta desde el punto de vista económico es cuándo se
amortiza una herramienta – esta pregunta no tiene lamentablemente fácil
respuesta.
• Los costes de la primera implantación (de una herramienta de
automatización) se ven normalmente aumentados todavía más por la
“nueva programación de los casos de prueba”.
• Se producen costes adicionales por la formación de los colaboradores.
• Sólo con la automatización de más casos de prueba se suma el ahorro
obtenido por caso de prueba.
• La mejora de la calidad de las pruebas individuales no se puede expresar
normalmente en términos monetarios.
• Pero la amortización sólo engloba los resultados económicos y no los
efectos sobre la calidad.
¡Solo una implantación duradera, a largo plazo y sostenida de
una herramienta de pruebas posibilita una amortización de los
costes de adquisición!
380
VII – Herramientas de pruebas
03 – Introducción de una herramienta en una organización
Amortización de los costes de adquisición.
• Sólo mediante una implantación eficiente se consigue una ventaja en costes
respecto de la actividad manual.
• Las herramientas para, p.ej., la ejecución automatizada de casos de prueba
necesitan un cierto esfuerzo para la primera preparación de los casos de
prueba.
• Aquí se producen mejoras en los costes cuando se repite la ejecución de las
pruebas – éstos mejoran cada vez más con el número de repeticiones.
• Otras herramientas deberían implantarse para “cubrir áreas” y conseguir el
mayor ahorro posible.
• En determinados casos, en función del volumen o de la complejidad de una
prueba, ésta sólo puede realizarse con el apoyo de herramientas.
• Si una herramienta se necesita obligatoriamente para las pruebas entonces los
aspectos económicos no juegan ya un papel determinante.
381
VII –Herramientas de pruebas
04 – Resumen
Afirmaciones importantes del capítulo:
• Hoy en día se dispone de herramientas para cada fase del proceso de
pruebas para:
• Elaborar la automatización de las pruebas.
• Mejorar cualitativamente los trabajos de pruebas.
• Acortar los tiempos de ejecución de las pruebas.
• Solo un proceso de pruebas organizado y establecido es adecuado para la
implantación de herramientas.
• Es indispensable una elección de herramientas antes de la introducción para
poder calcular unos costes y riesgos considerables.
• Un acompañamiento constante durante la introducción de la herramienta
escogida, con entrenamiento y formación de los usuarios, es necesario para
una implantación regular y de este modo para el beneficio económico de un
proceso de pruebas automatizado.
382
383
Les agradecemos el interés mostrado