Está en la página 1de 96

De los casos de uso a los casos de prueba

Caso prctico. Aplicacin web Javier Gutirrez / javierj@us.es

Objetivo
Objetivo: Mostrar cmo Objetivo: Mostrar cmo aplicar el proceso ETUC aplicar el proceso ETUC para la generacin de casos para la generacin de casos de prueba a una aplicacin de prueba a una aplicacin web real. web real.

ndice
1. 2. 3. 4. 5. Aplicacin Web-Link. Generacin de objetivos de prueba. Pruebas abstractas. Pruebas concretas. Conclusiones.

Aplicacin Web-Link

Aplicacin Web-Link
Un sistema para guardar y mostrar un catlogo de enlaces en lnea. Los enlaces se agrupan en categoras. Cualquier visitante puede aadir nuevos enlaces o consultar los enlaces almacenados.

Aplicacin Web-Link

Necesitamos la definicin de los casos de uso.

Aplicacin Web-Link
Nombre Precondicin Secuencia principal UC-01. Aadir nuevo enlace. No 1 El visitante solicita aadir un nuevo enlace. 2 El sistema solicita la informacin del enlace (SR-02). 3 El visitante introduce la informacin del nuevo enlace. 4 El sistema almacena el nuevo enlace. 3.1.i El visitante cancela la operacin y este caso de uso termina. 3.2.i Si el visitante desea cambiar la categora, se ejecuta el caso de uso Cambiar categora y se repite el paso 2. 4.1.p Si el nombre del enlace o su URL estn vacos, el sistema muestra un mensaje de error y se repite el paso 2. Nuevo enlace aadido al sistema. Por defecto, el sistema selecciona la categora Top para el nuevo enlace.
Nombre Precondicin Secuencia principal

Error / Secuencias alternativas

Necesitamos ms informacin: Qu es un enlace?, qu es una categora?.

Post-condicin Notas

Una extensin a NDT: i. Preevaluada. p. Postevaluadoa.

Error / Secuencias alternativas Post-condicin

UC-02. Cambiar categora. El visitante est introduciendo un enlace 1 El visitante solicita cambiar la categora. 2 El sistema muestra todas las categoras disponibles. 3 El usuario selecciona una categora. 4 El sistema modifica la categora del nuevo enlace. 2.1.i Si no hay ninguna categora o el sistema no puede recuperar las categoras, se muestra un mensaje de error y el caso de uso termina. No.

Aplicacin Web-Link
Categora
Nombre Informacin especfica SR-01. Categoras Nombre Dominio Identificador Entero Descripcin Cadena Categora padre Entero El identificador debe ser nico. La categora padre debe existir. Categora Top.

Restricciones Valores iniciales

Los requisitos de informacin describen los datos del mundo real que nuestro sistema debe utilizar.

Enlace
Nombre Informacin especfica SR-02. Enlaces. Nombre Dominio Identificador Entero Nombre Cadena Categora Entero URL Cadena Descripcin Cadena Aprobado Boolean Fecha Fecha El identificador debe ser nico. Todos los campos son obligatorios excepto descripcin.

Restricciones

Procesos e informacin
Una visin global

Proceso ETUC.

Generacin de objetivos de prueba

El proceso ETUC
1

Generacin de objetivos.

Construccin del modelo de comportamiento


1. 2. 3. Construccin del modelo de comportamiento. Resolucin de inclusiones y extensiones. Identificacin de variables operacionales.

Generacin de secuencias de acciones. Generacin de valores de prueba. Resultado: Objetivos de prueba. (pasos + valores de prueba) Construccin de objetivos de prueba.

Objetivos de prueba
Nombre Precondicin Secuencia principal Error / Secuencias alternativas UC-01. Aadir nuevo enlace. No 1 El visitante solicita aadir un nuevo enlace. 2 El sistema solicita la informacin del enlace (SR-02). 3 El visitante introduce la informacin del nuevo enlace. 4 El sistema almacena el nuevo enlace. 3.1.i El visitante cancela la operacin y este caso de uso termina. 3.2.i Si el visitante desea cambiar la categora, se ejecuta el caso de uso Cambiar categora y este caso de uso continua.. 4.1.p Si el nombre del enlace o su URL estn vacos, el sistema muestra un mensaje de error y solicita de nuevo la informacin del enlace. Nuevo enlace aadido al sistema. Por defecto, el sistema selecciona la categora Top para el nuevo enlace.

El caso de uso se representa mediante un diagrama de actividades.

Post-condicin Notas

Las actividades se clasifican segn las realicen los actores o el sistema.

Construccin del modelo de comportamiento.


Secuencia alternativa:
Secuencia Principal 1. The [Actor] . 2. The system.. 3. The [Actor] . 4. The system.. 3.1.p. If [Condicin], then [Accin] and [Resultado]. 3.1.i. At any time [Condicin], then [Accin] and [Resultado].

Errores / alternativas

Tres tipos de resultados:


Terminar el caso de uso. Continuar el caso de uso. Repetir / ir a otro paso del caso de uso.

Objetivos de prueba
Nombre Precondicin Secuencia principal Error / Secuencias alternativas UC-01. Aadir nuevo enlace. No 1 El visitante solicita aadir un nuevo enlace. 2 El sistema solicita la informacin del enlace (SR-02). 3 El visitante introduce la informacin del nuevo enlace. 4 El sistema almacena el nuevo enlace. 3.1.i El visitante cancela la operacin y este caso de uso termina. 3.2.i Si el visitante desea cambiar la categora, se ejecuta el caso de uso Cambiar categora y este caso de uso continua.. 4.1.p Si el nombre del enlace o su URL estn vacos, el sistema muestra un mensaje de error y solicita de nuevo la informacin del enlace. Nuevo enlace aadido al sistema. Por defecto, el sistema selecciona la categora Top para el nuevo enlace.

Post-condicin Notas

1. Cada paso de la secuencia principal es una actividad. 2. Cada paso de la secuencia alternativa es una decisin (y, a veces, ms actividades).

Objetivos de prueba
Nombre Precondicin Secuencia principal Error / Secuencias alternativas UC-01. Aadir nuevo enlace. No 1 El visitante solicita aadir un nuevo enlace. 2 El sistema solicita la informacin del enlace (SR-02). 3 El visitante introduce la informacin del nuevo enlace. 4 El sistema almacena el nuevo enlace. 3.1.i El visitante cancela la operacin y este caso de uso termina. 3.2.i Si el visitante desea cambiar la categora, se ejecuta el caso de uso Cambiar categora y este caso de uso continua.. 4.1.p Si el nombre del enlace o su URL estn vacos, el sistema muestra un mensaje de error y solicita de nuevo la informacin del enlace. Nuevo enlace aadido al sistema. Por defecto, el sistema selecciona la categora Top para el nuevo enlace.

Nombre Precondicin Secuencia principal

Post-condicin Notas

Error / Secuencias alternativas Post-condicin

UC-02. Cambiar categora. El visitante est introduciendo un enlace 1 El visitante solicita cambiar la categora. 2 El sistema muestra todas las categoras disponibles. 3 El usuario selecciona una categora. 4 El sistema modifica la categora del nuevo enlace. 2.1.i Si no hay ninguna categora o el sistema no puede recuperar las categoras, se muestra un mensaje de error y el caso de uso termina. No.

Objetivos de prueba

Objetivos de prueba
Qu puede cambiar entre 2 ejecuciones del mismo caso de uso?. Qu informacin debe suministrar el visitante/prueba al sistema?. Qu informacin suministra el sistema al visitante/prueba Variable Operacional: Cualquier cosa que puede cambiar entre dos ejecuciones de un mismo caso de uso.

Objetivos de prueba
Nombre Precondicin Secuencia principal UC-01. Aadir nuevo enlace. No 1 El visitante solicita aadir un nuevo enlace. 2 El sistema solicita la informacin del enlace (SR-02). 3 El visitante introduce la informacin del nuevo enlace. 4 El sistema almacena el nuevo enlace. 3.1.i El visitante cancela la operacin y este caso de uso termina. 3.2.i Si el visitante desea cambiar la categora, se ejecuta el caso de uso Cambiar categora y este caso de uso continua.. 4.1.p Si el nombre del enlace o su URL estn vacos, el sistema muestra un mensaje de error y solicita de nuevo la informacin del enlace. Nuevo enlace aadido al sistema. Por defecto, el sistema selecciona la categora Top para el nuevo enlace.

nuevoEnlace accinVisitante listadoCategoras categoraSeleccionada errorListandoCategora

Error / Secuencias alternativas

Post-condicin Notas

Nombre Precondicin Secuencia principal

Error / Secuencias alternativas Post-condicin

UC-02. Cambiar categora. El visitante est introduciendo un enlace 1 El visitante solicita cambiar la categora. 2 El sistema muestra todas las categoras disponibles. 3 El visitante selecciona una categora. 4 El sistema modifica la categora del nuevo enlace. 2.1.i Si no hay ninguna categora o el sistema no puede recuperar las categoras, se muestra un mensaje de error y el caso de uso termina. No.

En este caso, no hay ningn resultado que se exprese como una variable.

Objetivos de prueba
Relacin entre las actividades y las variables op.

accinVisitante

nuevoEnlace

listadoCategoras

categoraSeleccionada

Objetivos de prueba
Listado de variables operacionales.
Nombre categoraEnlace datosEnlace accionVisitante listadoCategorias errorCategoras Abr. C E A LC EC Dominio SR-01 SR-02 {Introducir, cancelar cambiar} Array de SR-01 {Sin error,.} Tipo Informacin Informacin Actor Contexto Contexto

Informacin: Datos que el actor suministra al sistema. Actor: Acciones que el actor realiza sobre el sistema. Contexto: Informacin dependiente del estado del sistema.

Resumen
Construccin del modelo de comportamiento

Nombre categoraEnlace datosEnlace accionVisitante listadoCategorias errorCategoras

Abr. C E A LC EC

Dominio SR-01 SR-02 {Introducir, cancelar cambiar} Array de SR-01 {Sin error,.}

Tipo Informacin Informacin Actor Contexto Contexto

El proceso ETUC
1

Generacin de objetivos. Construccin del modelo de comportamiento Generacin de secuencias de acciones.


1. 2. Seleccin de criterios de cobertura y recorrido. Recorrido del modelo de comportamiento.

Generacin de valores de prueba. Resultado: Objetivos de prueba. (pasos + valores de prueba) Construccin de objetivos de prueba.

Cobertura
Cobertura: Cantidad de cdigo verificada por las pruebas .
La cobertura es: - Qu seleccionamos y qu dejamos fuera. - Medida de la cantidad que estamos probando. La seleccin se aplica en varios momentos: - Seleccionando casos de uso. - Seleccionando valores de prueba. - Seleccionando recorridos en el modelo de comportamiento, etc

Pero nosotros no estamos probando cdigo. Necesitamos una nueva definicin.


Cobertura: Nmero de escenarios del caso de uso verificado por las pruebas .

Cobertura de las pruebas


Criterios internos Criterios externos

Nmero de pasos. Actores participantes. Nmero de alternativas.

Prioridad. Estabilidad. Relevancia. Riesgo.

Cobertura de las pruebas


Ejemplo de criterio de cobertura.
Prioridad 0 1 2 3 4 5 Cobertura No se genera ninguna prueba a partir del caso de uso. La accin principal. La 1 y todas las alternativas que dependan de la accin de los actores. La 2 y todos los errores que dependan de la accin de los actores. La 3 y todas las alternativas que dependan del estado del sistema. La 4 y todos los errores que dependan del estado del sistema.

Cobertura = Escenarios seleccionados / Escenarios totales

Objetivos de prueba
Seleccin de un algoritmo de recorrido.

Todos los nodos (actividades / desiciones). Todas las transiciones. Todas las decisiones y alternativas. Todos los escenarios
Todos los escenarios para 0 o 1 repeticiones de bucles.

Objetivos de prueba
Calculamos todos los posibles caminos (recorremos todos los nodos y transiciones).

Vamos a encontrar 15 caminos diferentes.

Objetivos de prueba

Dos bucles sin nmero de repeticin definido.

Objetivos de prueba
Repeticiones

Estudiamos las combinaciones posibles para 0 o 1 repeticin.


3

Bucle 01 0 1 0 1 (primero) 1 (segundo)

Bucle 02 0 0 1 1 (segundo) 1 (primero)

Caminos

Objetivos de prueba
Bucle 01 Repeticiones 0 1 0 1 (primero) 1 (segundo) Bucle 02 0 0 1 1 (segundo) 1 (primero)

Caminos

Objetivos de prueba
Repitiendo esto para todas las combinaciones.
Bucle 01
Repeticiones

Bucle 02 0 0 1 1 (segundo) 1 (primero)

Caminos 3 3 3 3 3

0 1 0 1 (primero) 1 (segundo)

15 caminos en total. Cada camino es un objetivo de prueba, es decir, escribiremos al menos una prueba para verificarlo.

Objetivos de prueba
Un objetivo de prueba se puede expresar como un diagrama de actividades sin bifurcaciones.

Resumen
Generacin de secuencias de acciones.

01, 02, 03, D01(Cancelar) 01, 02, 03, D01(Introducir), D02(Vlido), 04

01, 02, 03, D01(Cancelar) 01, 02, 03, D01(Cambiar), 01, 02, D03(Error)

El proceso ETUC
1

Generacin de objetivos. Construccin del modelo de comportamiento

Generacin de secuencias de acciones.

Generacin de valores de prueba.


1. 2. 3. Construccin del modelo de datos. Particin en categoras. Generacin de valores de prueba.

Resultado: Objetivos de prueba. (pasos + valores de prueba)

Construccin de objetivos de prueba.

Objetivos de prueba
Categora
Nombre Informacin especfica SR-01. Categoras Nombre Dominio Identificador Entero Descripcin Cadena Categora padre Entero El identificador debe ser nico. La categora padre debe existir. Categora Top.

Restricciones Valores iniciales

Enlace
Nombre Informacin especfica SR-02. Enlaces. Nombre Dominio Identificador Entero Nombre Cadena Categora Entero URL Cadena Descripcin Cadena Aprobado Boolean Fecha Fecha El identificador debe ser nico. Todos los campos son obligatorios excepto descripcin.

Restricciones

N.D.T.

No estn todas las que son.

Objetivos de prueba
Nombre categoraEnlace datosEnlace accionVisitante listadoCategorias errorCategoras Abr. C E A LC EC Dominio SR-01 SR-02 {Introducir, cancelar cambiar} Array de SR-01 {Sin error,.} Tipo Informacin Informacin Actor Contexto Contexto

Objetivos de prueba
El dominio de las variables se parte en particiones. Cmo identificamos las categoras?.
Valores lmite de los dominios. Alternativas del caso de uso / alternativas del modelo de comportamiento.
Nombre categoriaEnlace datosEnlace Categoras Dominio (una categora que engloba todo su dominio) Nombre Datos correctos Descripcin Todos los datos del enlace son correctos Datos incorrectos Algn dato del enlace es incorrecto. listadoCategoras Nombre Lista vaca Lista no vaca accinVisitante errorCategora Descripcin Ninguna categora Al menos una categora

Una por cada posible valor Una por cada posible valor

Es posible aplicar tcnicas de cobertura para seleccionar slo un subconjunto de las categoras posibles.

Objetivos de prueba
Las categoras se aaden al modelo de datos usando UML Testing Profile.

Restriccin de la categora.

Objetivos de prueba
Se genera. Al menos, un valor de prueba para cada categora de una variable informacin o contexto (si tiene sentido).
Nombre categoraEnlace datosEnlace accionVisitante listadoCategorias errorCategoras Abr. C E A LC EC Dominio SR-01 SR-02 {Introducir, cancelar cambiar} Array de SR-01 {Sin error,.} Tipo Informacin Informacin Actor Contexto Contexto

Resumen
Generacin de valores de prueba.
enlace01 : Enlace Identificador = * Nombre = CodeCharge Categora = 1 URL = www.codecharge.com Descripcin = Revolutionizing the way you code. Fecha = * partition enlace02 : EnlaceConNombreVacio Identificador = * Nombre = < vaco > Categora = 1 URL = www.vacio.com Descripcin = Enlace vaco Fecha = * partition enlace03 : EnlaceConURLVacia Identificador = * Nombre = prueba Categora = 1 URL = < vaca > Descripcin = Enlace con URL vaca Fecha = *

listaVaca : ListadoCategoras

listaNoVaca : ListadoCategoras 1 *

top : Categora Identificador = 1 Descripcin = Categora Top Padre = 1

El proceso ETUC
Construccin del modelo de comportamiento
1

Generacin de objetivos. Generacin de secuencias de acciones.

Generacin de valores de prueba.

Construccin de objetivos de prueba. Resultado: Objetivos de prueba. (pasos + valores de prueba)


1. Combinacin de secuencias de ejecucin con valores de prueba.

Objetivos de prueba
Relacin entre decisiones y variables.
Decisin D01 Ramas y variables (1) accionVisitante = IntroducirEnlace (2) accionVisitante = Cancelar (3) accionVisitante = CambiarCategora (1) datosEnlace = EnlaceCorrecto (2) datosEnlace = EnlaceConURLVacia o EnlaceConNombreVacio (1) listadoCategoras = NoVaco (2) listadoCategoras = Vaco

D02 D03

Objetivos de prueba
A continuacin se calculan las instancias de las variables. Una instancia es una realizacin concreta de una variable. Las instancias son necesarias puesto que podemos pasar ms de una vez por una mismas decisin y pueden tener distintos valores las variables implicadas.

Cada vez, el visitante decide lo que quiere hacer. Necesitamos dos instancias.

Paso opcional
Clculo de combinaciones de valores de prueba vlidas.

Clculo de combinaciones de valores


Objetivo: Calcular combinaciones de valores vlidas para las instancias de variables operacionales. Motivacin: Asegurarnos que todas las combinaciones de valores

Objetivos de prueba
Instancias de variables.

Decisin D01 D02 D03

Instancias (1) Accin visitante 1(AV1) (2) Accin visitante 2 (AV2) (1) Datos enlace 1 (DE1) (2) Datos enlace 2 (DE2) (1) Listado de categoras (LC)

Objetivos de prueba
Reglas para clculo de restricciones:
1. Si una variable toma un valor que evita otra decisin, la variable asociada no tiene valor. 2. Si una variable toma un valor que termina el caso de uso, el resto de variables no tiene valor.

Objetivos de prueba
Podemos obtener todas las combinaciones vlidas de todas las instancias mediante un sencillo script.
// Accion del visitante String [] AV = {"IntroducirEnlace", "Cancelar", "CambiarCategoria"}; String [] AV2 = {"IntroducirEnlace", "Cancelar"}; // Listado de categoras String [] LC = {"Vaca", "NoVaca"}; // Datos del enlace String [] DE = {"Correcto", "NombreVacio", "URLVaca"}; String [] DE2 = {"Correcto"}; int id = 0; String tmp; for (mav1 : AV) { for (mlc1 : LC) { for (mde1 : DE) { for (mav2 : AV2) { for (mde2 : DE2) { if (av1 == "IntroducirEnlace") lc1 = "*"; if (av1 == "Cancelar") lc1 = de1 = av2 = de2 = "*"; if (av1 != "CambiarCategoria") lc1 = "*"; if (av1 == "CambiarCategoria") de1 = "*"; if (lc1 == "Vaca") de1 = av2 = de2 = "*"; if (de1 == "Correcto") av2 = de2 = "*"; // Condicin 4. if (av2 == "Cancelar") de2 = "*"; // Mostrar combinacin } } } }

Script en accin.

Objetivos de prueba
Combinamos los valores de prueba con los objetivos. Un mismo objetivo podra ejecutarse varias veces con distintos valores de prueba.
Objetivo de prueba.

01 -> 02 -> 03 -> D1(1) -> D2(1) -> 04


1 2 3 4 5 6 7 8 9 AV1 IntroducirEnlace IntroducirEnlace IntroducirEnlace IntroducirEnlace IntroducirEnlace Cancelar CambiarCategoria CambiarCategoria CambiarCategoria LC1 * * * * * * Vaca NoVaca NoVaca DE1 Correcto NombreVacio NombreVacio URLVaca URLVaca * * * * AV2 * IntroducirEnlace Cancelar IntroducirEnlace Cancelar * * IntroducirEnlace Cancelar LC2 * Correcto * Correcto * * * Correcto *

Decisin D01 D02 D03

Instancias (1) Accin visitante 1(AV1) (2) Accin visitante 2 (AV2) (1) Datos enlace 1 (DE1) (2) Datos enlace 2 (DE2) (1) Listado de categoras (LC)

Objetivos de prueba
Conclusiones:
Bastante difcil de desarrollar. El orden en que las variables toman valores y se evalan las restricciones es muy importante (y no siempre obvio). Muy poco escalable (caso prctico del correo).

Paso opcional
Fin.

Objetivos de prueba
Combinamos los valores de prueba con los objetivos. Un mismo objetivo podra ejecutarse varias veces con distintos valores de prueba.
01, 02, 03, D01(Cancelar)
Decisin D01 Ramas y variables (1) accionVisitante = IntroducirEnlace (2) accionVisitante = Cancelar (3) accionVisitante = CambiarCategora (1) datosEnlace = EnlaceCorrecto (2) datosEnlace = EnlaceConURLVacia o EnlaceConNombreVacio (1) listadoCategoras = NoVaco (2) listadoCategoras = Vaco

D02

D03

Objetivos de prueba
Resultado final:
Objetivo (Este objetivo es el camino principal del caso de uso.: 01 -> 02 -> 03 -> D1(1) -> D2(1) -> 04 Descripcin: 01. El visitante solicita introducir un enlace. 02. El sistema pide los datos del enlace. 03. El visitante introduce la informacin del enlace (datosEnlace) D1(1). El visitante selecciona la opcin de introducir un enlace. D2(1). Los datos del enlace son correctos. 04. El sistema almacena el enlace. Datos de prueba: datosEnlace = enlace01 accinVisitante = IntroducirEnlace Resultado esperado: No se especifica en el caso de uso.

Sin embargo, este objetivo no se implementa de manera automtica.

Procesos e informacin
Una visin global

Proceso ETUC.

Generacin de pruebas abstractas

Pruebas abstractas
Al intentar escribir una prueba nos surgen varias dudas:
1. Cmo ser la interfaz del sistema? 2. Cmo interactuamos con dicha interfaz?. 3. Cmo comprobamos si la prueba se super con xito?. 4. En que estado debe estar el sistema antes de iniciar la prueba?.

Pruebas abstractas
2

Generacin de pruebas abstractas. Definicin de interfaces abstractas.


1. Seleccin del metamodelo de componentes GUI. 2. Definicin de las interfaces abstractas.

Construccin de casos de prueba abstractos.

Resultado: Pruebas abstractas.


(acciones sobre un interfaz + valores de prueba + resultado esperado)

Construccin de rbitros.

Pruebas abstractas
Interfaz abstracta: descripcin cualitativa de las interfaces de usuario. Componente de interfaz abstracta: abstraccin de un componente de la interfaz de usuario.
Tambin podemos utilizar Tambin podemos utilizar modelos de anlisis, diseo, modelos de anlisis, diseo, prototipos, etc.. prototipos, etc.. Existen varios. A Existen varios. A continuacin veremos uno continuacin veremos uno ad-hoc para sistemas web. ad-hoc para sistemas web.

Pruebas abstractas
Un modelo de interfaz abstracta.

Con este modelo construimos la Con este modelo construimos la interfaz yylos elementos necesarios. interfaz los elementos necesarios.

Independiente de una Independiente de una aplicacin web oode escritorio. aplicacin web de escritorio.

Pruebas abstractas
Construccin de la interfaz Actividades candidatas:
1. Las actividades del sistema que tengan una transicin hacia una actividad del actor, o viceversa. 2. En las actividades que dan por terminado el caso de uso 3. En decisiones gobernadas por variables de tipo actor. 4. Actividades que muestran informacin al actor.

Pruebas abstractas
Construccin de la interfaz
El sistema debe disponer de El sistema debe disponer de una pantalla yycomponentes una pantalla componentes para solicitar introducir un para solicitar introducir un enlace. enlace. El sistema debe disponer una El sistema debe disponer una pantalla yycomponentes para pantalla componentes para introducir la informacin del introducir la informacin del enlace. enlace. El sistema debe disponer de El sistema debe disponer de una pantalla de error. una pantalla de error. El sistema debe disponer de El sistema debe disponer de componentes para poder componentes para poder cambiar la categora yy cambiar la categora cancelar. cancelar.

Pruebas abstractas
Construccin de la interfaz
El sistema debe disponer una El sistema debe disponer una pantalla yycomponentes para pantalla componentes para introducir la informacin del introducir la informacin del enlace. enlace.

El sistema debe disponer de El sistema debe disponer de componentes para poder componentes para poder cambiar la categora yy cambiar la categora cancelar. cancelar.

Pruebas abstractas
Una idea de la interfaz:

No muestra todos los elementos, slo los relevantes para las pruebas.

Pruebas abstractas
Construccin de la interfaz

El proceso ETUC
2

Generacin de pruebas abstractas. Definicin de interfaces abstractas. Construccin de casos de prueba abstractos.
1. Construccin de casos de prueba abstractos.

Construccin de rbitros. Resultado: Pruebas abstractas.


(acciones sobre un interfaz + valores de prueba + resultado esperado)

Pruebas abstractas
Sistema.

Pruebas abstractas
Lenguaje para pruebas abstractas
Instruccin ClickOn(component) SetField(field, value) Select(list, element) Select(list, index) Descripcin Representa una pulsacin con el botn izquierdo sobre el componente indicado Asigna al campo el valor indicado. Selecciona el elemento de la lista indicado.

Se pueden aadir nuevas instrucciones fcilmente.

Pruebas abstractas
ClickOn(aadirEnlaceAction)
SetField(nombreField, enlace01.nombre) SetField(URLField, enlace01.URL) SetField(descripcionField, enlace01.descripcion)

ClickOn(insertar)

ClickOn(cancelar)

ClickOn(categora)

Pruebas abstractas
ClickOn(aadirEnlaceAction)
SetField(nombreField, enlace01.nombre) SetField(URLField, enlace01.URL) SetField(descripcionField, enlace01.descripcion)

ClickOn(insertar) ClickOn(cancelar) ClickOn(categora)

Pruebas abstractas
Ejemplo de caso de prueba abstracto.
ClickOn(aadirEnlaceAction) SetField(nombreField, enlace01.nombre) SetField(URLField, enlace01.URL) SetField(descripcionField, enlace01.descripcion) ClickOn(insertar) ClickOn(aadirEnlaceAction) ... ClickOn(cancelar)

Los valores de una variable de tipo actor se codifican como variantes de la secuencia de ejecucin de una prueba.

Pruebas abstractas
Modelo de interaccin.

ClickOn(aadirEnlaceAction) SetField(nombreField, enlace01.nombre) SetField(URLField, enlace01.URL) SetField(descripcionField, enlace01.descripcion) ClickOn(insertar)

Pruebas abstractas
Este proceso se podra 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.

Resumen
Sistema.

ClickOn(aadirEnlaceAction) SetField(nombreField, enlace01.nombre) SetField(URLField, enlace01.URL) SetField(descripcionField, enlace01.descripcion) ClickOn(insertar)

El proceso ETUC
2

Generacin de pruebas abstractas. Definicin de interfaces abstractas.

Construccin de casos de prueba abstractos.

Construccin de rbitros. Resultado: Pruebas abstractas.


(acciones sobre un interfaz + valores de prueba + resultado esperado) 1. Identificacin de los puntos de verificacin y resultados esperados. 2. Construccin de los rbitros. 3. Combinacin de rbitros y pruebas abstractas

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 construccin de las interacciones.

Pruebas abstractas
Las pruebas cuentan con dos tipos de validaciones:
1. Ejecucin estricta de las instrucciones.
ClickOn(aadirEnlaceAction) 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.

2. Satisfaccin de rbitros.

Pruebas abstractas
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

La prueba verifica que se produce el resultado esperado.

Un punto de verificacin es una actividad (generalmente del sistema) donde definiremos un rbitro para realizar comprobaciones sobre la interfaz.

Pruebas abstractas
Lenguaje para definir rbitros.
Instruccin Assert(component.attribute, value) Descripcin Verifica que el atributo del componente indicado coincide con el valor. 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. Verifica que la pgina contiene el texto indicado y que este texto es visible para los actores. Verifica que la pantalla que muestra el sistema coincide con la pantalla indicada

AssertTable(table, index, GUIObject)

AssertText(Text)

Screen(GUIScreen)
Estos asertos comprueban estados de la interfaz.

Se pueden aadir nuevas instrucciones fcilmente.

Pruebas abstractas
Ejemplo de rbitro.
Screen(actionScreen)

Screen(linkScreen)

Screen(errorMsg) Assert(errorMsg.text, err_msg)

Screen(linkScreen)

Pruebas abstractas
Prueba abstracta + rbitro.
ClickOn(aadirEnlaceAction)

Screen(actionScreen) Screen(linkScreen)
SetField(nombreField, enlace01.nombre) SetField(URLField, enlace01.URL) SetField(descripcionField, enlace01.descripcion)

ClickOn(insertar)

Resumen
Ejemplo de caso de prueba.
Objetivo: 01 -> 02 -> 03 -> D1(1) -> D2(1) -> 02 -> 03 -> D1(1) -> D2(1) -> 04 Se introduce un enlace incorrecto y, despus, un enlace correcto) Acctiones:

Screen(actionScreen)
ClickOn(aadirEnlaceAction)

Screen(linkScreen)
SetField(nombreField, enlace02.nombre) SetField(URLField, enlace02.URL) SetField(descripcionField, enlace02.descripcion) ClickOn(insertar)

El caso de uso no indica el resultado. En este caso podemos buscar otros artefactos, como mapas de navegacin, o esperar a que el sistema est construido.

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 accinVisitante01 = IntroducirEnlace accinVisitante02 = IntroducirEnlace Resultado esperado: No se especifica en el caso de uso.

Procesos e informacin
Una visin global

Proceso ETUC.

Generacin de pruebas ejecutables

El proceso ETUC
2 Generacin de pruebas ejecutables.

Construccin de casos de prueba ejecutables.


1. 2. 3. 4. Seleccin de la herramienta / plataforma de pruebas. Definicin de la arquitectura de prueba. Traduccin de las pruebas, valores de prueba y rbitros a cdigo ejecutable. Codificacin de los test harness.

Resultado: Cdigo ejecutable.


(acciones sobre un interfaz + valores de prueba + resultado esperado)

Arquitectura de prueba.

Pruebas ejecutables
Ya tenemos la interfaz de usuario:

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, despus, un enlace correcto) Acctiones:

Screen(actionScreen)
ClickOn(aadirEnlaceAction)

Screen(linkScreen)

Herramienta de prueba.

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 accinVisitante01 = IntroducirEnlace accinVisitante02 = IntroducirEnlace Resultado esperado: No se especifica en el caso de uso.

Ya sabemos el resultado: volver a la pantalla principa Screen(actionScreen)

Pruebas concretas
Herramientas de prueba para interfaces web:

Selenium
(URL).

JWebUnit
(http://jwebunit.sourceforge.net).

Canoo WebTest
(URL). Open-source Java (Selenium multilenguaje) Maduras

Pruebas concretas
Arquitectura de pruebas:

No va a ser necesario codificar ningn TestHarness adicional.

Pruebas concretas
Traduccin 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.

Pruebas concretas
Traduccin de secuencias de ejecucin y rbitros:
Screen(actionScreen) ClickOn(aadirEnlaceAction) Screen(linkScreen) SetField(nombreField, enlace01.nombre) SetField(URLField, enlace01.URL) SetField(descripcionField, enlace01.descripcion) ClickOn(insertar)
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 aadir 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 pgina 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
Ms casos prcticos en .

Objetivos de prueba
Tres pasos para obtener objetivos de prueba:

Generacin de objetivos. Generar objetivos de prueba a partir del modelo de comportamiento. Obtener variables y valores de prueba para los escenarios.

También podría gustarte