INGENIERIA DEL SOFTWARE - INGENIERIA DEL SOFTWARE

dgsacravilcana 0 views 109 slides Aug 30, 2025
Slide 1
Slide 1 of 109
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59
Slide 60
60
Slide 61
61
Slide 62
62
Slide 63
63
Slide 64
64
Slide 65
65
Slide 66
66
Slide 67
67
Slide 68
68
Slide 69
69
Slide 70
70
Slide 71
71
Slide 72
72
Slide 73
73
Slide 74
74
Slide 75
75
Slide 76
76
Slide 77
77
Slide 78
78
Slide 79
79
Slide 80
80
Slide 81
81
Slide 82
82
Slide 83
83
Slide 84
84
Slide 85
85
Slide 86
86
Slide 87
87
Slide 88
88
Slide 89
89
Slide 90
90
Slide 91
91
Slide 92
92
Slide 93
93
Slide 94
94
Slide 95
95
Slide 96
96
Slide 97
97
Slide 98
98
Slide 99
99
Slide 100
100
Slide 101
101
Slide 102
102
Slide 103
103
Slide 104
104
Slide 105
105
Slide 106
106
Slide 107
107
Slide 108
108
Slide 109
109

About This Presentation

INGENIERIA DEL SOFTWARE


Slide Content

Programa de Ingeniería de Sistemas INGENIERÍA DE SOFTWARE Sesión 11 Tema: Diseño de casos de uso de prueba. ·Métodos de prueba aplicables a nivel de clase. ·Diseño de casos de prueba a nivel de clase

Resultado de aprendizaje Implementa software empresarial con técnicas y métodos de ingeniería para una organización real Evidencia de aprendizaje Informe Académico individual de Casos de Prueba

Agenda Diseño de casos de uso de prueba. Métodos de prueba aplicables a nivel de clase. Diseño de casos de prueba a nivel de clase. Guía de Práctica de Laboratorio10: Casos de Prueba.

Revisa el siguiente video:

Después de haber visualizado el video en la slide anterior, reflexionamos y respondemos las siguientes interrogantes: 01 ¿Cuál es la idea principal o el concepto clave que se destaca en el video? 02 ¿Cómo se relaciona este tema con otros conceptos dentro del mismo campo de estudio? 03 ¿Cuáles son las implicaciones prácticas o aplicaciones de este conocimiento en la vida cotidiana o en el ámbito profesional?

Diseño de casos de uso de prueba. ·Métodos de prueba aplicables a nivel de clase. ·Diseño de casos de prueba a nivel de clase

Objetivo Objetivo: Mostrar cómo aplicar el proceso ETUC para la generación de casos de prueba a una aplicación web real. Objetivo: Mostrar cómo aplicar el proceso ETUC para la generación de casos de prueba a una aplicación web real. Análisis y diseño de Sistemas - Sesión 11

Índice Aplicación Web-Link. Generación de objetivos de prueba. Pruebas abstractas. Pruebas concretas. Conclusiones.

Aplicación Web-Link Análisis y diseño de Sistemas - Sesión 1

Aplicación Web-Link Un sistema para guardar y mostrar un catálogo de enlaces en línea. Los enlaces se agrupan en categorías. Cualquier visitante puede añadir nuevos enlaces o consultar los enlaces almacenados. Análisis y diseño de Sistemas - Sesión 1

Aplicación Web-Link Necesitamos la definición de los casos de uso.

UC-01. Añadir nuevo enlace. No Nombre Precon d ici ó n Secuencia principal El visitante solicita añadir un nuevo enlace. El sistema solicita la información del enlace (SR-02). El visitante introduce la información del nuevo enlace. El sistema almacena el nuevo enlace. Error / Secuencias a l t e rnat i vas 3.1.i El visitante cancela la operación y este caso de uso 3 .2.i termina. Si el visitante desea cambiar la categoría, se ejecuta el caso de uso “Cambiar categoría” y se repite el paso 2. 4.1.p Si el nombre del enlace o su URL están vacíos, el sistema muestra un mensaje de error y se repite el paso 2. Nuevo enlace añadido al sistema. Post-condición Notas Por defecto, el sistema selecciona la categoría “Top” para el nuevo e n lace. Aplicación Web-Link Nombre UC-02. Cambiar categoría. Precondición El visitante está introduciendo un enlace S e cuen c i a principal El visitante solicita cambiar la categoría. El sistema muestra todas las categorías disponibles. El usuario selecciona una categoría. El sistema modifica la categoría del nuevo enlace. Error / Secuencias alternativas 2.1.i Si no hay ninguna categoría o el sistema no puede recuperar las categorías, se muestra un mensaje de error y el caso de uso termina. Post - condició n No. Necesitamos más información: ¿Qué es un enlace?, ¿qué es una categoría?. Una extensión a NDT: i. Preevaluada. p. Postevaluadoa. Análisis y diseño de Sistemas - Sesión 1

Aplicación Web-Link Los requisitos de información describen los datos del mundo real que nuestro sistema debe utilizar. Nombre SR-01. Categorías Informaci ó n específica Nombre Dominio Identificador Entero Descripción Cadena Categoría padre Entero Restricciones El identificador debe ser único. La categoría padre debe existir. Valores inici a les Categoría “Top”. Nombre SR-02. Enlaces. Informaci ó n específica Nombre Dominio Identificador Entero Nombre Cadena Categoría Entero URL Cadena Descripción Cadena Aprobado Boolean Fecha Fecha Restricciones El identificador debe ser único. Todos los campos son obligatorios excepto descripción. Categoría Enlace

Procesos e información Una visión global Proceso ETUC. Análisis y diseño de Sistemas - Sesión 1

Generación de objetivos de prueba Análisis y diseño de Sistemas - Sesión 1

El proceso ETUC Construcción del modelo de comportamiento Generación de secuencias de acciones. Construcción del modelo de comportamiento. Resolución de inclusiones y extensiones. Identificación de variables operacionales. Generación de valores de prueba. Construcción de objetivos de prueba. Resultado: Objetivos de prueba. (pasos + valores de prueba) Generación de objetivos. 1

Objetivos de prueba Nombre UC-01. Añadir nuevo enlace. Precondición No S e cu e nc i a principal El visitante solicita añadir un nuevo enlace. El sistema solicita la información del enlace (SR-02). El visitante introduce la información del nuevo enlace. El sistema almacena el nuevo enlace. Error / Secuencias alte rna ti v as 3.1.i El visitante cancela la operación y este caso de uso termina. 3.2.i Si el visitante desea cambiar la categoría, se ejecuta el caso de uso “Cambiar categoría” y este caso de uso continua.. 4.1.p Si el nombre del enlace o su URL están vacíos, el sistema muestra un mensaje de error y solicita de nuevo la información del enlace. Post-condición Nuevo enlace añadido al sistema. Notas Por defecto, el sistema selecciona la categoría “Top” para el nuevo enlace. El caso de uso se representa mediante un diagrama de actividades . Las actividades se clasifican según las realicen los actores o el sistema. Análisis y diseño de Sistemas - Sesión 1

Construcción del modelo de comportamiento. S e c u e n cia Principal The [Actor] …. The system….. The [Actor] …. The system….. Errores / 3.1.p. If [Condición] , then [Acción] and alternativas [Resultado] . 3.1.i. At any time [Condición] , then [Acción] and [Resultado] . Secuencia alternativa: Tres tipos de resultados: Terminar el caso de uso. Continuar el caso de uso. Repetir / ir a otro paso del caso de uso.

Nombre UC-01. Añadir nuevo enlace. Precondición No Secu e ncia principal El visitante solicita añadir un nuevo enlace. El sistema solicita la información del enlace (SR-02). El visitante introduce la información del nuevo enlace. El sistema almacena el nuevo enlace. Error / Secuencias a lternat i vas 3.1.i El visitante cancela la operación y este caso de uso termina. 3.2.i Si el visitante desea cambiar la categoría, se ejecuta el caso de uso “Cambiar categoría” y este caso de uso continua.. 4.1.p Si el nombre del enlace o su URL están vacíos, el sistema muestra un mensaje de error y solicita de nuevo la información del enlace. Post-condición Nuevo enlace añadido al sistema. Notas Por defecto, el sistema selecciona la categoría “Top” para el nuevo enlace. Objetivos de prueba 1. Cada paso de la secuencia principal es una actividad. 2. Cada paso de la secuencia alternativa es una decisión (y, a veces, más actividades). Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Nombre UC-01. Añadir nuevo enlace. Precondición No S e c u e n cia principal El visitante solicita añadir un nuevo enlace. El sistema solicita la información del enlace (SR-02). El visitante introduce la información del nuevo enlace. El sistema almacena el nuevo enlace. Error / Secuencias alternativas 3.1.i El visitante cancela la operación y este caso de uso termina. 3.2.i Si el visitante desea cambiar la categoría, se ejecuta el caso de uso “Cambiar categoría” y este caso de uso continua.. 4.1.p Si el nombre del enlace o su URL están vacíos, el sistema muestra un mensaje de error y solicita de nuevo la información del enlace. Post-condición Nuevo enlace añadido al sistema. Notas Por defecto, el sistema selecciona la categoría “Top” para el nuevo enlace. Nombre UC-02. Cambiar categoría. Precondición El visitante está introduciendo un enlace S ecuencia principal El visitante solicita cambiar la categoría. El sistema muestra todas las categorías disponibles. El usuario selecciona una categoría. El sistema modifica la categoría del nuevo enlace. Error / Secuencias al t ern a t i vas 2.1.i Si no hay ninguna categoría o el sistema no puede recuperar las categorías, se muestra un mensaje de error y el caso de uso termina. Post-condición No. Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba ¿Qué puede cambiar entre 2 ejecuciones del mismo caso de uso?. ¿Qué información debe suministrar el visitante/prueba al sistema?. ¿Qué información suministra el sistema al visitante/prueba Variable Operacional: Cualquier cosa que puede cambiar entre dos ejecuciones de un mismo caso de uso. Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba UC-01. Añadir nuevo enlace. No El visitante solicita añadir un nuevo enlace. El sistema solicita la información del enlace (SR-02). El visitante introduce la información del nuevo enlace. El sistema almacena el nuevo enlace. 3.1.i El visitante cancela la operación y este caso de uso termina. 3.2.i Si el visitante desea cambiar la categoría, se ejecuta el 4.1.p caso de uso “Cambiar categoría” y este caso de uso continua.. Si el nombre del enlace o su URL están vacíos, el sistema muestra un mensaje de error y solicita de nuevo la información del enlace. Nuevo enlace añadido al sistema. Nombre Pre c ondi c ió n Secuen c ia principal Error / Secuencias a l t ern a t ivas Pos t -condición Notas Por defecto, el sistema selecciona la categoría “Top” para el nuevo enlace. nuevoEnlace acciónVisitante UC-02. Cambiar categoría. El visitante está introduciendo un enlace El visitante solicita cambiar la categoría. El sistema muestra todas las categorías disponibles. El visitante selecciona una categoría. El sistema modifica la categoría del nuevo enlace. 2 . 1 . i Si no hay ninguna categoría o el sistema no puede recuperar las categorías, se muestra un mensaje de error y el caso de uso termina. Nombre Precon d ición Secuenc i a principal Error / Secuencias alternativas Post-condición No. listadoCategorías categoríaSeleccionada En este caso, no hay ningún resultado que se exprese como una variable. errorListandoCategoría Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Relación entre las actividades y las variables op. nuevoEnlace acciónVisitante listadoCategorías categoríaSeleccionada Análisis y diseño de Sistemas - Sesión 1

Nombre Abr. Dominio Tipo categoríaEnlace C SR-01 Información datosEnlace E SR-02 Información accionVisitante A {Introducir, cancelar cambiar} Actor listadoCategorias LC Array de SR-01 Contexto errorCategorías EC {Sin error,….} Contexto Objetivos de prueba Listado de variables operacionales. Información: Datos que el actor suministra al sistema. Actor: Acciones que el actor realiza sobre el sistema. Contexto: Información dependiente del estado del sistema. Análisis y diseño de Sistemas - Sesión 1

Resumen Construcción del modelo de comportamiento Nombre Abr. Dominio Tipo categoríaEnlace C SR-01 Información datosEnlace E SR-02 Información accionVisitante A {Introducir, cancelar cambiar} Actor listadoCategorias LC Array de SR-01 Contexto errorCategorías EC {Sin error,….} Contexto Análisis y diseño de Sistemas - Sesión 1

El proceso ETUC Construcción del modelo de comportamiento Generación de secuencias de acciones. Selección de criterios de cobertura y recorrido. Recorrido del modelo de comportamiento. Generación de valores de prueba. Construcción de objetivos de prueba. Resultado: Objetivos de prueba. (pasos + valores de prueba) Generación de objetivos. 1 Análisis y diseño de Sistemas - Sesión 1

Cobertura Cobertura : Cantidad de código verificada por las pruebas . Pero nosotros no estamos probando código. Necesitamos una nueva definición. Cobertura : Número de escenarios del caso de uso verificado por las pruebas . La cobertura es: Qué seleccionamos y qué dejamos fuera. Medida de la cantidad que estamos probando. La selección se aplica en varios momentos: Seleccionando casos de uso. Seleccionando valores de prueba. Seleccionando recorridos en el modelo de comportamiento, etc… Análisis y diseño de Sistemas - Sesión 1

Cobertura de l as pruebas Número de pasos. Actores participantes. Número de alternativas. Prioridad. Estabilidad. Relevancia. Riesgo. Criterios internos Criterios externos Análisis y diseño de Sistemas - Sesión 1

Cobertura de las pruebas Prioridad Cobertura No se genera ninguna prueba a partir del caso de uso. 1 La acción principal. 2 La 1 y todas las alternativas que dependan de la acción de los actores. 3 La 2 y todos los errores que dependan de la acción de los actores. 4 La 3 y todas las alternativas que dependan del estado del sistema. 5 La 4 y todos los errores que dependan del estado del sistema. Ejemplo de criterio de cobertura. Cobertura = Escenarios seleccionados / Escenarios totales Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Todos los nodos (actividades / desiciones). Todas las transiciones. Todas las decisiones y alternativas. Todos los escenarios Selección de un algoritmo de recorrido. Todos los escenarios para 0 o 1 repeticiones de bucles. Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Calculamos todos los posibles caminos (recorremos todos los nodos y transiciones). Vamos a encontrar 15 caminos diferentes. Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Dos bucles sin número de repetición definido. Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Estudiamos las combinaciones posibles para 0 o 1 repetición. Repeticiones Bucle 01 Bucle 02 1 1 1 (primero) 1 (segundo) 1 (segundo) 1 (primero) 3 Caminos Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba 1 (primero) 1 (segundo) 1 (segundo) 1 (primero) 1 1 Bucle 02 Bucle 01 Repeticiones 3 Caminos Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Repitiendo esto para todas las combinaciones. Repeticiones Bucle 01 Bucle 02 Caminos 3 1 3 1 3 1 (primero) 1 (segundo) 3 1 (segundo) 1 (primero) 3 15 caminos en total. Cada camino es un objetivo de prueba , es decir, escribiremos al menos una prueba para verificarlo. Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Un objetivo de prueba se puede expresar como un diagrama de actividades sin bifurcaciones . Análisis y diseño de Sistemas - Sesión 1

Resumen Generación de secuencias de acciones. 01, 02, 03, D01(Cancelar) 01, 02, 03, D01(Introducir), D02(Válido), 04 01, 02, 03, D01(Cancelar) 01, 02, 03, D01(Cambiar), 01, 02, D03(Error) Análisis y diseño de Sistemas - Sesión 1

El proceso ETUC Construcción del modelo de comportamiento Generación de secuencias de acciones. Generación de valores de prueba. Construcción del modelo de datos. Partición en categorías. Generación de valores de prueba. Construcción de objetivos de prueba. Resultado: Objetivos de prueba. (pasos + valores de prueba) Generación de objetivos. 1 Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Nombre SR-01. Categorías Informaci ó n específica Nombre Dominio Identificador Entero Descripción Cadena Categoría padre Entero Restricciones El identificador debe ser único. La categoría padre debe existir. Valores inici a les Categoría “Top”. Nombre SR-02. Enlaces. Informaci ó n específica Nombre Dominio Identificador Entero Nombre Cadena Categoría Entero URL Cadena Descripción Cadena Aprobado Boolean Fecha Fecha Restricciones El identificador debe ser único. Todos los campos son obligatorios excepto descripción. Categoría Enlace N.D.T. No están todas las que son. Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Nombre Abr. Dominio Tipo categ o ríaEnlace datosEnlace C E SR-01 SR-02 Infor m ación Infor m ación accionVisitante A {Introducir, cancelar cambiar} Act or listadoCate g orias LC Array de SR-01 Contexto errorCategorías EC {Sin error,….} Contexto Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba El dominio de las variables se “parte” en particiones. ¿Cómo identificamos las categorías?. Valores límite de los dominios. Alternativas del caso de uso / alternativas del modelo de comportamiento. Nombre Categorías categoriaEnlace Dominio (una categoría que engloba todo su dominio) datosEnlace Nombre Descripción Datos correctos Todos los datos del enlace son correctos Datos incorrectos Algún dato del enlace es incorrecto. listadoCategorías Nombre Descripción Lista vacía Ninguna categoría Lista no vacía Al menos una categoría acciónVisitante errorCategoría Una por cada posible valor Una por cada posible valor Es posible aplicar técnicas de cobertura para seleccionar sólo un subconjunto de las categorías posibles. Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Las categorías se añaden al modelo de datos usando UML Testing Profile. Restricción de la categoría. Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Se genera. Al menos, un valor de prueba para cada categoría de una variable información o contexto (si tiene sentido). Nombre Abr. Dominio Tipo ca t eg o r íaEnlace C SR-01 Infor m ación datosEnlace accionVisitante E SR-02 Infor m ación A {Introducir, cancelar cambiar} Actor listadoCategorias LC Arr a y de SR-01 Contexto errorCa tegorías EC {Sin err o r,….} Co ntexto Análisis y diseño de Sistemas - Sesión 1

Resumen Generación de valores de prueba. Identificador = * Nombre = < vacío > Categoría = 1 URL = www.vacio.com Descripción = Enlace vacío Fecha = * «partition» enlace02 : EnlaceConNombreVacio Identificador = * Nombre = prueba Categoría = 1 URL = < vacía > Descripción = Enlace con URL vacía Fecha = * «partition» enlace03 : EnlaceConURLVacia Identificador = * Nombre = CodeCharge Categoría = 1 URL = www.codecharge.com Descripción = Revolutionizing the way you code. Fecha = * enlace01 : Enlace listaVacía : ListadoCategorías Identificador = 1 Descripción = Categoría Top Padre = 1 top : Categoría 1 * listaNoVacía : ListadoCategorías Análisis y diseño de Sistemas - Sesión 1

El proceso ETUC Construcción del modelo de comportamiento Generación de secuencias de acciones. Generación de valores de prueba. Construcción de objetivos de prueba. 1. Combinación de secuencias de ejecución con valores de prueba. Resultado: Objetivos de prueba. (pasos + valores de prueba) Generación de objetivos. 1 Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Relación entre decisiones y variables. Decisión Ramas y variables D01 (1) accionVisitante = IntroducirEnlace accionVisitante = Cancelar accionVisitante = CambiarCategoría D02 datosEnlace = EnlaceCorrecto datosEnlace = EnlaceConURLVacia o EnlaceConNombreVacio D03 listadoCategorías = NoVacío listadoCategorías = Vacío Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba A continuación se calculan las instancias de las variables . Una instancia es una realización concreta de una variable. Las instancias son necesarias puesto que podemos pasar más de una vez por una mismas decisión y pueden tener distintos valores las variables implicadas. 2 Cada vez, el visitante decide lo que quiere hacer. Necesitamos dos instancias. Cada vez, el visitante decide lo que quiere hacer. Necesitamos dos instancias. Análisis y diseño de Sistemas - Sesión 1

Paso opcional Cálculo de combinaciones de valores de prueba válidas Análisis y diseño de Sistemas - Sesión 1

Cálculo de combinaciones de valores Objetivo: Calcular combinaciones de valores válidas para las instancias de variables operacionales. Motivación: Asegurarnos que todas las combinaciones de valores Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Instancias de variables. Decisión Instancias D01 Acción visitante 1(AV1) Acción visitante 2 (AV2) D02 Datos enlace 1 (DE1) Datos enlace 2 (DE2) D03 (1) Listado de categorías (LC) Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Reglas para cálculo de restricciones: Si una variable toma un valor que evita otra decisión, la variable asociada no tiene valor. Si una variable toma un valor que termina el caso de uso, el resto de variables no tiene valor. Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Podemos obtener todas las combinaciones válidas de todas las instancias mediante un sencillo script. // Accion del visitante String [] AV = {"IntroducirEnlace", "Cancelar", "CambiarCategoria"}; String [] AV2 = {"IntroducirEnlace", "Cancelar"}; // Listado de categorías String [] LC = {"Vacía", "NoVacía"}; // Datos del enlace String [] DE = {"Correcto", "NombreVacio", "URLVacía"}; String [] DE2 = {"Correcto"}; int id = 0; ng t m p; Stri for f if (av1 == "IntroducirEnlace") lc1 = "*"; if (av1 == "Cancelar") lc1 = de1 = av2 = de2 = "*"; if (av1 != "CambiarCategoria") lc1 = "*"; if (av1 == "CambiarCategoria") de1 = "*"; (mav1 : AV) { or (mlc1 : LC) { if (lc1 == "Vacía") for (mde1 : DE) { de1 = av2 = de2 = "*"; for (mav2 : AV2) { for (mde2 : DE2) { if (de1 == "Correcto") av2 = de2 = "*"; // Condición 4. if (av2 == "Cancelar") de2 = "*"; // Mostrar combinación } } } } } } Script en acción. Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba AV1 LC1 DE1 AV2 LC2 1 IntroducirEnlace * Correcto * * 2 IntroducirEnlace * NombreVacio IntroducirEnlace Correcto 3 IntroducirEnlace * NombreVacio Cancelar * 4 IntroducirEnlace * URLVacÍa IntroducirEnlace Correcto 5 IntroducirEnlace * URLVacÍa Cancelar * 6 Cancelar * * * * 7 CambiarCategoria VacÍa * * * 8 CambiarCategoria NoVacÍa * IntroducirEnlace Correcto 9 CambiarCategoria NoVacÍa * Cancelar * Combinamos los valores de prueba con los objetivos. Un mismo objetivo podría ejecutarse varias veces con distintos valores de prueba. Decisión Instancias D01 (1) Acción visitante 1(AV1) (2) Acción visitante 2 (AV2) D02 (1) Datos enlace 1 (DE1) (2) Datos enlace 2 (DE2) D03 (1) Listado de categorías (LC) 01 -> 02 -> 03 -> D1(1) -> D2(1) -> 04 Objetivo de prueba. Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Conclusiones: Bastante difícil de desarrollar. El orden en que las variables toman valores y se evalúan las restricciones es muy importante (y no siempre obvio). Muy poco escalable (caso práctico del correo). Análisis y diseño de Sistemas - Sesión 1

Paso opcional Fin Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Combinamos los valores de prueba con los objetivos. Un mismo objetivo podría ejecutarse varias veces con distintos valores de prueba. 01, 02, 03, D01(Cancelar) Decisión Ramas y variables D01 (1) accionVisitante = IntroducirEnlace (2) accionVisitante = Cancelar (3) accionVisitante = CambiarCategoría D02 (1) datosEnlace = EnlaceCorrecto (2) datosEnlace = EnlaceConURLVacia o EnlaceConNombreVacio D03 (1) listadoCategorías = NoVacío (2) listadoCategorías = Vacío Análisis y diseño de Sistemas - Sesión 1

Objetivos de prueba Resultado final: Objetivo (Este objetivo es el camino principal del caso de uso. : 01 -> 02 -> 03 -> D1(1) -> D2(1) -> 04 Descripción: El visitante solicita introducir un enlace. El sistema pide los datos del enlace. El visitante introduce la información del enlace (datosEnlace) D1(1). El visitante selecciona la opción de introducir un enlace. D2(1). Los datos del enlace son correctos. El sistema almacena el enlace. Datos de prueba: datosEnlace = enlace01 acciónVisitante = IntroducirEnlace Resultado esperado: No se especifica en el caso de uso. Sin embargo, este objetivo no se implementa de manera automática. Análisis y diseño de Sistemas - Sesión 1

Procesos e información Una visión global Proceso ETUC. Análisis y diseño de Sistemas - Sesión 1

Generación de pruebas abstractas Análisis y diseño de Sistemas - Sesión 1

Pruebas abstractas Al intentar escribir una prueba nos surgen varias dudas: ¿Cómo será la interfaz del sistema? ¿Cómo interactuamos con dicha interfaz?. ¿Cómo comprobamos si la prueba se superó con éxito?. ¿En que estado debe estar el sistema antes de iniciar la prueba?. Análisis y diseño de Sistemas - Sesión 1

Pruebas abstractas Definición de interfaces abstractas. Construcción de casos de prueba abstractos. Selección del metamodelo de componentes GUI. Definición de las interfaces abstractas. Construcción de árbitros. Resultado: Pruebas abstractas. (acciones sobre un interfaz + valores de prueba + resultado esperado) Generación de pruebas abstractas. 2 Análisis y diseño de Sistemas - Sesión 1

Pruebas abstractas Interfaz abstracta: descripción cualitativa de las interfaces de usuario. Componente de interfaz abstracta: abstracción de un componente de la interfaz de usuario. Existen varios. A continuación veremos uno ad-hoc para sistemas web. Existen varios. A continuación veremos uno ad-hoc para sistemas web. También podemos utilizar modelos de análisis, diseño, prototipos, etc.. También podemos utilizar modelos de análisis, diseño, prototipos, etc.. Análisis y diseño de Sistemas - Sesión 1

Pruebas abstractas Un modelo de interfaz abstracta. Con este modelo construimos la interfaz y los elementos necesarios. Con este modelo construimos la interfaz y los elementos necesarios. Independiente de una aplicación web o de escritorio. Independiente de una aplicación web o de escritorio. Análisis y diseño de Sistemas - Sesión 1

Pruebas abstractas Actividades candidatas: Las actividades del sistema que tengan una transición hacia una actividad del actor, o viceversa. En las actividades que dan por terminado el caso de uso En decisiones gobernadas por variables de tipo actor. Actividades que muestran información al actor. Construcción de la interfaz Análisis y diseño de Sistemas - Sesión 1

Pruebas abstractas El sistema debe disponer de una pantalla y componentes para solicitar introducir un enlace. El sistema debe disponer de una pantalla y componentes para solicitar introducir un enlace. El sistema debe disponer una pantalla y componentes para introducir la información del enlace. El sistema debe disponer una pantalla y componentes para introducir la información del enlace. El sistema debe disponer de una pantalla de error. El sistema debe disponer de una pantalla de error. Construcción de la interfaz El sistema debe disponer de componentes para poder cambiar la categoría y cancelar. El sistema debe disponer de componentes para poder cambiar la categoría y cancelar. Análisis y diseño de Sistemas - Sesión 1

Pruebas abstractas El sistema debe disponer una pantalla y componentes para introducir la información del enlace. El sistema debe disponer una pantalla y componentes para introducir la información del enlace. Construcción de la interfaz El sistema debe disponer de componentes para poder cambiar la categoría y cancelar. El sistema debe disponer de componentes para poder cambiar la categoría y cancelar. Análisis y diseño de Sistemas - Sesión 1

Pruebas abstractas Una idea de la interfaz: No muestra todos los elementos, sólo los relevantes para las pruebas. Análisis y diseño de Sistemas - Sesión 1

Pruebas abstractas Construcción de la interfaz Análisis y diseño de Sistemas - Sesión 1

El proceso ETUC Definición de interfaces abstractas. Construcción de casos de prueba abstractos. 1. Construcción de casos de prueba abstractos. Construcción de árbitros. Resultado: Pruebas abstractas. (acciones sobre un interfaz + valores de prueba + resultado esperado) Generación de pruebas abstractas. 2 Análisis y diseño de Sistemas - Sesión 1

Pruebas abstractas Sistema.

Pruebas abstractas Instrucción Descripción ClickOn(component) Representa una pulsación con el botón izquierdo sobre el componente indicado SetField(field, value) Asigna al campo el valor indicado. Select(list, element) Select(list, index) Selecciona el elemento de la lista indicado. Se pueden añadir nuevas instrucciones fácilmente. Lenguaje para pruebas abstractas Análisis y diseño de Sistemas - Sesión 1

Pruebas abstractas ClickOn(insertar) ClickOn(cancelar) ClickOn(categoría) ClickOn(añadirEnlaceAction) SetField(nombreField, enlace01.nombre) SetField(URLField, enlace01.URL) SetField(descripcionField, enlace01.descripcion) Análisis y diseño de Sistemas - Sesión 1

Pruebas abstractas ClickOn(insertar) ClickOn(cancelar) ClickOn(categoría) ClickOn(añadirEnlaceAction) SetField(nombreField, enlace01.nombre) SetField(URLField, enlace01.URL) SetField(descripcionField, enlace01.descripcion) Análisis y diseño de Sistemas - Sesión 1

Pruebas abstractas ClickOn(añadirEnlaceAction) SetField(nombreField, enlace01.nombre) SetField(URLField, enlace01.URL) SetField(descripcionField, enlace01.descripcion) ClickOn(insertar) Ejemplo de caso de prueba abstracto. ClickOn(añadirEnlaceAction) ... ClickOn(cancelar) Los valores de una variable de tipo actor se codifican como variantes de la secuencia de ejecución de una prueba. Análisis y diseño de Sistemas - Sesión 1

Pruebas abstractas ClickOn(añadirEnlaceAction) SetField(nombreField, enlace01.nombre) SetField(URLField, enlace01.URL) SetField(descripcionField, enlace01.descripcion) ClickOn(insertar) Modelo de interacción. Análisis y diseño de Sistemas - Sesión 1

Pruebas abstractas Este proceso se podría aplicar a una herramienta concreta. ¿Por qué usamos un lenguaje abstracto en lugar de un lenguaje concreto? Nos abstrae de la interfaz y de detalles de muy bajo nivel. Si la interfaz no está estable o cambia (probable) no hay que cambiar la prueba. En un lenguaje abstracto las pruebas son las mismas independientemente de que usemos HTML, AJAX o Flash. En un lenguaje concreto, no. Análisis y diseño de Sistemas - Sesión 1

Resumen Sistema. ClickOn(añadirEnlaceAction) SetField(nombreField, enlace01.nombre) SetField(URLField, enlace01.URL) SetField(descripcionField, enlace01.descripcion) ClickOn(insertar) Análisis y diseño de Sistemas - Sesión 1

El proceso ETUC Definición de interfaces abstractas. Construcción de casos de prueba abstractos. Construcción de árbitros. Identificación de los puntos de verificación y resultados esperados. Construcción de los árbitros. Combinación de árbitros y pruebas abstractas Resultado: Pruebas abstractas. (acciones sobre un interfaz + valores de prueba + resultado esperado) Generación de pruebas abstractas. 2

Pruebas abstractas Un árbitro nos indica si la prueba se ha superado o no. Un árbitro comprueba el estado de los componentes de la interfaz de usuario. Necesitamos saber los árbitros que pondremos en nuestras pruebas y un lenguaje para definirlos. El proceso y el lenguaje para definir un arbitro es similar al de construcción de las interacciones. El proceso y el lenguaje para definir un arbitro es similar al de construcción de las interacciones.

Pruebas abstractas Las pruebas cuentan con dos tipos de validaciones: Ejecución estricta de las instrucciones. 2. Satisfacción de árbitros. ClickOn(añadirEnlaceAction) SetField(nombreField, enlace01.nombre) SetField(URLField, enlace01.URL) SetField(descripcionField, enlace01.descripcion) ClickOn(insertar) Si alguna de estas instrucciones no se puede ejecutar, la prueba falla.

Pruebas abstractas Un punto de verificación es una actividad (generalmente del sistema) donde definiremos un árbitro para realizar comprobaciones sobre la interfaz. Un punto de verificación es una actividad (generalmente del sistema) donde definiremos un árbitro para realizar comprobaciones sobre la interfaz. La prueba verifica que se produce el resultado esperado. La prueba verifica que está en la pantalla correcta. La prueba verifica que está en la pantalla correcta. La prueba verifica que el mensaje de error es el correcto

Pruebas abstractas Estos asertos comprueban estados de la interfaz. Lenguaje para definir árbitros. Instrucción Descripción Assert(component.attribute, value) Verifica que el atributo del componente indicado coincide con el valor. AssertTable(table, index, GUIObject) Verifica que la fila indicada por index de la tabla contiene todos los atributos del objeto en el mismo orden y con el mismo valor. AssertText(Text) Verifica que la página contiene el texto indicado y que este texto es visible para los actores. Screen(GUIScreen) Verifica que la pantalla que muestra el sistema coincide con la pantalla indicada Se pueden añadir nuevas instrucciones fácilmente.

Pruebas abstractas Screen(linkScreen) Screen(actionScreen) Screen(linkScreen) Screen(errorMsg) Assert(errorMsg.text, err_msg) Ejemplo de árbitro.

Pruebas abstractas SetField(nombreField, enlace01.nombre) SetField(URLField, enlace01.URL) SetField(descripcionField, enlace01.descripcion) Prueba abstracta + árbitro. ClickOn(añadirEnlaceAction) Screen(actionScreen) Screen(linkScreen) ClickOn(insertar) ¿?

Resumen Objetivo: 01 -> 02 -> 03 -> D1(1) -> D2(1) -> 02 -> 03 -> D1(1) -> D2(1) -> 04 Se introduce un enlace incorrecto y, después, un enlace correcto) Acctiones: Screen(actionScreen) ClickOn(añadirEnlaceAction) Screen(linkScreen) SetField(nombreField, enlace02.nombre) SetField(URLField, enlace02.URL) SetField(descripcionField, enlace02.descripcion) ClickOn(insertar) Sreen(errorMsg) Assert(errorMsg.text, err_msg) Screen(linkScreen) SetField(nombreField, enlace01.nombre) SetField(URLField, enlace01.URL) SetField(descripcionField, enlace01.descripcion) ClickOn(insertar) ¿? Datos de prueba: datosEnlace01 = enlace02 datosEnlace02 = enlace01 acciónVisitante01 = IntroducirEnlace acciónVisitante02 = IntroducirEnlace Resultado esperado: No se especifica en el caso de uso. Ejemplo de caso de prueba. El caso de uso no indica el resultado. En este caso podemos buscar otros artefactos, como mapas de navegación, o esperar a que el sistema esté construido.

Procesos e información Una visión global Proceso ETUC.

Generación de pruebas ejecutables

Selección de la herramienta / plataforma de pruebas. Definición de la arquitectura de prueba. Traducción de las pruebas, valores de prueba y árbitros a código ejecutable. Codificación de los test harness. El proceso ETUC Construcción de casos de prueba ejecutables. Resultado: Código ejecutable. (acciones sobre un interfaz + valores de prueba + resultado esperado) Arquitectura de prueba. Generación de pruebas ejecutables. 2

Pruebas ejecutables Ya tenemos la interfaz de usuario:

Herramienta de prueba. Pruebas concretas Ya podemos implementar y ejecutar las pruebas: Objetivo: 01 -> 02 -> 03 -> D1(1) -> D2(1) -> 02 -> 03 -> D1(1) -> D2(1) -> 04 Se introduce un enlace incorrecto y, después, un enlace correcto) Acctiones: Screen(actionScreen) ClickOn(añadirEnlaceAction) Screen(linkScreen) SetField(nombreField, enlace02.nombre) SetField(URLField, enlace02.URL) SetField(descripcionField, enlace02.descripcion) ClickOn(insertar) Sreen(errorMsg) Assert(errorMsg.text, err_msg) Screen(linkScreen) SetField(nombreField, enlace01.nombre) SetField(URLField, enlace01.URL) SetField(descripcionField, enlace01.descripcion) ClickOn(insertar) ¿? Datos de prueba: datosEnlace01 = enlace02 datosEnlace02 = enlace01 acciónVisitante01 = IntroducirEnlace acciónVisitante02 = IntroducirEnlace Resultado esperado: No se especifica en el caso de uso. Ya sabemos el resultado: volver a la pantalla princip a tionScreen) Screen(ac

Pruebas concretas Selenium (URL). JWebUnit (http://jwebunit.sourceforge.net) . Canoo WebTest (URL). Herramientas de prueba para interfaces web: Open-source Java (Selenium multilenguaje) Maduras

Pruebas concretas Arquitectura de pruebas: No va a ser necesario codificar ningún TestHarness adicional .

Pruebas concretas Traducción de los valores de prueba: public class Link { private String name; private String URL; private String description; public String getName() { return this.name; } public String getURL() { return this.URL; } public String getDescription() {return this.description; } public static Link GetEnlace01() { Link e01 = new Link(); e01.name = "CodeCharge"; e01.URL = "www.CodeCharge.com"; e01.description = "Revolutionizin the way you code"; return e01; } }

Pruebas concretas Interfaz abstracta Interfaz concreta No se si voy a terminar esto.

Screen(actionScreen) ClickOn(añadirEnlaceAction) Screen(linkScreen) SetField(nombreField, enlace01.nombre) SetField(URLField, enlace01.URL) SetField(descripcionField, enlace01.descripcion) ClickOn(insertar) Pruebas concretas Traducción de secuencias de ejecución y árbitros: public void testInsertarEnlaceCorrecto() { beginAt("/Default.jsp"); assertTitleEquals("Links"); assertLinkPresentWithImage("images/home.gif"); assertLinkPresentWithImage("images/add.gif"); assertLinkPresentWithImage("images/admin.gif"); assertTextPresent("Search"); assertTextPresent("Description"); // 2. Pulsamos en el enlace de añadir nuevo enlace clickLinkWithImage("images/add.gif"); // 4. Rellenamos el formulario con los valores de prueba assertTitleEquals("Links"); setFormElement("name", enlace.getName()); setFormElement("link_url", enlace.getURL()); setFormElement("description", enlace.getDescription()); System.out.println("Adding: \n" + enlace.getName() + "\n" + enlace.getURL() + "\n" + enlace.getDescription() ); // 5. Pulsamos aceptar submit(); // 6. Comprobamos que hemos vuelto a la página principal assertFormPresent(); assertLinkPresentWithImage("images/home.gif"); assertLinkPresentWithImage("images/add.gif"); assertLinkPresentWithImage("images/admin.gif"); assertTextPresent("Search"); assertTextPresent("Description"); }

Conclusiones

Conclusiones Carencias en ETUC: Estado del sistema. Mejorar nuestras herramientas.

Conclusiones Más casos prácticos en ….

Objetivos de prueba Generación de objetivos. 1 2 Generar objetivos de prueba a partir del modelo de comportamiento. Tres pasos para obtener objetivos de prueba: 3 Obtener variables y valores de prueba para los escenarios.

Autoevaluación Sesión 11

Pregunta 1 ¿Cuál es el objetivo principal del diseño de casos de uso de prueba? Identificar los diferentes métodos de prueba disponibles Definir los escenarios que se deben probar en un sistema o aplicación Evaluar el rendimiento del sistema en condiciones de carga

Pregunta 2 ¿Qué son los métodos de prueba aplicables a nivel de clase? Técnicas para probar la interacción entre diferentes clases en un sistema Pruebas de aceptación realizadas por usuarios finales Pruebas individuales de cada clase o componente del sistema

El diseño de casos de uso de prueba implica identificar los diferentes escenarios que se deben probar en un sistema o aplicación. Los métodos de prueba aplicables a nivel de clase se centran en probar individualmente cada clase o componente del sistema. El diseño de casos de prueba a nivel de clase implica definir los inputs, condiciones y resultados esperados para cada método o función de una clase

Aplicando lo aprendido: Ver Guía de Laboratorio de la Sesión

Fue n t es de I n f or m aci ó n VILLADA, J. Desarrollo y optimización de componentes software para tareas administrativas de sistemas [en línea]. Antequera (España): IC Editorial, 2016. Disponible en: https://www.digitaliapublishing.com/a/86848 COQUE, S. y LOHANA, L. Investigaciones sobre ingeniería de software [en línea]. Editorial Abya-Yala, 2017. Disponible en: Digitalia, https://www.digitaliapublishing.com/a/58977