Curso ISTQB Unificado
Curso ISTQB Unificado
Seminarios y Formación
Tester Certificado
Nivel Básico
Formación para el “Tester Certificado – Nivel
Básico” de acuerdo al programa de estudios
2005 del ISTQB
V1.93_español
2
0 – Introducción
01 - Presentación
3
0 – Introducción
02 – Tabla de Contenidos
Capítulo 0 Introducción.
Capítulo I Fundamentos de Pruebas.
Capítulo II Pruebas a través del Ciclo de Vida del Software.
Capítulo III Técnicas Estadísticas.
Capítulo IV Técnicas de Diseño de Pruebas.
Capítulo V Gestión de Pruebas.
Capítulo VI Herramientas de Pruebas.
4
0 – Introducción
03 – Organizaciones Internacionales
Programa de Capacitación del ISTQB
5
0 – Introducción
04 – Programa de Estudios y Evaluación
6
0 – Introducción
05 – Objetivos
7
I – Fundamentos de Pruebas de Software
Agenda
8
I – Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
9
I – Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
Vuelo 501, tuvo lugar el 4 de junio de 1996, fue la primera prueba de vuelo del sistema
desechable de lanzamiento del Ariane 5.
El software del Ariane 5 reutilizó las especificaciones del Ariane 4, pero la trayectoria
de vuelo del Ariane 5 era considerablemente distinta y superaba el rango para el cual
el código reutilizado había sido diseñado. En particular, la mayor aceleración del Ariane
5 provocó un fallo en los ordenadores de respaldo (“back up”) y navegación inercial
primarios, tras lo cual toberas de la lanzadera fueron dirigidas por datos ilegítimos. Las
pruebas previas al vuelo nunca fueron ejecutadas sobre el código reajustado bajo
condiciones de vuelo simuladas del Ariane 5, por lo tanto el error no fue descubierto
antes del lanzamiento.
Fuente: Wikipedia.com
10
I – Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
Un gran número de pacientes recibieron una dosis letal de rayos gamma debido a un
fallo de software.
El Therac-285 era una máquina para radiación terapéutica producida por la empresa
Atomic Energy of Canada Limited.
Estuvo involucrada con, al menos, seis accidentes conocidos entre 1985 y 1987, en los
cuales los pacientes fueron objeto de una sobredosis masiva de radiación, que en
algunos casos fueron del orden de centenas de “gray”. Al menos cinco pacientes
murieron por la sobredosis. Estos accidentes destacan los riesgos del control de
software de sistemas críticos en términos de seguridad (“Safety Critical Systems”).
Fuente: Wikipedia.com
11
I – Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
Error Humano
Un defecto es introducido en el código de software, en los datos o en los
parámetros de configuración.
Causas del error humano
Plazos, demandas excesivas debidas a la complejidad, distracciones.
Condiciones Ambientales
Cambios en las condiciones ambientales.
Causas de condiciones ambientales negativas/adversas.
Radiación, magnetismo, campos electromagnéticos, polución, manchas
solares, fallo de disco duros, fluctuaciones en el suministro de energía
solar.
12
I – Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
Defecto (“Defect”)
Desperfecto en un componente o sistema que pueda ser la causa por la cual el
sistema o componente no logre llevar a cabo su función específica, por ejemplo;
sentencia o definición de datos incorrectas.
Fallo (“Failure”)
Manifestación física o funcional de un defecto. Si un defecto es encontrado
durante la ejecución de una aplicación puede producir un fallo.
Desviación de un componente o sistema respecto de la prestación, el servicio o
resultado esperados. (Fenton).
13
I – Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
Satisfacer Compromisos
La ejecución de pruebas puede ser un requisito obligatorio por parte del cliente
o debido a normas legales así como el cumplimiento de estándares propios de
la industria específica.
14
I – Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
15
I – Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
Calidad en el Software
16
I – Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
Calidad en el Software
Actividades analíticas con el objeto de detectar defectos, por ejemplo a través de pruebas
conducentes a la corrección de defectos y prevención de fallos, incrementando así la calidad
del software.
17
I – Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
Guías
Consigna
Estándares
Organización
Lenguajes
Listas / Plantillas
•Prevenir defectos.
Entorno de Desarrollo, Integrado (IDE)
18
I – Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
Caja Blanca
19
I – Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
Calidad Software – Atributos funcionales de Calidad
Funcionalidad significa:
1. Correctitud: La funcionalidad satisface los atributos/capacidades requeridos.
2. Completitud: La funcionalidad satisface todos los requisitos.
20
I– Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
Calidad Software – Atributos no funcionales de Calidad
Fiabilidad:
Madurez, tolerancia a defectos, recuperación tras fallos.
Características: Bajo ciertas condiciones el software mantiene su capacidad
por un tiempo determinado.
Fiabilidad= Calidad/tiempo
Usabilidad:
Facilidad para ser utilizado, aprendido, comprendido. Atractivo
Características: intuitivo, fácil de usar y de aprender.
21
I– Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
Calidad Software – Atributos no funcionales de Calidad
Eficiencia:
Funcionalidad y respuesta temporal.
Características: el sistema requiere la utilización de un mínimo de recursos para
ejecutar una tarea determinada.
Mantenibilidad:
Verificabilidad, estabilidad, permite ser analizado.
Características: Medida del esfuerzo requerido para realizar cambios en un
sistema.
Portabilidad:
Capacidad del software de ser transferido a un nuevo entorno
Características: Fácil de instalar y desinstalar. Parametrizable.
22
I - Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
Atributos de la calidad
23
I - Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
Comprobar la funcionalidad
Generar confianza
24
I - Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
25
I - Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
Caso de prueba (“test case”), base de una prueba (“test
bases”)
Caso de prueba:
Precondiciones.
Conjunto de valores de entrada.
Conjunto de resultados esperados.
Forma en la cual se debe ejecutar el caso de prueba y verificar los resultados.
Poscondiciones esperadas.
Base de la prueba:
Conjunto de documentos que definen los requisitos de un componente o
sistema. Utilizado como el fundamento para el desarrollo de casos de prueba.
26
I - Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
27
I - Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
Pruebas y depuración (“debugging”)
Depuración
Detección- Corrección Volver a
Prueba identificación de probar
de defectos defectos (re-test)
28
I - Fundamentos de Pruebas de Software
01 – Comprendiendo el Proceso de Pruebas del Software
Resumen:
Los fallos de software pueden causar importantes perjuicios.
La calidad de software es la suma de los atributos que se refieren a la
capacidad del software de satisfacer un conjunto de requisitos dados.
El aseguramiento de la calidad constructivo se ocupa de la prevención de
defectos.
El aseguramiento de la calidad analítico se ocupa de detectar y corregir
defectos.
Los atributos de la calidad funcionales y no funcionales definen la calidad total
del sistema.
Cada prueba debe contar con un criterio para la finalización de pruebas. Al
alcanzar el criterio de finalización de pruebas finalizan las actividades del
proceso de pruebas.
Los testers buscan fallos en el sistema e informan sobre los mismos (proceso
de pruebas). Los desarrolladores buscan defectos y los corrigen (depuración).
29
I - Fundamentos de Pruebas de Software
02 – Principios del proceso de pruebas software
30
I - Fundamentos de Pruebas de Software
02 – Principios del proceso de pruebas software
31
I - Fundamentos de Pruebas de Software
02 – Principios del proceso de pruebas software
32
I - Fundamentos de Pruebas de Software
02 – Principios del proceso de pruebas software
33
I - Fundamentos de Pruebas de Software
02 – Principios del proceso de pruebas software
34
I - Fundamentos de Pruebas de Software
02 – Principios del proceso de pruebas software
35
I - Fundamentos de Pruebas de Software
02 – Principios del proceso de pruebas software
36
I - Fundamentos de Pruebas de Software
02 – Principios del proceso de pruebas software
Resumen:
37
I - Fundamentos de Pruebas de Software
03 – Proceso de pruebas básico.
38
I - Fundamentos de Pruebas de Software
03 – Proceso de pruebas básico.
Plan de pruebas
Incluye superposición y vuelta atrás
(“backtracking”).
¡El proceso de pruebas es mas que Análisis y diseño de
pruebas
la ejecución de pruebas!
Cada fase del proceso de pruebas Implementación y
ejecución de pruebas
tiene lugar de forma concurrente
con las fases del proceso de Evaluación del criterio de
salida y generación de
desarrollo software. informes
Actividades de cierre
de pruebas
39
I - Fundamentos de Pruebas de Software
03 – Proceso de pruebas básico.
40
I - Fundamentos de Pruebas de Software
03 – Proceso de pruebas básico.
41
I - Fundamentos de Pruebas de Software
03 – Proceso de pruebas básico.
Estrategia de pruebas:
(1) Descripción a alto nivel de los niveles de prueba a llevar a cabo y las
pruebas asociadas a ellos para una organización o programa (uno o mas
proyectos).
(2) De acuerdo con el enfoque global, los esfuerzos aplicados a las pruebas
se reparten entre los objetos de prueba y los diferentes objetivos de las
pruebas: la elección del método de prueba, como y cuando las actividades
asociadas a las pruebas deberán ser ejecutadas y cuando se debe detener
el proceso de pruebas (criterio de finalización).
Criterio de salida (según Gilb and Graham):
Conjunto de condiciones genéricas y especificas, acordadas con los
implicados, para permitir que un proceso sea considerado formalmente
finalizado. El propósito de los criterios de salida es evitar que una tarea se
considere finalizada habiendo partes destacadas de la misma sin
completar. Los criterios de salida son utilizados como fuente para elaborar
informes y planificar la suspensión de las pruebas.
Lo anterior debe ser realizado para cada nivel de pruebas.
42
I - Fundamentos de Pruebas de Software
03 – Proceso de pruebas básico.
44
I - Fundamentos de Pruebas de Software
03 – Proceso de pruebas básico.
Plan de pruebas (“test plan”):
Documento que describe el alcance, enfoque, recursos y planificación (temporal), de
las actividades previstas del proceso de pruebas. Este documento incluye, pero no
esta limitado a, los objetos de prueba, las características a verificar (a probar), los
recurso y un plan de contingencias.
Datos de prueba (“test data”):
Datos que existen en el sistema antes de que una prueba sea ejecutada, y que afecta
o es afectado por el componente o sistema sujeto a pruebas.
Datos de entrada (“input data”):
Variable que es leída por un componente (tanto almacenada dentro del sistema como
fuera del mismo).
Cobertura de pruebas (“test coverage”):
Grado en el cual un elemento especifico ha sido ejecutado por conjunto de pruebas,
utilizado con mayor frecuencia en pruebas de caja blanca con el objeto de determinar
la cobertura del código.
Oráculo de pruebas (“test oracle”):
Fuente que permite determinar los resultados esperados de un software sujeto a
pruebas: comparativas (benchmarks)(también resultado de pruebas previas),
manuales de usuario o conocimiento especializado. No debe ser el código.
45
I - Fundamentos de Pruebas de Software
03 – Proceso de pruebas básico.
Ejecución de pruebas tareas principales
Desarrollo y asignación de un orden de
prioridad a los casos de prueba.
Creación de datos de prueba, desarrollo de
procedimientos de prueba.
Creación de secuencias de prueba
(juegos de prueba – test suites).
Creación de guiones de automatización de
pruebas, si fuera necesario.
Configuración del entorno de pruebas (“test bed”).
Ejecución de pruebas (de forma manual o automática).
Seguimiento de secuencias de pruebas establecidas en el plan de pruebas (juegos de
pruebas, orden de los casos de pruebas).
Registro y análisis de los resultados de pruebas.
Reiteración de pruebas (“retest”) / pruebas de regresión (“regression testing”).
Tras una corrección: repetición de pruebas con el objeto de asegurar que los defectos
han sido corregidos y que la corrección no ha descubierto otros o introducido
nuevos defectos.
46
I - Fundamentos de Pruebas de Software
03 – Proceso de pruebas básico.
Juego de pruebas (test suit) / secuencia de pruebas (“test sequence”):
Conjunto de casos prueba para un componente o sistema, donde la poscondición de un caso de
prueba es utilizada como precondición para el caso siguiente.
Especificación de procedimiento de pruebas (escenario de pruebas):
Documento en el cual se especifica una secuencia de acciones para la ejecución de una prueba.
También es conocido como guión de pruebas o guión de pruebas manuales.
Ejecución de pruebas:
Es el proceso de llevar a cabo una prueba aportando/generando los resultados reales.
Registro de pruebas (informe de pruebas):
Relación cronológica de los detalles relevantes relativa a la ejecución de pruebas; cuando se
desarrollaron las pruebas, que resultados fueron generados
Pruebas de regresión:
Pruebas, tras la modificación de un programa previamente probado, con el objeto de asegurar que
no se han introducido o descubierto defectos en áreas que no hubieran sido objeto de modificación
como resultado de los cambios realizados. Se realizan cuando el software o su entorno a sido
modificado.
Pruebas de confirmación, reiteración de pruebas (“retest”):
Repetición de una prueba tras la corrección de un defecto con el objeto de confirmar que el defecto
ha sido eliminado con éxito.
47
I - Fundamentos de Pruebas de Software
03 – Proceso de pruebas básico.
48
I - Fundamentos de Pruebas de Software
03 – Proceso de pruebas básico.
Actividades de cierre de pruebas – tareas principales
Recopilar datos de las actividades del proceso de
pruebas finalizadas con el objeto de consolidar la
experiencia, utensilios de pruebas, hechos
y resultados.
Cierre de informes de incidencias o generación de
solicitudes de cambio para cualquier punto que
permaneciera abierto.
Comprobar que entregables planificados han sido
entregados y probados.
Documentar la aceptación del sistema.
Finalizar y archivar los utensilios de pruebas, el entorno de pruebas y la
infraestructura de pruebas para un uso posterior, transferencia al entorno de
operaciones.
Analizar las lecciones aprendidas para futuros proyectos.
49
I - Fundamentos de Pruebas de Software
03 – Proceso de pruebas básico.
Resumen:
50
I - Fundamentos de Pruebas de Software
04 – Psicología en el proceso de pruebas
Roles y responsabilidades
Rol: Desarrollador Rol: Tester
- Implementa requisitos - Planifica actividades de pruebas
- Desarrolla estructuras - Diseña casos de prueba
- Desarrolla el software - Su única preocupación es encontrar
- Crea un producto defectos
- encontrar errores producidos por un
desarrollador es su éxito
Percepción
¡la actividad del desarrollador es ¡la actividad del tester es destructiva!
Constructiva!
¡Error!
¡Las pruebas también constituyen una actividad constructiva,
su propósito es la eliminación de defectos en un producto!
51
I - Fundamentos de Pruebas de Software
04 – Psicología en el proceso de pruebas
52
I - Fundamentos de Pruebas de Software
04 – Psicología en el proceso de pruebas
53
I - Fundamentos de Pruebas de Software
04 – Psicología en el proceso de pruebas
54
I - Fundamentos de Pruebas de Software
04 – Psicología en el proceso de pruebas
Pruebas independientes
55
I - Fundamentos de Pruebas de Software
04 – Psicología en el proceso de pruebas
56
I - Fundamentos de Pruebas de Software
04 – Psicología en el proceso de pruebas
Equipos de desarrollado
Los desarrolladores hablan el mismo lenguaje.
Los costos de formación/información en lo relativo a
objetos de prueba se mantienen a un nivel moderado, especialmente
cuando los equipos intercambian objetos de prueba.
Peligro de generación de conflictos entre equipos de desarrollo.
Un desarrollador que busca y encuentra un defecto no será el mejor amigo del
autor del objeto de prueba analizado.
Mezcla de actividades de desarrollo y pruebas.
Cambios frecuentes en la forma de pensar.
Dificultad en el control del presupuesto del proyecto.
57
I - Fundamentos de Pruebas de Software
04 – Psicología en el proceso de pruebas
Equipos de pruebas
La creación de equipos de pruebas que den
servicio a diferentes áreas del proyecto mejora la calidad de
las pruebas.
Es importante que los equipos de pruebas de diferentes
áreas del proyecto trabajen de forma independiente
58
I - Fundamentos de Pruebas de Software
04 – Psicología en el proceso de pruebas
60
I - Fundamentos de Pruebas de Software
04 – Psicología en el proceso de pruebas
Dificultades /1
Incapacidad de comprensión mutua.
Los desarrolladores deberían contar con un conocimiento básico de
pruebas.
Los testers deberían contar con un conocimiento básico de desarrollo
software.
Especialmente en situaciones de tensión, la detección de
errores cometidos por alguien frecuentemente conduce a
conflictos.
La forma de documentar los defectos y la forma en la cual el defecto es
descrito determinara como se desarrollaran los hechos.
Las personas no deberían ser criticadas, los defectos deben ser descritos
en términos objetivos.
La descripción de los defectos debería ayudar al desarrollador a encontrar
el error.
Los objetivos comunes siempre deben ser la cuestión principal.
61
I - Fundamentos de Pruebas de Software
04 – Psicología en el proceso de pruebas
Dificultades /2
La comunicación entre testers y desarrolladores es
insuficiente o inexistente. Este hecho puede hacer imposible el
trabajo conjunto.
Los testers son vistos únicamente como “portadores de malas noticias”.
Mejora: intente ponerse en el rol de la otra persona. ¿ha llegado mi
mensaje? ¿la respuesta es suficiente?
Un proceso de pruebas sólido requiere la distancia apropiada
con respecto al objeto de prueba.
Se adquiere un punto de vista independiente e imparcial a través
de la distancia con respecto al desarrollo.
Sin embargo, una distancia muy grande con respecto al objeto de
prueba y el equipo de desarrollo conducirá a mayores esfuerzos y
tiempo para las pruebas.
62
I - Fundamentos de Pruebas de Software
04 – Psicología en el proceso de pruebas
Resumen
Las personas cometen errores, toda implementación tiene defectos.
La naturaleza humana dificulta la posibilidad de hacer frente a los
defectos propios (ceguera a los errores).
Desarrollador y tester implican el encuentro de dos mundos distintos.
El desarrollador constructivo – algo que no estaba ahí previamente es
creado.
El proceso de pruebas resulta destructivo a primera vista - ¡se detectarán
defectos!
Juntos, el desarrollo y las pruebas son constructivas en su objetivo de
obtener un producto software con la menor cantidad de defectos posible.
Las pruebas independientes aumenta la calidad del proceso de
pruebas.
En lugar de equipos de desarrolladores utilice equipos de prueba (testers),
o equipos de prueba con testers externos.
63
II – Pruebas a lo largo del ciclo de vida software
Agenda
Capitulo II – Pruebas a lo largo del ciclo de vida software
64
II – Pruebas a lo largo del ciclo de vida software
01 – Modelos de desarrollo software
Especificación Prueba de
de componentes componente
Programación
65
II – Pruebas a lo largo del ciclo de vida software
01 – Modelos de desarrollo software
66
II – Pruebas a lo largo del ciclo de vida software
01 – Modelos de desarrollo software
Programación
67
II – Pruebas a lo largo del ciclo de vida software
01 – Modelos de desarrollo software
Validación
Comprobación de la idoneidad para el uso esperado (definición según ISO
9000).
Cuestión clave: ¿Hemos construido el sistema software correcto?
¿El objetivo era sumar 1 mas 1 o deberíamos haber restado?
68
II – Pruebas a lo largo del ciclo de vida software
01 – Modelos de desarrollo software
Especificación de Prueba de
componentes componente
Verificación
Programación
Desarrollo e
69 integración
II – Pruebas a lo largo del ciclo de vida software
01 – Modelos de desarrollo software
Definición de Pruebas de
requisitos aceptación
Especificación de Prueba de
componentes componente
Verificación
Desarrollo e
Programación integración
Validación
70
II – Pruebas a lo largo del ciclo de vida software
01 – Modelos de desarrollo software
Debugging and
Func. system Planning Execution of
error correction
design systems test systems test
Planning Execution of
Component Debugging and
component component
specification error correction
test test
71 Programming
II – Pruebas a lo largo del ciclo de vida software
01 – Modelos de desarrollo software
72
II – Pruebas a lo largo del ciclo de vida software
01 – Modelos de desarrollo software
73
II – Pruebas a lo largo del ciclo de vida Software
01 – Modelos de Desarrollo de Software
74
II – Pruebas a lo largo del ciclo de vida Software
01 – Modelos de Desarrollo de Software
Resumen
75
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
Definición
Pruebas de componente
Pruebas de cada componente tras su realización
Pruebas de
Dadas las convenciones de cada lenguaje de Aceptación
programación para la asignación de nombres a sus
respectivas componentes, se podrá hacer referencia a un
Pruebas de
componente como: Sistema
Pruebas de módulo (“module test”) (por ejemplo en C)
Prueba de clase (por ejemplo en Java o C++)
Pruebas de
Prueba de unidad (por ejemplo en Pascal) Integración
76
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
77
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
78
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
Pruebas de Componente: Arnés de Pruebas
La ejecución de pruebas de componente requiere, frecuentemente, de
“drivers” y “stubs”.
Un “driver” procesa la interfaz de un componente.
Los drivers simulan datos de entrada, registran datos de salida y
Stub
79
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
desarrollo.
Se podrá aplicar al diseño de casos de prueba el conocimiento de la
funcionalidad, estructura de componentes y variables.
Las pruebas funcionales serán pertinentes (con frecuencia).
Adicionalmente, el uso de depuradores (“debuggers”) y otras
herramientas de desarrollo permitirán acceso directo a las variables del
programa.
80
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
81
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
Definición
Programación
82
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
83
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
84
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
85
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
erróneas.
El componente involucrado interpreta los datos de entrada de una
manera distinta.
Los datos son transferidos en un momento incorrecto: antes de
86
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
87
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
88
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
Pruebas de Integración: Estrategias /3
89
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
90
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
Definición
Pruebas de Sistema
Pruebas del sistema de software integrado con el objeto de comprobar la
conformidad con los requisitos especificados.
La calidad de software es observada desde el punto de vista del usuario.
Pruebas de
Aceptación
Las pruebas de sistema se refieren a (según ISO 9126):
Requisitos Funcionales.
Pruebas de
Funcionalidad. Sistema
Requisitos no funcionales.
Fiabilidad. Pruebas de
Usabilidad. Integración
Eficiencia.
Modificabilidad. Pruebas de
Componentes
Portabilidad.
Programación
91
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
92
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
93
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
94
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
Pruebas de Sistema: Requisitos No Funcionales
La conformidad con requisitos no funcionales es difícil de lograr:
Con frecuencia la definición de estos requisitos es muy vaga (por ejemplo fácil
de operar, interfaz de usuario bien estructurada, etc.).
Los requisitos no funcionales no son establecidos de forma explícita, son una
parte implícita de la descripción del sistema. Sin embargo se espera que sean
satisfechos
La cuantificación de requisitos no funcionales es difícil debido al hecho de que
se dispone de pocas o ninguna métrica objetiva para su medición: las personas
exponen su punto de vista subjetivo (por ejemplo que sea bonito, muy seguro,
fácil de aprender, etc.).
Ejemplo: Prueba / inspección de documentación.
¿Está actualizada la documentación de programas con la versión actual del
sistema?¿La documentación es completa, concisa y fácil de entender?
Ejemplo: Prueba de mantenibilidad
¿Los programadores han cumplido con los estándares de codificación
respectivos?
¿El sistema ha sido diseñado de una forma estructurada y modular?
95
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
Las pruebas de sistema funcionales confirman que los requisitos para un uso
específico previsto han sido satisfechos (validación).
Con frecuencia, los atributos de calidad no funcionales son una parte implícita
de los requisitos, esto hace difícil validarlos.
96
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
Definición
Pruebas de Aceptación.
Las pruebas de aceptación son pruebas formales llevadas a
cabo con el objeto de verificar la conformidad del sistema con Pruebas de
los requisitos. El objetivo es aportar justificación a la confianza Aceptación
en el sistema para que pueda ser aceptado por el cliente (ver
IEEE610).
Pruebas de
Es habitual que sean las primeras pruebas en las cuales se vea Sistema
involucrado el cliente (es recomendable involucrar al cliente
durante el mismo proceso de desarrollo, por ejemplo dar
soporte al desarrollo de prototipos). Pruebas de
El grado de implicación de los clientes puede variar en función Integración
del tipo de programa (software individual o un producto de
software comercial (COTS*)).
Pruebas de
Normalmente, el software individual es probado directamente
Componentes
por el cliente.
Un producto de software comercial puede ser probado por un
grupo seleccionado (particular) de clientes.
Programación
*COTS = Commercial off the shelf
97
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
98
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
99
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
Pruebas de Aceptación: Pruebas Alpha y Pruebas Beta
100
II – Pruebas a lo largo del ciclo de vida Software
02 – Niveles en el Proceso de Pruebas
Las pruebas de aceptación son las pruebas de sistema por parte del cliente.
Las pruebas alpha y beta son pruebas ejecutadas por clientes reales o
potenciales, en las dependencias del desarrollador (alpha) o en las
dependencias del cliente (beta).
101
II – Pruebas a lo largo del ciclo de vida Software
03 – Tipos de Pruebas: Objetivos del Proceso de Pruebas
Tipos de pruebas y niveles de pruebas
Niveles en el proceso de pruebas.
En la sección previa se han explicado los distintos niveles de pruebas,
es decir, pruebas de componente, pruebas de integración, etc.
¡En cada nivel de prueba los objetivos de las pruebas tienen un foco
diferente!
Por lo tanto, se aplican distintos tipos de pruebas durante los distintos
niveles de pruebas.
Tipos de pruebas
Pruebas funcionales (Objetivo: probar la función).
Pruebas no funcionales (Objetivo: probar las características del
producto).
Pruebas estructurales (Objetivo: probar la estructura/arquitectura
software).
Pruebas de confirmación/regresión (Objetivo: probar después de
cambios.)
102
II – Pruebas a lo largo del ciclo de vida Software
03 – Tipos de Pruebas: Objetivos del Proceso de Pruebas
Pruebas Funcionales
Objetivo: la función del objeto de prueba.
La funcionalidad puede ser vinculada a los datos de entrada y salida de un
objeto de prueba.
Los métodos de caja negra (“black box”) se utilizan en el diseño de caso de
prueba relevantes.
Las pruebas se desarrollan teniendo en cuenta los requisitos funcionales
( establecidos en las especificaciones, conceptos, casos de estudio, reglas de
negocio o documentos relacionados).
Ámbito de Aplicación
Las pruebas funcionales se pueden llevar a cabo en todos los niveles de
prueba.
Ejecución.
El objeto de prueba es ejecutado utilizando combinaciones de datos de prueba
derivados/generados a partir de los casos de prueba.
Los resultados de la ejecución de la prueba son comparados con los resultados
esperados.
103
II – Pruebas a lo largo del ciclo de vida Software
03 – Tipos de Pruebas: Objetivos del Proceso de Pruebas
Pruebas No Funcionales
Ámbito de Aplicación
Las pruebas no funcionales se pueden llevar a cabo en todos los niveles
Pruebas no funcionales típicas:
Pruebas de carga (“load testing”) / Pruebas de rendimiento (“Performance Testing”) / Pruebas
de volumen (“Volumen Testing”) / Pruebas de Estrés (“Stress Testing”).
Pruebas de las características de seguridad para el software (“Testing of Security Features”) /
Pruebas de las características de seguridad de software (“Testing of Safety Features”)
Pruebas de estabilidad y robustez (“Stability and Robustness Testing”) / Pruebas de
Compatibilidad (“Compatibility Testing”).
Pruebas de usabilidad (“Usability Testing”) / Pruebas de Configuración (“Configuration Testing”).
Ejecución
La conformidad con los requisitos no funcionales se miden utilizando requisitos
funcionales (seleccionados).
104
II – Pruebas a lo largo del ciclo de vida Software
03 – Tipos de Pruebas: Objetivos del Proceso de Pruebas
Pruebas No Funcionales (Pruebas de Sistema)
Prueba de Carga (“Load Test”)
Sistema bajo carga (carga mínima, más usuarios/transacciones).
Prueba de Rendimiento (“Performance Test”)
Rapidez con la cual un sistema ejecuta una determinada función.
Prueba de Volumen (“Volume Test”)
Procesamiento de grandes cantidades de datos / ficheros.
Prueba de estrés (“stress test”)
Reacción a la sobrecarga / recuperación tras el retorno a una carga normal.
Prueba de estabilidad (“stability test”)
Rendimiento en “modo de operación continua”
Prueba de Robustez (“test for robustness”)
Reacción a entradas erróneas o datos no especificados.
Reacción a fallos hardware / recuperación ante situaciones de desastre.
105
II – Pruebas a lo largo del ciclo de vida Software
03 – Tipos de Pruebas: Objetivos del Proceso de Pruebas
Pruebas No Funcionales
Pruebas de Seguridad para el Software (de datos) (“test for (data)
security”)
Protección contra accesos no autorizados.
Protección contra el robo y daño de datos.
Pruebas de compatibilidad (conversión de datos) (“compatibility test (data
conversion)”).
Cumplimiento de normas y reglamentos (internos / externos).
Reacción a distintos entornos (H/W, O/S, etc.)
Pruebas de usabilidad (“test for usability”)
Estructurado, comprensible, fácil de aprender para el usuario.
Otros aspectos no funcionales de la calidad:
Portabilidad (“portability”): capacidad de reemplazar (“replaceability”), capacidad
de ser instalado (“installability”), conformidad/cumplimiento
(“conformance/compliance”), adaptabilidad (“adaptability”).
Mantenibilidad (“maintainability”): verificabilidad (“verifiability”), estabilidad
(“stability”), analizabilidad (“analyzability”); capacidad de ser modificado
(“changeability”).
Fiabilidad (“Reliability”): madurez (“matury”), robustez (“robustness”), capacidad
de ser recuperado (“recoverability”).
106
II – Pruebas a lo largo del ciclo de vida Software
03 – Tipos de Pruebas: Objetivos del Proceso de Pruebas
Pruebas Estructurales
Objetivo: cobertura
Análisis de la estructura de un objeto de prueba (enfoque: caja blanca).
La finalidad de las pruebas es medir el grado en el cual la estrutura del objeto
de prueba ha sido cubierto por los casos de prueba.
Ámbito de aplicación.
Las pruebas estructurales son posibles en todos los niveles de pruebas, se
realizan de forma conjunta a las pruebas de componente y de integración
mediante el uso de herramientas.
El diseño de pruebas estructurales se finaliza tras haber sido diseñados las
pruebas funcionales, con el propósito de obtener un alto grado de cobertura.
Ejecución.
Se probará la estructura interna de un objeto de prueba (por ejemplo el control
de flujo en el interior de un componente, el flujo a través de la estructura de un
menú).
Objetivo: todos los elementos estructurales identificados deberán estar
cubiertos por casos de prueba.
107
II – Pruebas a lo largo del ciclo de vida Software
03 – Tipos de Pruebas: Objetivos del Proceso de Pruebas
Pruebas de confirmación/regresión/1
Objetivo: objeto de pruebas después de cambios.
Después de que un objeto de pruebas o el entorno de sus sistema ha sido
objeto de modificación todos los resultados de pruebas resultan inválidos, por lo
que las pruebas deben ser repetidas. Repetir una prueba de funcionalidad que
ha sido verificada previamente se denomina prueba de regresión.
Es necesario volver a probar (“retest”) zonas adyacentes debido a efectos
colaterales no deseados de una funcionalidad extendida o nueva.
El alcance de las pruebas de regresión depende del riesgo que la nueva
funcionalidad implementada (extensión o corrección de errores) impone al
sistema.
Ámbito de aplicación.
Las pruebas de confirmación/regresión pueden ser realizadas en todos los
niveles.
Las pruebas típicas tras una modificación son las siguientes:
Pruebas de confirmación (“retest”) (= pruebas después de la corrección de
errores).
Pruebas de regresión (= pruebas para descubrir nuevos defectos
108
II – Pruebas a lo largo del ciclo de vida Software
03 – Tipos de Pruebas: Objetivos del Proceso de Pruebas
Pruebas de confirmación/regresión/2
Ejecución
Básicamente la ejecución tiene lugar de la mima forma en la cual se han
ejecutado las pruebas en iteraciones previas.
En la mayoría de los casos, una prueba de regresión completa no es viable
dado sus altos costos y duración.
Un alto grado de modularidad en el software permite reducir las pruebas de
regresión.
Criterios para la selección de casos de prueba de regresión:
Casos de prueba de prioridad alta.
especiales
Probar solamente la configuración utilizada con mayor frecuencia.
pruebas.
Si durante fases tempranas del proyecto resulta evidente que ciertas pruebas
son adecuadas para las pruebas de regresión, se deberá considerar la
automatización de estas pruebas.
109
II – Pruebas a lo largo del ciclo de vida Software
03 – Tipos de Pruebas: Objetivos del Proceso de Pruebas
Resumen
En niveles de pruebas distintos se utilizan tipos de pruebas distintos.
Los tipos de pruebas son: funcionales, no funcionales,
estructurales y pruebas relacionadas a cambios.
Las pruebas funcionales comprueban el comportamiento entrada /
salida de un objeto de pruebas.
Las pruebas no funcionales comprueban las características de un
producto.
Las pruebas no funcionales incluyen, pero no están limitadas a,
pruebas de carga, pruebas de estrés, pruebas de rendimiento,
pruebas de robustez.
Las pruebas estructurales habituales son pruebas que comprueban
el flujo de control y datos midiendo la cobertura en el objeto de prueba.
Pruebas importantes después de un cambio: pruebas de
confirmación (“confirmation tests or retests”) y pruebas de
regresión (“regression tests”).
110
II – Pruebas a lo largo del ciclo de vida Software
04 – Pruebas de Mantenimiento
111
II – Pruebas a lo largo del ciclo de vida Software
04 – Pruebas de Mantenimiento
Nota:
Las pruebas de regresión son necesarias y realizadas ya antes de que
tenga lugar la aceptación del producto.
Las pruebas de regresión se realizan siempre que el software o su
entorno haya sido modificados.
112
II – Pruebas a lo largo del ciclo de vida Software
04 – Pruebas de Mantenimiento
113
III – Técnicas estáticas
00 – Agenda
114
III – Técnicas estáticas
01 – Revisiones y el proceso de pruebas
Enfoque básico
Las técnicas estáticas de pruebas comprenden varios métodos que no ejecutan el
componente o sistema objeto de la prueba.
Las pruebas estáticas incluyen:
• Revisiones (“reviews”) (actividad manual)
• Análisis Estático (“static analysis”) (actividad basada en herramientas).
Las técnicas estáticas complementan las métodos dinámicos.
• Las pruebas estáticas detectan defectos en lugar de fallos.
• Los conceptos también son analizados, no sólo el código ejecutable.
• Los defectos / desviaciones son detectados en una fase temprana, antes de que
sean inplementadas en el código.
Documentos de alta calidad conducen a productos de alta calidad.
• Incluso si una espedificación revisada no contiene ningún defecto, la interpretación
de la especificación y creación del diseño pueden ser defectuosas.
115
III – Técnicas estáticas
01 – Revisiones y el proceso de pruebas
116
III – Técnicas estáticas
01 – Revisiones y el proceso de pruebas
117
III – Técnicas estáticas
01 – Revisiones y el proceso de pruebas
118
III – Técnicas estáticas
01 – Revisiones y el proceso de pruebas
Roles y responsabilidades
119
III – Técnicas estáticas
01 – Revisiones y el proceso de pruebas
120
III – Técnicas estáticas
01 – Revisiones y el proceso de pruebas
121
III – Técnicas estáticas
01 – Revisiones y el proceso de pruebas
122
III – Técnicas estáticas
01 – Revisiones y el proceso de pruebas
123
III – Técnicas estáticas
01 – Revisiones y el proceso de pruebas
124
III – Técnicas estáticas
01 – Revisiones y el proceso de pruebas
• La meta del examen es un aspecto técnico del objeto de revisión: es apto para
el uso?.
• Son necesarios expertos, preferiblemente externos.
• La reunión puede tener lugar sin la presencia del autor.
• La revisión se realiza utilizando especifiaciones técnicas y otros documentos.
• El panel de expertos presenta sus recomendaciones con carácter unánime.
• Son necesarios preparativos intensivos.
125
III – Técnicas estáticas
01 – Revisiones y el proceso de pruebas
126
III – Técnicas estáticas
01 – Revisiones y el proceso de pruebas
127
III – Técnicas estáticas
01 – Revisiones y el proceso de pruebas
128
III – Técnicas estáticas
01 – Revisiones y el proceso de pruebas
Resumen
129
III – Técnicas estáticas
02 – Análisis estático mediante herramientas.
Terminología y definiciones
130
III – Técnicas estáticas
02 – Análisis estático mediante herramientas.
Aspectos generales /1
131
III – Técnicas estáticas
02 – Análisis estático mediante herramientas.
Aspectos generales /2
• Compilador
• Detecta errores sintácticos en el código fuente de un programa
• Crea datos de referencia del programa (por ejemplo lista de referencia cruzada, llamada
jerárquica, tabla de símbolos),
• Comprueba la consistencia entre los tipos de variables.
• Detecta variables no declaradas y código inaccesible (código muerto)
132
III – Técnicas estáticas
02 – Análisis estático mediante herramientas.
Propósito
•Detectar defectos causados por un desarrollo anómalo del código
(ramas muertas, código muerto etc)
Método
• La estructra del código se representa como un diagrama de control
de flujo.
• Grafo dirigido
• Los nodos representan sentencias o secuencias de sentencias.
• Las aristas representan la transferencia del flujo de control,
como decisiones y bucles.
• Construcción mediante herramientas.
133
III – Técnicas estáticas
02 – Análisis estático mediante herramientas.
Resultados
134
III – Técnicas estáticas
02 – Análisis estático mediante herramientas.
Propósito
• Detección de anomalías en el flujo de datos con la asistencia de los diagramas de
control de flujo y conjeturas racionales respecto de las secuencias del flujo de datos.
Beneficios
• Detección fiable de anomalías que den los flujos de datos.
• Se puede detectar fácilmente la localización exacta de defectos.
• Es un buen complemento para otros métodos de pruebas.
Desventajas
• Limitado a un rango reducido de tipos de defectos.
135
III – Técnicas estáticas
02 – Análisis estático mediante herramientas.
136
III – Técnicas estáticas
02 – Análisis estático mediante herramientas.
Para este ejemplo, los valores El analista del flujo de datos Para este ejemplo, los valoes
de dos variables son muestra> de dos variables son
intercambiados a través de una intercambiados a través de una
variable auxiliar, si no están - La variable Help se encuentra variable auxiliar, si no están
ordenados por valor. indefinida (undelined) cuando es ordenados por valor.
referenciada (“referenced”), anomalía
Void MinMax (int Min, int Max) – ur. Void MinMax (int Min, int Max)
{ {
int Help; - La variable Max se define int Help;
if (Min > Max) (“defined”) dos veces sin ninguna if (Min > Max)
{ referencia entre ambas definiciones: {
Max = Help; anomalía – dd Help = Max;
Max = Min; - El valor definido (“defined”) para la Max = Min;
variable Help se vuelve indefinido
Help = Min; (undefined) final del programa sin Min = Help;
referencia: anomalía - du.
} }
End MinMax End MinMax
137
III – Técnicas estáticas
02 – Análisis estático mediante herramientas.
138
III – Técnicas estáticas
02 – Análisis estático mediante herramientas.
139
III – Técnicas estáticas
02 – Análisis estático mediante herramientas.
140
III – Técnicas estáticas
02 – Análisis estático mediante herramientas.
141
III – Técnicas estáticas
02 – Análisis estático mediante herramientas.
Resumen
Análisis estático
Con el uso de herrameintas para la realización del análisis estático (compiladores,
analizadores) el código del programa puede ser objeto de inspección sin ser ejecutado.
Con el uso de herramientas se puede realizar el análisis estático de un programa con
un esfuerzo menor que el necesario para una inspección
142
IV – Técnicas de diseño de pruebas
00 – Agenda
143
IV – Técnicas de diseño de pruebas
01 – Diseño de casos de prueba
Caso de
prueba 1
Caso de
prueba 1
Caso de
prueba 4
Objeto de Definición de
pruebas y requisitos de
requisitos sobre las pruebas y Caso de
el objeto de criterios de prueba 1
Caso de
pruebas pruebas prueba 1
Caso de Caso de
prueba 1 prueba 1
Caso de Caso de
prueba 1 prueba 1
Caso de Caso de
prueba 1 prueba 1
Los casos de prueba pueden ser creados formal o informalmente, dependiendo de las
características del proyecto y la madurez del proceso de uso
144
IV – Técnicas de diseño de pruebas
01 – Diseño de casos de prueba
Trazabilidad
Las pruebas deben ser trazables: qué casos de prueba han sido incluidos en el
catálogo de pruebas basados en qué requisitos?.
Las consecuencias sobre las pruebas de los cambios a realizar en los requisitos
pueden ser identificados directamente.
La trazabilidad también ayuda a determinar la cobertura de requisitos.
Caso de
prueba 1
Caso de
prueba 1
Caso de
prueba 4
Objeto de Definición de
pruebas y requisitos de
requisitos sobre las pruebas y Caso de
el objeto de criterios de prueba 1
Caso de
pruebas pruebas prueba 1
Caso de Caso de
prueba 1 prueba 1
Caso de Caso de
prueba 1 prueba 1
Caso de Caso de
prueba 1 prueba 1
145
IV – Técnicas de diseño de pruebas
01 – Diseño de casos de prueba
Definiciones
146
IV – Técnicas de diseño de pruebas
01 – Diseño de casos de prueba
Descripción de un caso de prueba según el estándar IEEE 829
Valores de entrada (“Input values”): descripción de los datos de entrada de un objeto de
pruebas.
Precondiciones (“Preconditions”): situación previa a la ejecución de pruebas o
características de un objeto de pruebas antes de llevar a la practica (ejecución) un caso de
prueba.
Resultados Esperados (“Expected Results”): datos de salida que se espera que produzca
un objeto de pruebas (resultado esperado - “expected result”)
Poscondiciones (“Post Conditions”): características de un objeto de pruebas tras la
ejecución de pruebas, descripción de su situación tras la ejecución de las pruebas.
Dependencias (“Dependencies”): orden de ejecución de casos de prueba, razón de las
dependencias.
Identificador Distinguible (“Distinct Identification”): Identificador o código con el objeto de
vincular, por ejemplo, un informe de errores al caso de prueba en el cual ha sido detectado.
Requisitos (“Requirements”): características del objeto de pruebas que el caso de prueba
debe evaluar.
147
IV – Técnicas de diseño de pruebas
01 – Diseño de casos de prueba
Los casos de prueba se pueden cambiar en los (“test suites”) y escenarios de pruebas.
Los test suites pueden ser codificados y ejecutados de forma automática con el uso de
herramientas adecuadas.
El plan de pruebas (“test plan”) establece la secuencia de las pruebas planificadas, quién
debe ejecuarlas y cuándo. Las restricciones a considerar son las prioridades, la
disponibilidad de recursos, la infraestructura de pruebas, etc.
148
IV – Técnicas de diseño de pruebas
01 – Diseño de casos de prueba
Resumen
Los casos de prueba y los (“test suites”) son obtenidos a partir de los requisitos o
características de los objetos de pruebas.
149
IV – Técnicas de diseño de pruebas
02 – Categorías de las técnicas de diseño de pruebas
Cobertura de sentencia
Cobertura de rama
Cobertura de condición
Cobertura de camino - Cada grupo tiene sus propios
métodos para diseñar casos de
prueba.
Revisiones / “Walkthroughs”
Estático
150
IV – Técnicas de diseño de pruebas
02 – Categorías de las técnicas de diseño de pruebas
Técnica: caja negra (“Black box”)
El tester observa el objeto de prueba como una caja negra.
• La estructura interna del objeto de prueba es irrelevante o desconocida.
Los casos de prueba se obtienen a partir del análisis de la especificación (funcional
y no funcional) de un componente o sistema.
• Prueba del comportamiento entrada / salida (input / output).
La funcionalidad es el foco de tención!
• La técnica de caja negra también se denomina prueba funcional o prueba
orientada a la especificación.
Diseño de caso de pruebas
Objeto de prueba
Casos de prueba basados en
especificaciones
Estructura interna del
programa irrelevante Caja negra
Prueba de todas las
combinaciones entrada /
salida de datos
seleccionadas
respectivamente
151
IV – Técnicas de diseño de pruebas
02 – Categorías de las técnicas de diseño de pruebas
Los casos de prueba son seleccionados en base a la estructura interna del programa
/ código
A lo largo de las pruebas es posible que se interfiera con la ejecución de las pruebas.
¡La estructura del programa es el foco de atención!
La técnica de caja blanca también es conocida como prueba estructural o pruebas
basadas en el flujo de control.
153
IV – Técnicas de diseño de pruebas
02 – Categorías de las técnicas de diseño de pruebas
Resumen.
Si la funcionalidad especificada es el objetivo de las pruebas, los métodos utilizados se denominan métodos basados en la especificación o métodos de caja negra
(“black box”).
Si la estructura interna de un objeto es investigada, los métodos utilizados se denominan métodos basados en la estructura o métodos de caja blanca (“white box”).
Los métodos basados en la experiencia utilizan el conocimiento y la habilidad del personal involucrado en el diseño de casos de prueba.
154
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Visión general
155
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
General
Las pruebas funcionales están dirigidas a verificar la correctitud y la completitud de una función.
¿Están disponibles en el módulo todas las funciones especificadas?
¿Las funciones ejecutadas presentan resultados correctos?
La ejecución de casos de pruebas deberían de ser ejecutados con una baja redundancia, pero sin embargo con carácter integral.
Probar lo menos posible, pero.
Probar tanto como sea necesario.
156
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Participación de equivalencia o clase de equivalencia (CE)
La participación en clases de equivalencia es lo que la mayoría de los tester hacen en forma intuitiva:
dividen los posibles valores en clases, mediante lo cual observan.
Los valores de entrada (“input values”) de un programa (uso habitual del método CE).
Los valores de salida (“output values”) de un programa (uso poco habitual del método CE).
El rango de valores definido se agrupa en clases de equivalencia para las cuales se aplican las siguientes
reglas:
Todos los valores para los cuales se espera que el programa tenga un comportamiento común
se agrupan en una clase de equivalencia (CE).
Las clases de equivalencia pueden no superponerse y pueden no presentar ningún salto
(discontinuidad).
Las clases de equivalencia pueden consistir en un rango de valores (por ejemplo, 0<x<10) o en un
valor aislado (por ejemplo, x= Verdadero).
157
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Participación de equivalencia o clase de equivalencia (CE)
Las pruebas se ejecutan utilizando un único representante de cada CE.
Para todo otro valor perteneciente a la CE se espera el mismo comportamiento que para el valor seleccionado.
Las clases de equivalencia se escogen para entradas (“inpunts”) válidas y no válidas.
Si el valor x se define como 0<x<10 entonces, inicialmente, se pueden identificar tres clases de equivalencia:
1. x<=0 (valores de entrada no válidos).
2. 0<x<10 (valores de entrada válidos).
3. X>=10 (valores de entrada no válidos).
Se pueden definir CE adicionales, conteniendo, pero no limitadas a:
Entradas no numéricas.
Números muy grandes o muy pequeños.
Formatos numéricos no admitidos.
158
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Participación en clases de equivalencia: método/1
Todas las variables de entradas (“input variables”) del objeto de prueba son identificados, por ejemplo:
Campos de una interfaz Gráfica de Usuario (“GUI”).
Parámetros de una función.
159
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Participación en clases de equivalencia: método/2
Ejemplo 1:
Un programa espera el valor de un peso expresado en Kg (todos los valores serán redondeados internamente).
Todos los valores >=0 son válidos y todos los valores negativos o no numéricos (“fred”) son no válidos.
Clase de equivalencia válida x>=0
Clase de equivalencia no válida x<0
Clase de equivalencia no válida x= no numérico.
Aparte de los CE no válidos establecidos previamente, habrá otra clases inválidas que serán ignoradas en estos ejemplos:
x>0, pero mayor que el número más grande que el sistema involucrado puede aceptar.
x>0, pero menor que el menor de los números que el sistema involucrado puede aceptar.
160
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Participación en clases de equivalencia: método/3
La clase de equivalencia para cada variable (elemento) será dividida adicionalmente.
CE válida: todos los valores pertenecientes al rango de definición se combinan en una única clase de equivalencia si son tratados de forma idéntica por el objeto de prueba.
Este es el caso de todos los valores numéricos positivos y el valor cero en el ejemplo 1.
CE no válida: se distinguen dos casos que se encuentran fuera del rango de definición.
Valores con un formato correcto pero fuera del rango pueden ser combinados en una o más clases de equivalencia.
Valores expresados en un formato erróneo pero, generalmente construidos en una CE independiente.
En el ejemplo 1 resultan dos clases de equivalencia resultan en : x<0 y x es un valor numérico.
161
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Participación en clases de equivalencia: método/4
En un último paso, se identifica un representante de cada CE, así como del resultado esperado para éste.
Para el ejemplo IV/03-1 puede ser:
162
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Participación en clases de equivalencia: método / 5
Ejemplo 2:
Por parte del código de un programa trata el precio final de un artículo en base a su precio de venta
al público, un descuento en % y el precio del porte (6, 9 ó 10 euros, dependiendo del tipo de porte).
Variable Clase de Estado Representante T04 T05 T06 T07 T08 T09 T10
equivalencia
EC11: x>=0 Válido 1000,00 * * * * *
Peso EC12: x<0 No válido -1000,00 *
EC13: x valor no No válido fred *
numérico
Descuento EC21: 0%=<x=<100% Válido 10% * * * *
EC22: x<0% No válido -10% *
EC23: x>100% No válido 200% *
EC24: x valor no No válido fred *
numérico
Precio del EC31: x=6 Válido 6 * * * * *
porte
EC32: x=9 Válido 9
EC33: x=12 Válido 12
EC34: x<>{6, 9, 12} No válido 4 *
EC35: x valor no No válido fred *
165 numérico
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Participación en clases de equivalencia: método/8
Ejemplo IV/03-2:
Se obtienen 10 casos de prueba: 3 casos de prueba positivos (valores válidos) y 7 casos
de prueba negativos (valores no válidos).
Variable Estado Representante T01 T02 T03 T04 T05 T06 T07 T08 T09 T10
Válido 1000,00 * * * * * * * *
Peso No válido -1000,00 *
No válido fred *
Descuento Válido 10% * * * * * * *
No válido -10% *
No válido 200% *
No válido fred *
Precio del Válido 6 * * * * * *
porte
Válido 9 *
Válido 12 *
No válido 4 *
No válido fred *
166
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Partición en clases de equivalencia: basado en la salida (“out based”)
Las clases de equivalencia también pueden ser generadas a partir de los valores de salida esperados.
El método utilizado es análogo al anterior, aplicando los valores de salida.
La variable (elemento) es entonces la salida (“output”) (por ejemplo, el valor de un campo en la “GUI”).
Las clases de equivalencia son generadas para todos los posibles valores de la salida definidos.
Se determina un representante para cada clase de equivalencia de los valores de salida.
Entonces, el valor de entrada, que conduce al valor representante, es obtenido/identificado.
Los mayores costos y esfuerzo dado que los valores de entrada deben ser obtenidos para una salida determinada de forma recursiva
167
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Partición en clases de equivalencia- en general / 1
Participación.
La calidad de la prueba depende de la segmentación precisa de variables/elementos en clases de equivalencia.
CE que no hubieran sido identificadas presentan el riesgo de posibles omisiones, dado que los representantes utilizados no cubren todas las posibilidades.
Casos de prueba.
El método de la clase de equivalencia aporta casos de prueba para los cuales aún debe ser seleccionado un representante.
Las combinaciones de datos de prueba son seleccionados definiendo el o los representantes de cada clase de equivalencia.
168
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Partición en clases de equivalencia- en general / 2
Sección de representantes.
Cada valor perteneciente al CE puede ser un representante. Los óptimos son:
Valores característicos (“typical values”) (utilizados con frecuencia ).
Valores problemático (“problem values”) (sospechosos de producir fallos)
Valores límite (“boundary values”) (en la frontera de la CE).
Durante la creación de casos de prueba los representantes de CE inválidos deben combinarse siempre con los mismos valores de otros CE válidos (combinaciones estándar).
Dado el posible enmascaramiento de errores, se debe evitar las combinaciones de representantes de CE inválidas con representantes de otras CE inválidas en un mismo caso de
prueba.
La selección de representantes implica que la función implementada por el programa/sistema utiliza comparadores.
169
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
La cobertura de clases de equivalencia puede ser utilizada como criterio de salida para
finalizar las actividades del proceso de pruebas.
170
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
171
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Beneficios.
Método sistemático para el diseño de casos de prueba por ejemplo, con una mínima
cantidad de casos de prueba se pueden esperar un valor de cobertura específico.
La partición del rango del valores en clases de equivalencia a partir de las
especificaciones cubre los requisitos funcionales.
La asignación de prioridades a la clases de equivalencia puede ser utilizada para la
asignación de prioridades a los casos de prueba (los valores de entrada utilizados con
poca frecuencia deben ser los últimos en ser probados).
Las pruebas de las excepciones conocidas está cubierta por los casos de prueba de
acuerdo con las clases de equivalencia negativa.
172
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Importante:
¡La experiencia demuestra que, con mucha frecuencia, los errores tienen
lugar en los límites del rango de valores!
173
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Análisis de valores límite / 2
El análisis de valores límite supone que:
La clase de equivalencia está compuesta de un rango continuo de valores (no por un
valor individual o un conjunto de valores discretos).
Se pueden definir los límites para el rango de valores.
Adicionalmente a la partición en clases de equivalencia el análisis de valores
límite es un método que sugiere la selección de representantes.
Partición en clases de equivalencia.
Evalúa un valor (típico) de la clase de equivalencia .
Análisis de valores límite:
Evalúa los valores limite (frontera) y su entorno.
Se utilizó el siguiente esquema:
El esquema básico sólo puede ser aplicado cuando el rango de valores ha sido
definido de conformidad con el mismo esquema.
175
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
176
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Nota importante:
En lugar de un representante para la CE válida, ahora hay seis
representantes (cuatro válidos y dos no válidos).
177
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Sin embargo, una condición de entrada puede tener efectos sólo en combinación con
otras condiciones de entrada.
179
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Pruebas de tabla de decisión (“decisión table testing”)/2
A
R
B
181
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Pruebas de tabla de decisión (“decisión table testing”)/4
Realizar transferencia
Cobertura (^
182
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Pruebas de tabla de decisión (“decisión table testing”)/5
Ejemplo 5: Banca Online (“Online- Banking” ) .
Denegar transferencia NO SI SI NO
Solicitar TAN nuevamente NO NO NO SI
Cada columna de la tabla representa un caso de prueba.
Construcción de la tabla de decisión:
Seleccionar un efecto.
Retroceder en el diagrama para identificar la causa.
Cada combinación de causas está representada por una columna en la tabla de decisión
(un caso de prueba).
Combinaciones de causas idénticas, conducentes a efectos distintos, se pueden fusionar
183 para formar un único caso de prueba.
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
184
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
186
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
187
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
189
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Filled
La pila del ejemplo anterior tiene un tamaño de tres posiciones, por lo tanto
es necesaria la ejecución de tres operaciones “push” (apilar) para llenarla de
forma completa.
190
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
192
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Pruebas basada en casos de uso / 2
Ejemplo de un diagrama de caso de uso sencillo (fuente: Wikipedia).
El diagrama de la izquierda describe la
funcionalidad de un sistema “Restaurant”
sencillo.
Order Food
Prepare food Los casos de uso están representados
Server food por óvalos y los actores están
Chef representados por figuras de palo.
Walt Stalf
El actor “Patron” puede comer comida
System
(“Eat food”), pagar por la comida (“pay for
Eat food
Boundery Food”) o beber vino (“Drink Wine”).
Drink Wine
El actor cocinero (“Chef”) sólo puede
Patrón
prepara comida. Observar que los
actores “Patron” y “Cashier” estan
Pay for food involucrados en el caso de uso “Pay for
food” (pagar por la comida).
Cashier La caja define los límites del sistema
“Restaurant”, es decir, los casos de uso
representados son parte del sistema a
modelar y no los actores.
193
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Cada caso de uso describe una cierta tarea (interacción usuario- sistema).
La descripción de un caso de uso incluye, pero no está limitado a:
Precondiciones.
Resultados esperados / comportamiento del sistema
Poscondiciones.
Estos elementos descriptivos también son utilizados para definir el caso de
prueba correspondiente.
Cada caso de uso puede ser utilizado como la fuente para un caso de prueba.
Cada alternativa en el diagrama corresponde a un caso de prueba separado.
Normalmente la información aportada por un caso de uso no tiene suficiente
detalle para definir casos de prueba. Son necesarios datos adicionales (datos
de entrada, resultados esperados) para construir / desarrollar un caso de prueba
194
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Beneficios.
Pruebas apropiadas para pruebas de aceptación y pruebas de sistema,
dado que cada caso de uso describe un escenario a probar
Pruebas apropiadas si las especificaciones del sistema se encuentran
disponibles en UML.
Desventajas
Nula obtención de casos de prueba adicionales mas allá de la información
aportada por el caso de uso.
Por lo tanto éste método debería ser utilizado sólo en combinación con
otros métodos de diseño sistemático de casos de prueba.
195
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
196
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
197
IV – Técnicas de diseño de pruebas
03 – Técnicas de caja negra (“black box”)
Las pruebas de caja negra (black box) verifican funciones especificadas: si las
funciones no son especificadas, éstas no son probadas.
El código adicional (es decir que no debería estar) no puede ser detectado
utilizando pruebas de caja negra (black box)
198
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
Técnicas basadas en la estructura de caja blanca (“white box”)
En el presente apartado se explicarán en detalle las siguientes técnicas de caja
blanca (“white box”)
Prueba de sentencia y cobertura
Prueba de rama (“branch”) y cobertura.
Prueba de condición y cobertura
Prueba de camino (“path”) y cobertura .
Observación:
Estas técnicas representan las técnicas de prueba dinámicas más importantes
y utilizadas de forma más frecuente.
Estas técnicas están relacionadas con las técnicas de análisis estático
descritas anteriormente
Otras técnicas de caja blanca son las siguientes (no limitada a la enumeración):
LCSAJ (Linear Code Sequence And Jump): Secuencia lineal de código y salto.
Técnicas basadas en el flujo de datos.
199
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
Técnicas de caja blanca (“white box”) - herramientas / 1
Durante las pruebas de caja blanca, el programa objeto de las pruebas es
ejecutado de la misma forma que las pruebas de caja negra. Ambas categorías
(caja blanca y caja negra) conforman las pruebas dinámicas.
La teoría establece que todas las partes de un programa debería ser
ejecutado por lo menos una vez .
El grado de cobertura de un programa se mide con el uso de herramientas (por
ejemplo, analizadores de cobertura):
La instrumentación del código se lleva a cabo con el objeto de contar la
ejecución de caminos, es decir se insertan contadores en el código del
programa del objeto de prueba.
Estos contadores son inicializados en cero, cada ejecución del camino
específico incrementará el contador correspondientemente.
Los contadores que mantienen el valor cero tras las pruebas indican las
partes del programa que aún no han sido ejecutadas.
200
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
Técnicas de caja blanca (“white box”) - herramientas / 2
201
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
Principales tipos de cobertura
Cobertura de sentencia(“statement coverage”)
Porcentaje de sentencias ejecutables que han sido practicadas por los casos de prueba.
También puede ser aplicado a módulos, clases, elementos de un menú, etc.
Cobertura de decisión (= cobertura de rama) (“decisión coverage = branch
coverage”)
Procentaje de resultados de decisión que han sido practicados por los casos de pruebas
Cobertura de camino (“path coverage”)
Porcentaje de camino de ejecución que han sido practicados por casos de pruebas.
Cobertura de condición (“condition coverage”).
Porcentaje de todos los resultados individuales de condición que afectan la forma
independiente al resultado de una decisión que ha sido practicada por los casos de
prueba.
La cobertura de condición presenta distintos grados, por ejemplo, cobertura de condición
simple, cobertura de condición múltiple y cobertura de condición múltiple mínima.
202
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
Cobertura de sentencia (“Statement coverage”)
203
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
Cobertura de sentencia (“Statement coverage”)
Ejemplo 1 / 1
Ejemplo IV/02-1
Se evalúa el siguiente segmento de código de un programa, que está representado por
el diagrama de flujo de control (imagen a la derecha).
If (i>0) {
j=f (i);
if (j>10){
for (k=i; k >10; k -- ){
……
}
}
}
204
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
Cobertura de sentencia (“Statement coverage”) -
Ejemplo 1/2
205
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
Cobertura de sentencia (“Statement coverage”)-
Ejemplo 2
Ejemplo IV/02-2.
En este ejemplo el diagrama es ligeramente más
complejo:
El programa contiene las sentencias “if” y un bucle
(dentro de una sentencia “if”)
Cuatro caminos diferentes conducen a través de este
segmento de programa.
La primera sentencia “if” permite dos direcciones.
En cada rama de la sentencia ”if” otra sentencia “if”
permite nuevamente dos direcciones diferentes.
Utilizando sólo un caso de prueba, un máximo de 7 de
12 sentencias pueden ser cubiertas, esto resulta en un
valor de C0= 58,33%.
Para una cobertura de sentencia del 100% hacen falta
cuatro casos de prueba.
206
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
Cobertura de sentencia (“Statement coverage”)- Conclusiones
generales
La medición de la cobertura se realiza con el uso de herramientas diseñadas de
forma específica.
Estas herramientas se denominan Herramientas de análisis de Cobertura (“Coverage
Analysis Tools”) o Analizadores de Cobertura (“Coverage Analyzers”).
Beneficios / desventajas de este método.
El código muerto, es decir, código constituido por sentencias que nunca se ejecutan,
será detectado.
Si hay código muerto en el programa, no se podrá lograra una cobertura del
100%.
Instrucciones faltantes es decir, código que es necesario con el objeto de cumplir con
la especificación, no puede ser detectado.
Las pruebas se desarrollan solamente respecto de sentencias ejecutadas: ¿todo
el código puede ser alcanzado/ ejecutado?
El código faltante no puede ser detectado utilizado técnicas de caja blanca
(análisis de cobertura)
207
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
Cobertura de decisión (“decisión coverage”)
En lugar de las sentencias, la cobertura de decisión se centra en el flujo de
control en un segmento de programa (no los nodos sino las aristas del diagrama
de flujo de control)
Todas las aristas del diagrama de flujo de control tiene que ser cubiertas al lo menos
una vez.
¿Qué casos de prueba son necesarios para cubrir cada arista del diagrama de flujo de
control a l menos una vez?
El propósito de este prueba (criterio de salida) es lograr la cobertura de un
porcentaje específico de todas las decisiones, denominado cobertura de decisión
(C1 cobertura de código- “code coverage”).
Sinónimo de:
209
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
Cobertura de decisión (“decision coverage”) - Ejemplo 2
Ejemplo IV /02- 4.
En este ejemplo el diagrama es ligeramente más
complejo.
Cuatro “caminos” diferentes conducen a través del
segmento de programa.
La primera sentencia “if” permite dos direcciones.
En ambas ramas de la sentencia “if” otra sentencia “if”
permite nuevamente dos direcciones diferentes.
En este ejemplo, el bucle no se cuenta como una decisión
adicional.
Utilizando sólo un caso de prueba, pueden ser cubiertas
7 de 15 aristas. Esto resulta en un valor de C1= 46,67%.
Son necesarios cuatro casos de prueba para lograr una
cobertura de decisión de un 100%.
¡en este ejemplo, son necesarios el mismo conjunto de
casos de prueba para lograr una cobertura de sentencia
del 100%!
210
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
Lograr una cobertura de decisión del 100% requiere, al menos, los mismos
casos de prueba que requiere la cobertura de sentencia- más en la mayoría de
los casos.
Una cobertura de decisión del 100% siempre incluye una cobertura de sentencia del
100%.
La mayoría de las aristas son cubiertas en múltiples ocasiones.
Desventajas.
No se pueden detectar sentencias faltantes.
No es suficiente para probar condiciones complejas.
No es suficiente para probar bucles de forma extensiva.
No se consideran las dependencias entre bucles.
211
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
212
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
Cobertura de condición
Se tiene en cuenta la complejidad de una condición que esté constituida por
múltiples condiciones atómicas
Una condición atómica no puede ser dividida en sentencias condicionales mas
pequeñas.
Éste método tiene por objetivo detectar defectos que resulten de la
implementación de condiciones múltiples (condiciones combinadas).
Las condiciones múltiples están constituidas por condiciones atómicas, que se
combinan con el uso de operadores lógicos como:
Ejemplo: ((a>2) OR (b<6))
Las condiciones atómicas no tienen operadores lógico, sólo contienen operadores
relacionales y el operador NOT (=, >,<, etc.)
Hay tres tipos de cobertura de condición.
Cobertura de condición simple (“simple condition coverage”).
Cobertura de condición múltiple (“multiple condition coverage”).
Mínima cobertura de condición múltiple (“minimum multiple condition coverage”).
213
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
214
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
216
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
217
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
218
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
219
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
Ejemplo IV /02-5:
El diagrama de flujo de control de la imagen a la
derecha, representa el segmento de programa a
ser evaluado. Contiene dos sentencias “if” y un
bucle en el interior de la segunda sentencia “if”.
Tres caminos diferentes conducen a través del
diagrama de este segmento de programa logran
una cobertura de decisión completa.
Sin embargo, pueden ser ejecutados cinco posibles
caminos distintos.
Son necesarios cinco casos de pruebas para lograr
un 100% de cobertura de camino.
Sólo dos son necesarios para un 100% de cobertura
C0, tres son necesarios para un 100% de cobertura
C1
220
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
Ejemplo IV/02-5:
El diagrama de flujo de control de la imagen a la
derecha, representa el segmento de programa a
ser evaluado. Contiene dos sentencias “if” y un
bucle en el interior de la segunda sentencia “if”.
Tres caminos diferentes conducen a través del
diagrama de este segmento de programa logran
una cobertura de decisión completa.
Si el bucle se ejecuta dos veces son posibles
cuatro caminos diferentes.
221
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
222
IV – Técnicas de diseño de pruebas
04 – Técnicas de caja blanca (“white box”)
Resumen
Los métodos de caja blanca y caja negra son métodos dinámicos, el objeto de
prueba es ejecutado durante las pruebas.
El método de caja blanca (white - box) comprende:
Cobertura de sentencia (“Statement coverage”).
Cobertura de decisión (“decisión coverage”).
Cobertura de camino (“path coverage”).
Cobertura de condición (“condition coverage”) (simple (“single”), múltiple
(“multiple”), mínimo múltiple (“minimu, multiple”)).
Sólo se puede probar código existente. Habiendo funciones faltantes, este hecho no
puede ser detectado. Sin embargo el código muerto o superfluo puede ser detectado
con las pruebas de caja blanca.
Principalmente, los métodos de caja blanca son utilizados en pruebas de bajo nivel como
pruebas de componente o pruebas de integración.
Los métodos difieren en la intensidad de las pruebas (profundidad de la prueba).
Dependiendo del método, el número de coso de prueba es distinto.
223
IV – Técnicas de diseño de pruebas
05- Técnicas basadas en la experiencia
Fundamentos / 1
224
IV – Técnicas de diseño de pruebas
05- Técnicas basadas en la experiencia
Fundamentos / 2
225
IV – Técnicas de diseño de pruebas
05- Técnicas basadas en la experiencia
226
IV – Técnicas de diseño de pruebas
05- Técnicas basadas en la experiencia
227
IV – Técnicas de diseño de pruebas
05- Técnicas basadas en la experiencia
Pruebas exploratorias (“exploratory testing”)
228
IV – Técnicas de diseño de pruebas
05- Técnicas basadas en la experiencia
Pruebas exploratorias (“exploratory testing”) - Principios
229
IV – Técnicas de diseño de pruebas
05- Técnicas basadas en la experiencia
Diseño intuitivo de casos de prueba vs. diseño sistemático de casos de
prueba.
230
IV – Técnicas de diseño de pruebas
05- Técnicas basadas en la experiencia
Resumen
231
IV – Técnicas de diseño de pruebas
06- Selección de las técnicas de pruebas
Buena práctica
¿Qué enfoques han demostrado ser apropiados para estructuras
similares?
¿qué experiencias han sido adquiridas con qué enfoques en el pasado?
Niveles de prueba
¿En qué niveles de prueba se deben realizar pruebas?
234
IV – Técnicas de diseño de pruebas
06- Selección de las técnicas de pruebas
235
IV – Técnicas de diseño de pruebas
06- Selección de las técnicas de pruebas
Resumen
236
V – Gestión de pruebas
00- Agenda
237
V – Gestión de pruebas
01- Organización del proceso de pruebas
238
V – Gestión de pruebas
01- Organización del proceso de pruebas
Ventajas
Imparcialidad, no hay vinculación personal con el objeto de prueba.
Se pueden cuestionar hechos respecto de la base de pruebas (“Test
basis”) y verificar las suposiciones hechas durante al diseño de pruebas.
Desventajas.
Aumenta el esfuerzo dedicado a la comunicación, presentación de
conflictos del tipo “tener la última palabra”.
Otras formas de conformar equipos de prueba
Los testers también son miembros del equipo de desarrollo.
Los testers también son miembros del equipo del proyecto o estructura de
la organización.
Especialistas para tareas específicas.
Equipos de prueba externos.
239
V – Gestión de pruebas
01- Organización del proceso de pruebas
Perfiles del personal de pruebas
El proceso de pruebas requiere personas con una amplia variedad de
competencias y cualificaciones.
Se explicaran en detalle los siguientes roles asociados al proceso de pruebas:
Jefe de pruebas o director de pruebas (“Test manager”).
Diseñador de pruebas (“Test designer”).
Ingeniero de automatización de pruebas (“Test automition engineer”).
Administrador de pruebas (“Test administrator”)/ administrador del
sistema de pruebas (“Test system administrator”).
Tester
Experto técnico (“Technical expert”).
Nota
Se pueden especificar roles adicionales, por ejemplo administrador de
base de datos, tester de carga.
240
V – Gestión de pruebas
01- Organización del proceso de pruebas
241
V – Gestión de pruebas
01- Organización del proceso de pruebas
242
V – Gestión de pruebas
01- Organización del proceso de pruebas
243
V – Gestión de pruebas
01- Organización del proceso de pruebas
244
V – Gestión de pruebas
01- Organización del proceso de pruebas
245
V – Gestión de pruebas
01- Organización del proceso de pruebas
246
V – Gestión de pruebas
01- Organización del proceso de pruebas
Competencias no técnicas (“Soft skills”)
247
V – Gestión de pruebas
01- Organización del proceso de pruebas
Organización de equipos de pruebas.
Dirección equipos de
pruebas
Jefe de pruebas
*Esta no es una tarea propia del jefe de pruebas, la gestión de la configuración es necesaria en
todas las fases de desarrollo de un producto.
249
V – Gestión de pruebas
01- Organización del proceso de pruebas
Tareas del jefe de pruebas / 2
250
V – Gestión de pruebas
01- Organización del proceso de pruebas
Tareas del jefe de pruebas / 3
251
V – Gestión de pruebas
01- Organización del proceso de pruebas
Tareas del jefe de pruebas / 4
252
V – Gestión de pruebas
01- Organización del proceso de pruebas
Tareas del jefe de pruebas / 5
253
V – Gestión de pruebas
01- Organización del proceso de pruebas
Tareas del jefe de pruebas / 6
254
V – Gestión de pruebas
01- Organización del proceso de pruebas
Tareas del jefe de pruebas / 7
255
V – Gestión de pruebas
01- Organización del proceso de pruebas
Tareas del jefe de pruebas / 8
Especificación.
El objeto principal del proceso de pruebas es detectar la mayor cantidad
de defectos relevantes con el menor esfuerzo posible!.
Todas las pruebas documentadas en el plan de pruebas son
especificadas, es decir, se establece cómo se estructura y cómo debe ser
ejecutado. Este proceso es inicializado por el jefe de pruebas.
Los casos de pruebas están constituidos por pasos unitarios, cada
paso consta de una acción y de un resultado esperado.
¡Los casos de prueba deberían ser obtenidos con la colaboración del
personal que cuente con conocimiento de los requisitos funcionales
del software!.
Los casos de prueba deberían ser diseñados teniendo en mente su
carácter repetitivo.
256
V – Gestión de pruebas
01- Organización del proceso de pruebas
Tareas del jefe de pruebas / 9
Ejecución y control.
Comparación de los resultados esperados y obtenidos en el proyecto.
Cada ciclo de pruebas requiere ser ajustado/adaptado al plan de
pruebas.
¿Han ocurrido retrasos o cambios?.
¿Los resultados obtenidos se encuentran dentro del rango
esperado?- Número de defectos detectados, tiempo utilizado en
correcciones, repetición de pruebas, etc.
Todas las desviaciones deben ser informadas y tenidas en cuenta.
Habitualmente, las medidas correctivas deben ser tomadas de
acuerdo con el plan de pruebas y las actividades de pruebas en
curso, por ejemplo:
Ajuste de fechas planificadas.
Ajuste de recursos para la ejecución de pruebas.
Ejecutar ciclos de pruebas adicionales/ omitir ciclos de pruebas.
Modificar la prioridad de ciclos de pruebas
257
V – Gestión de pruebas
01- Organización del proceso de pruebas
Tareas del jefe de pruebas / 10
Evaluación.
258
V – Gestión de pruebas
01- Organización del proceso de pruebas
Tareas del jefe de pruebas / 11
Evaluación.
259
V – Gestión de pruebas
01- Organización del proceso de pruebas
Ejecución de pruebas.
260
V – Gestión de pruebas
01- Organización del proceso de pruebas
261
V – Gestión de pruebas
01- Organización del proceso de pruebas
Ejecución de pruebas.
Implementación de las pruebas a todos los niveles
ejecuta pruebas y registra resultados en un protocolo de pruebas.
Evalúa los resultados de las pruebas.
Opera herramientas de pruebas.
262
V – Gestión de pruebas
01- Organización del proceso de pruebas
263
V – Gestión de pruebas
01- Organización del proceso de pruebas
Resumen
264
V – Gestión de pruebas
02- Planificación y estimación de pruebas
Actividades de planificación de pruebas
265
V – Gestión de pruebas
02- Planificación y estimación de pruebas
La planificación de pruebas es parte de la planificación de la calidad en su
conjunto.
266
V – Gestión de pruebas
02- Planificación y estimación de pruebas
La plan de pruebas (estático)
267
V – Gestión de pruebas
02- Planificación y estimación de pruebas
La plan de pruebas de acuerdo al estándar IEEE 829
1. Introducción.
2. Supuestos.
3. Ítems de prueba.
4. Características sujetas a pruebas.
5. Características no sujetas a pruebas.
6. Enfoque.
7. Criterios de éxito/fracaso para un ítem.
8. Criterios de suspensión/reanudación.
9. Entregables de pruebas.
10. Tareas de pruebas.
11. Necesidades relativas al entorno.
12. Responsabilidades.
13. Dotación de personal y formación.
14. Calendario.
15. Riesgos y contingencias.
16. Aprobación.
268
V – Gestión de pruebas
02- Planificación y estimación de pruebas
Actividades a realizar
269
V – Gestión de pruebas
02- Planificación y estimación de pruebas
270
V – Gestión de pruebas
02- Planificación y estimación de pruebas
271
V – Gestión de pruebas
02- Planificación y estimación de pruebas
272
V – Gestión de pruebas
02- Planificación y estimación de pruebas
273
V – Gestión de pruebas
02- Planificación y estimación de pruebas
ión
Inicialmente, el coste de la revisión se lid e t
nc
ad ota
incrementa, a continuación se reduce (las
ve
ld
Co
pre
revisiones no aportan beneficios en las e
st e
fases finales del proyecto).
la
Costes
de
err de
le
Inicialmente, el coste total de la calidad se
de ostes
or
rro
reduce, a continuación se incrementa los
r
ne s
costes de la calidad son los mas bajos visio
C
d e re
donde la curva representa un mínimo. Cost
e
Frecuentemente es necesario aportar un
Grado de la calidad
mínimo de calida con el objeto de poder
mantenerse en el negocio.
275
V – Gestión de pruebas
02- Planificación y estimación de pruebas
276
V – Gestión de pruebas
02- Planificación y estimación de pruebas
Método.
Identificar todas las tareas a ejecutar (normalmente utilizando un
enfoque descendente (“top down”)).
Obtener estimaciones para cada tarea por los responsables (de su
ejecución) o por expertos.
Sumar todos los valores de las tareas. Incluir los factores de
corrección (si hay experiencias respecto de la exactitud de ciertas
estimaciones).
Incluir elementos amortiguadores (buffers)/ elementos adicionales
con el objeto de cubrir tareas omitidas o subestimadas.
277
V – Gestión de pruebas
02- Planificación y estimación de pruebas
Ventajas.
Las actividades de estimación pueden estar estrechamente vinculadas a la
planificación del proyecto.
La estimación da origen a una información de detalle que puede ser
controlada y ajustada a lo largo del ciclo de vida del proyecto.
Las tareas pueden ser asignadas a grupos (por ejemplo pequeño, mediano,
grande) y los esfuerzos son estimados para un representante del mismo.
Desventajas.
Este método es extensivo y caro.
Este método requiere una idea clara respecto de la estrategia de pruebas y
actividades de pruebas en una fase temprana del proyecto.
La experiencia demuestra que las estimaciones son, en la mayoría de los
casos, a la baja. Esto podría deberse a la omisión o subestimación grosera
de ciertas tareas.
Los elementos amortiguadores incorporados son incorporados durante la
planificación del proyecto.
278
V – Gestión de pruebas
02- Planificación y estimación de pruebas
Método.
Clasificar las tareas de pruebas requeridas.
Buscar un proyecto que se haya desarrollado en el pasado que
contenga una tarea similar a una específica.
Utilizar el esfuerzo real de esta tarea como base de la estimación.
A través del uso de métricas (líneas de código, número de
módulos, número de casos de prueba, etc.) como base, calcular el
valor de la estimación total.
Considerar factores de corrección.
279
V – Gestión de pruebas
02- Planificación y estimación de pruebas
Ventajas.
Este método es simple y efectivo.
Se pueden lograr valores muy precisos para la estimación si se
cuenta con suficiente experiencia.
Desventajas.
Se requiere personal con experiencia y/o información detallada
respecto del proyecto actual y las tareas a estimar.
Los criterios para la clasificación de proyectos pueden no cubrir
todos los aspectos de un proyecto.
Frecuentemente conduce a debates con la dirección especto de la
validez de la estimación.
280
V – Gestión de pruebas
02- Planificación y estimación de pruebas
Método.
El esfuerzo para las actividades de pruebas se estiman sobre la
base de la totalidad de las actividades del proyecto.
El valor del porcentaje (fracción) requiere ser determinado
basándose en la experiencia.
Ejemplo: Spillner / Linz habla de un porcentaje del 50% de
actividades de pruebas respecto a la totalidad de actividades del
proyecto (véase también “Basiswissen Softwaretest”, dpunkt.
Verlag,3. Auflage, S. 181).
Este método también puede ser utilizado para parte del trabajo
(por ejemplo estimación para los costes de gestión de proyecto,
estimación del esfuerzo de pruebas para las pruebas des sistema)
281
V – Gestión de pruebas
02- Planificación y estimación de pruebas
Ventajas.
Técnica de estimación muy simple y potente que no requiere
excesiva información de entrada.
Desventajas.
No muy precisa, dado que no tiene en cuenta los hechos
particulares del proyecto.
Es necesaria mucha experiencia e intuición por parte del estimador
con el objeto de obtener estimaciones válidas.
La decisión respecto del valor del porcentaje puede conducir a
debates difíciles.
Tiene en cuenta actividades que ya forman parte de las
estimaciones de la planificación de l proyecto (por ejemplo ¿El
esfuerzo de pruebas del desarrollador forma parte de la estimación
correspondiente al desarrollo o debe formar parte de las
estimaciones del proceso de pruebas?).
282
V – Gestión de pruebas
03- Seguimiento y control del estado de las pruebas.
283
V – Gestión de pruebas
03- Seguimiento y control del estado de las pruebas.
Informe del estado de pruebas /1
284
V – Gestión de pruebas
03- Seguimiento y control del estado de las pruebas.
Informe del estado de pruebas / 2
285
V – Gestión de pruebas
03- Seguimiento y control del estado de las pruebas.
Control de pruebas
286
V – Gestión de pruebas
03- Seguimiento y control del estado de las pruebas.
287
V – Gestión de pruebas
03- Seguimiento y control del estado de las pruebas.
Resumen
288
V – Gestión de pruebas
04- Gestión de la configuración
Observaciones generales
289
V – Gestión de pruebas
04- Gestión de la configuración
Definiciones
290
V – Gestión de pruebas
04- Gestión de la configuración
291
V – Gestión de pruebas
04- Gestión de la configuración
292
V – Gestión de pruebas
04- Gestión de la configuración
293
V – Gestión de pruebas
04- Gestión de la configuración
Resumen
294
V – Gestión de pruebas
05- Riesgo y proceso de pruebas
Riesgo
295
V – Gestión de pruebas
05- Riesgo y proceso de pruebas
296
V – Gestión de pruebas
05- Riesgo y proceso de pruebas
Tipos de riesgos asociados al proyecto (más frecuentes)
Riesgos asociados a la organización (“organizational risks”)
Capacitación y disponibilidad del personal.
Problemas personales entre equipos / miembros del equipo.
Cooperación insuficiente entre departamentos / conflictos de intereses.
Estimaciones no realistas de plazos del proyecto.
Riesgos tecnológicos.
Requisitos defectuosos, incompletos o no realistas.
Tecnologías métodos herramientas, etc. Nuevas o que presentan incertidumbres para el
desarrollo del software.
Déficit de calidad en productos.
Disponibilidad de un entorno de prueba complejo.
Riesgos ambientales (“environmental risks”).
Deficiencias por parte de extremos en la provisión de componentes (plazos, calidad, coste).
Problemas de aceptación y otros inconvenientes contractuales con proveedores.
Acceso concurrente a recursos externos.
Cambios en requisitos legales
297
V – Gestión de pruebas
05- Riesgo y proceso de pruebas
Riesgos asociados al producto
Los riesgos asociados al producto son el resultado de problemas relacionados
con el producto suministrado.
Funcionalidad insuficiente del producto suministrado.
atributos no funcionales insuficientes.
El producto no es idóneo para su uso previsto, por lo tanto no
puede ser puesto en operación.
El producto provoca daños a la propiedad.
El producto provoca muerte o lesión accidentales
Las pruebas se ejecutan para reducir u evitar los riesgos asociados al producto.
La probabilidad de ocurrencia de un riesgo se reduce.
El daño potencial por la ocurrencia de un riesgo se reduce.
298
V – Gestión de pruebas
05- Riesgo y proceso de pruebas
Gestión de riesgos asociados al producto / 1
299
V – Gestión de pruebas
05- Riesgo y proceso de pruebas
Gestión de riesgos asociados al producto / 2
300
V – Gestión de pruebas
05- Riesgo y proceso de pruebas
Resumen
301
V – Gestión de pruebas
06- Gestión de incidencias
Detección de errores durante las pruebas
302
V – Gestión de pruebas
06- Gestión de incidencias
El tester.
Ejecuta los casos de prueba con el objeto de detectar errores.
Registra los resultados en un protocolo de pruebas.
Introduce los errores en un repositorio (informe de problemas).
Jefe de pruebas (“test manager”)
Evalúa el informe de problemas.
Asigna prioridades de los errores (de acuerdo con la dirección del
proyecto, cliente, etc.)
Redacta el informe de estado en función del estado actual de las
labores de corrección.
303
V – Gestión de pruebas
06- Gestión de incidencias
304
V – Gestión de pruebas
06- Gestión de incidencias
Estructura de un informe de incidencias (informe de errores)
306
V – Gestión de pruebas
06- Gestión de incidencias
Clase de error y prioridad del error
307
V – Gestión de pruebas
06- Gestión de incidencias
Estado de un error
El estado de un error aporta información relativa al progreso / evolución del
trabajo que ha sido desarrollado para este error
Los posibles estados de un error son, pero no están limitados a las
siguientes:.
Nuevo (“new”)– El tester a introducido un error en el sistema.
Abierto (“open”)- El jefe de pruebas a confirmado el informe del problema.
Rechazado (“rejected”) - El jefe de prueba ha rechazado el informe del problema.
Inspección (“inspection”) - El desarrollador intenta identificar el error.
En observación (“surveillance”) - El error no puede ser reproducido, se
encuentra bajo vigilancia
Trabajo en progresión (“WorklnProgress”) – El error es localizado y preparado /
desbloqueado para su correccion
Repetición de pruebas (“retest”) - El desarrollador a corregido la causa del error
Finalizado (“finalized”) - El tester a verificado la corrección a través de la
repetición de las pruebas.
No resuelto (“NotSolved”)- El tester no ha podido verificar la corrección, el error
aun se encuentra ahí
308
V – Gestión de pruebas
06- Gestión de incidencias
Estado de un error
El estado de un error aporta información relativa al progreso / evolución del trabajo que ha sido desarrollado
para este error.
Nuevo Rechazado
Abierto En
observación
Inspección
Trabajo en
progresión
Repetición
de
No resuelto Finalizado
pruebas
309
V – Gestión de pruebas
06- Gestión de incidencias
Estado de un error
310
V – Gestión de pruebas
06- Gestión de incidencias
Análisis de informes de errores
311
V – Gestión de pruebas
06- Gestión de incidencias
Resumen
312
VI – Herramientas de pruebas
01- Tipos de herramientas de pruebas
Observaciones generales
Las herramientas de prueba pueden ser utilizadas para dar soporte a las
actividades de pruebas.
El soporte en la ejecución de pruebas se refiere a ala
automatización de pruebas.
Las herramientas de prueba pueden dar soporte a otras actividades
de pruebas.
La denominación de las herramientas de pruebas se realiza según el tipo
de soporte que prestan.
Hay herramientas disponibles para cada nivel del proceso de
pruebas.
En analogía a CASE- Tools (Computer Aided Software Engineering), en
ocasiones se hace referencia a todas las herramientas de pruebas como
CAST-Tools (Computer Aided Software Testing)
313
VI – Herramientas de pruebas
01- Tipos de herramientas de pruebas
Clasificación de las herramientas de pruebas / 1
Las herramientas utilizadas para tareas específicas versus paquetes de
herramientas de pruebas (“test tool suites”).
Las herramientas unitarias (“single tools”) dan soporte a una tarea particular,
son diseñadas para una actividad de pruebas.
Los paquetes de herramientas cubren varias tareas e integran varias
herramientas unitarias.
Herramientas de pruebas intrusas versus herramientas que no alteran el
objeto de prueba.
Herramientas intrusas (“intrusive tools”)puede interferir en la ejecución del
objeto de prueba y puede provocar que difiera respecto al objeto en el entorno
real.
El depurado introduce puntos de corte y alteran el tratamiento de interrupciones.
Los “drivers” de pruebas aportan al objeto de pruebas datos de entrada artificiales.
La cobertura se determina a través de contadores introducidos en el código
315
VI – Herramientas de pruebas
01- Tipos de herramientas de pruebas
Herramientas para pruebas estáticas: revisiones
316
VI – Herramientas de pruebas
01- Tipos de herramientas de pruebas
Herramientas para la gestión de pruebas / 2
317
VI – Herramientas de pruebas
01- Tipos de herramientas de pruebas
Herramientas para la especificación de pruebas / 3
318
VI – Herramientas de pruebas
01- Tipos de herramientas de pruebas
Herramientas para la ejecución de pruebas – “Drivers” y “ stubs”
319
VI – Herramientas de pruebas
01- Tipos de herramientas de pruebas
Son una replica del entorno de producción (o parte del mismo) y son
necesarios cuando consideraciones de seguridad impiden el uso del
entorno de producción objetivo (real).
Principalmente son utilizados en el nivel de pruebas de sistema y
pruebas de integración – posiblemente son utilizados también en
pruebas de componente.
La emulación del entorno de producción debe ser tan próxima al mismo
como sea posible.
320
VI – Herramientas de pruebas
01- Tipos de herramientas de pruebas
Herramientas para el análisis de pruebas y análisis del objeto de prueba
321
VI – Herramientas de pruebas
01- Tipos de herramientas de pruebas
Herramientas para pruebas no funcionales
322
VI – Herramientas de pruebas
02- Uso efectivo de herramientas de pruebas
Ventajas de las herramientas de pruebas en general
323
VI – Herramientas de pruebas
02- Uso efectivo de herramientas de pruebas
Riesgos de las herramientas en general
Desviaciones en la calidad de la herramienta desplegada.
Funcionalidad de la herramienta de pruebas no cumple con las
expectativas.
La usabilidad de la herramienta de pruebas no cumple con las
expectativas.
Otros requisitos de calida no son alcanzados.
Estimación errónea de los beneficios y costes
Beneficio ha sido sobreestimado.
Costes de adquisición, introducción u operación ha sido subestimado.
Despliegue erróneo de la herramienta
Por ejemplo dejar atrás el conocimiento de los métodos de prueba.
Por ejemplo omitir la tarea de considerar los diferentes procedimientos /
procesos de prueba y adecuación aun proyecto específico.
“un instrumento predictivo no es buena opción”
324
VI – Herramientas de pruebas
02- Uso efectivo de herramientas de pruebas
325
VI – Herramientas de pruebas
02- Uso efectivo de herramientas de pruebas
326
VI – Herramientas de pruebas
03 – Introducción de herramientas de pruebas
327
VI – Herramientas de pruebas
03 – Introducción de herramientas de pruebas
328