Está en la página 1de 14

20/10/2010

Taller Abierto de Testing


Jornada 1

Alfonsina Morgavi
Natalia Davidovich
Fernando Waisman

Agenda – Jornada 1

► Presentación
► Introducción
► Técnicas para derivar casos de prueba

Presentación

Facilitadores

►Natalia Davidovich

►Alfonsina Morgavi

►Fernando Waisman

1
20/10/2010

Presentación

Participantes

► Nombre

► Trabajo

► Expectativas del curso

Presentación

Taller – Estructura General

► 3 jornadas – 4 horas cada uno

► Estructura:
Repaso de la clase anterior
Tema teórico
Clase práctica
2 break

Presentación

Taller – Objetivos

► Entender el contexto en el que se desarrollan las actividades de testing

► Aprender a diseñar casos de prueba

► Conocer el lenguaje común que se utiliza dentro del área de Testing

► Definiciones generales.

2
20/10/2010

Presentación

► ¿Algún tema en el que estén interesados en tratar?

► ¿Preguntas ?

► … ARRANCAMOS!!!!

Agenda – Jornada 1

► Presentación
► Introducción
► Técnicas para derivar casos de prueba.

Introducción

El lugar del testing

► Dentro de la industria del desarrollo de software existe:


► La ingeniería de software
► Calidad de Software
► Calidad de proceso
► Calidad de producto
► Testing

3
20/10/2010

Introducción

Ingeniería de software

Base del CASE


Como construir
control de A
gestión del
proyecto herramientas
c
métodos
t
proceso
i
t
Un enfoque de calidad
u
d
Los cimientos que son la base de la ingeniería del
software están orientados hacia la calidad. (Pressman)

Introducción

¿ Que se entiende por Calidad? «Calidad es desarrollar, diseñar,


manufacturar y mantener un
«Calidad es satisfacer los producto que sea el
requerimientos del cliente» más económico, útil y
Joseph Juran satisfactorio para el consumidor»

Kaoru Ishikawa
«Calidad total es un modo de «Cumplimiento de los
vida corporativa, un modo de requerimientos y las
administrar una organización. especificaciones de un
Control de calidad total es un producto o servicio»
concepto que abarca a toda la
organización e involucra la Phillip Crosby
puesta en práctica de
actividades «Calidad es el alto grado de
orientadas hacia el cliente» uniformidad en la
producción»
Armand V. Feigenbaum
Edward Demming

Introducción

Definiciones Tradicionales - Testing

►Proceso de establecer confianza en que un programa o sistema hace lo que


debe hacer. (Hetzel, 1973)
►Proceso de ejecución de un programa o sistema con el objetivo de encontrar
errores. (Myers, 1979)
► Cualquier actividad dirigida a evaluar un atributo o capacidad de un programa
o sistema, y determinar que cumple los resultados requeridos (Hetzel, 1983)
►Se define como el proceso de ejercitar o evaluar el sistema, por medios
manuales o automáticos, para verificar que satisface los requerimientos o, para
identificar diferencias entre los resultados esperados y los que produce el sistema
(IEEE).

4
20/10/2010

Introducción

Mas Definiciones - Testing

► Las pruebas de software, en inglés testing son los procesos que permiten
verificar y revelar la calidad de un producto software. Son utilizadas para
identificar posibles fallos de implementación, calidad, o usabilidad de un
programa de ordenador o videojuego. Básicamente es una fase en el
desarrollo de software consistente en probar las aplicaciones construidas.
Las pruebas de software se integran dentro de las diferentes fases del ciclo del
software dentro de la Ingeniería de software. Así se ejecuta un programa y
mediante técnicas experimentales se trata de descubrir que errores tiene.
Para determinar el nivel de calidad se deben efectuar unas medidas o pruebas
que permitan comprobar el grado de cumplimiento respecto de las
especificaciones iníciales del sistema. (Wikipedia).

Introducción

Aclarando conceptos…

CALIDAD DE PRODUCTO = QC o Testing

CALIDAD DE ISO 9126


SOFTWARE
CMMI ISO 9001

CALIDAD DE PROCESO = SQA o QA

Introducción

Ejercicio

►Comparar los distintos tipos de definiciones de testing

► Identificar similitudes y diferencias

►Comparar diferencias y similitudes entre definición de Calidad y Testing

► Discusión

5
20/10/2010

Introducción

Testing

Introducción

Cuando comenzar

► La actividad de diseñar test puede y debe comenzar casi en simultaneo con la


primer versión de requerimientos estables
► Permite encontrar dudas en los requerimientos y problemas de definición
► Encontrar errores en la etapa de definición ahorra dinero y tiempo

► “El acto de diseñar tests es uno de los mecanismos conocidos más efectivos
para prevenir errores…
► El proceso mental que debe desarrollarse para crear tests útiles puede
descubrir y eliminar problemas en todas las etapas del desarrollo”
Boris Beizer. Software Testing Techniques, 2nd Ed.

Introducción

Cuando terminar

► Decidir cuando terminar el testing no es trivial!!!

► Algunos Criterios
► Se corrieron todos los tests planeados sin detectarse ningún error
► % de cubrimiento de ciertas técnicas elegidas
► Fault-rate más bajo que un cierto valor especificado (# de errores por
unidad de tiempo de testing) + Niveles de severidad para los errores
► Se encontró un número predeterminado de errores (% del número total de
errores estimado)
► Se acabo el tiempo!!

6
20/10/2010

Introducción

Conceptos Generales

►Medida de la calidad del software

►Calidad significa cumplir los requerimientos


►La calidad no es intangible
►El propósito del Testing es hacer visible la calidad (evidenciado los
defectos del software antes de su puesta en producción)

►Axiomas del testing

►“El Testing sólo puede mostrar la presencia de defectos, no su ausencia”


(Dijkstra)
►Un test sólo es exitoso si encuentra errores
►Cuando cumplimos el rol de Tester debemos ser creativos, pero para
destruir

Introducción

Conceptos Generales

►Error
►Equivocación

►Defecto (defect /fault):


► Un error lleva a uno o más defectos, que están presentes en un producto
de software
►Diferencia entre el producto correcto y el incorrecto

►Falla (failure)
►Un defecto lleva a cero, una o más fallas: manifestación del defecto
►Manifestación del defecto
►Diferencia entre los resultados esperados y reales

Introducción

Objetivos del testing

► Objetivo Principal: Mejorar la calidad del producto


► Objetivo visible: Identificar defectos

►Tests deben

► Mejorar la calidad de los productos que se desarrollan


► Ayudarnos a entender el sistema bajo pruebas
► Reducir riesgos
► Requerir mantenimiento mínimo al mismo nivel que el sistema involucrado
► Ser ejecutados como parte del proceso de construcción
► Ser fácil de ejecutar
► No ser ni muy complejos ni muy simples
► Ser los mejores de su especie

7
20/10/2010

Introducción

Testing - Beneficios

►Beneficios directos

►Que los bugs no surjan en producción


►Mejorar la calidad de los productos que desarrollamos
►Hacer visible la calidad

►Beneficios indirectos

►Mejora la documentación
►Se establece una cultura orientada a la calidad
►Tener información para la prevención de defectos

Introducción

Campos de un caso de prueba

► ID del caso: Se establece un identificador para el caso

► Pre Condición: Condición necesaria que se tiene que dar antes de


ejecutar el caso

► Objetivo: Que es lo que queremos probar, ejemplo: Dar de alta una


empresa valida

► Pasos: Se deben describir todos los pasos necesarios para poder llevar
a cabo el caso

► Datos: Se debe especificar el lote de prueba, en el caso que hayan


datos se deberá especificar que datos se instanciaron al momento de
realizar la prueba

► Resultado Esperado: Es la consecuencia de la ejecución del caso

Introducción

Ejercicio

► Definir los casos de prueba a partir del caso de uso dado

8
20/10/2010

Agenda – Jornada 1

► Presentación
► Introducción
► Técnicas para derivar casos de prueba

Técnicas para derivar casos de prueba

Partición de equivalencia

►Los datos de entrada y los resultados de salida a


menudo caen en diferentes clases. Por ejemplo:
números positivos, números negativos, cadenas con Invalid inputs Valid inputs

caracteres en blanco, etc.

System
►El sistema tiende a comportarse en forma
equivalente para cada una de estas clases. Por este
motivo resulta útil identificar dichas clases al momento
de probar
Outputs

►Estas clases se denominan particiones de


equivalencia

Técnicas para derivar casos de prueba

Partición de equivalencia

►¿Qué hacemos?

►Seleccionamos subconjuntos de los datos de entrada posibles,


esperando que cubran un conjunto extenso de otros casos de test
posibles

►El test de un valor representativo de cada clase es equivalente al


test de cualquier otro valor
►Llamamos a cada subconjunto “Clase de Equivalencia”

9
20/10/2010

Técnicas para derivar casos de prueba

Ejercicio partición de equivalencias

► Definir la partición de equivalencia para el ejercicio dado y definir con que


datos de entrada probaría

Técnicas para derivar casos de prueba

Análisis de condiciones de borde

►Pone el foco en los bordes de los valores de entrada y salida de las clases
de equivalencias
►Los errores tienden a estar en los bordes. Focalizando el testing en
estas áreas se incrementa la probabilidad de detectarlos

►Esta técnica es una variación de la técnica de partición de equivalencias que


se focaliza en los bordes de cada clase de equivalencia: “Por arriba y por
debajo de cada clase”
►En vez de seleccionar un valor de test arbitrario dentro de una clase de
equivalencia, el análisis de valores de bordes selecciona uno o más casos
para testear cada margen.

Técnicas para derivar casos de prueba

Análisis de condiciones de borde - Técnica

►El foco está sobre el espacio de inputs (clase de equivalencias de entrada) y


sobre el espacio de outputs (clase de equivalencias de salida)
►Es más difícil definir las clases de equivalencias de outputs, ya que no
es fácil encontrar los valores de entrada que hacen que el resultado
coincida con los bordes de los valores de output

►Puede requerir la creación de una gran cantidad de casos de test debido a


la gran cantidad de variaciones de entradas y salidas que pueden existir
►Una limitación es que puede ser muy difícil definir el rango de la clase
de equivalencia si involucra cálculos muy complejos. Es por eso que los
requerimientos deben estar lo más detallados posible

10
20/10/2010

Técnicas para derivar casos de prueba

Análisis de condiciones de borde

► Heurística según condiciones de input/output

► Rango de valores o cantidad de valores: escribir un caso para el


máximo, otro para el mínimo, valor siguiente al máximo, valor
siguiente al mínimo.

► Ejemplo. “La cuenta puede tener a lo sumo 2 titulares”. Casos:


► Cuenta con 0 titulares. (No cuenta con titular)
► Cuenta con 1 titular
► Cuenta con 2 titulares
► Cuenta con 3 titulares
► Conjunto ordenado: escribir un caso para el 1ro y para el último.
► Ejemplo: tablas o arreglo
► Read/Update/Insert/Delete el primer registro.
► Read/Update/Insert/Delete el último registro.

Técnicas para derivar casos de prueba

Tabla de decisión

► Se usan para documentar reglas del negocio que el sistema debe


implementar. Sirven como guía para diseñar casos de test

► Las condiciones representan inputs. Las acciones son los procesos que
deben ejecutarse dependiendo de la combinación de condiciones presentes

► Cada regla define una combinación única de condiciones que dispara las
acciones asociadas con dicha regla

Técnicas para derivar casos de prueba

Tabla de decisión

Condiciones Regla 1 Regla 2 Regla 3 … Regla n


Condición 1

Condición 2
Condición n…

Acciones
Acción 1
Acción 2

Acción n…

11
20/10/2010

Técnicas para derivar casos de prueba

Tabla de decisión

► Crear al menos un caso para cada regla:

► Si las condiciones son binarias se escribe un caso por cada regla o


columna (las condiciones son las entradas y las acciones las salidas)

► Si las condiciones son rangos de valores, crear casos para los bordes
del rango (complemento con Análisis de Bordes)

Técnicas para derivar casos de prueba

Tabla de decisión

► Una empresa aseguradora de automóviles brinda descuentos a aquellos


conductores que estén casados y/o son buenos estudiantes. El descuento es
variable

Condiciones Regla 1 Regla 2 Regla 3 Regla 4

Casado? Si Si No No

Buen estudiante? Si No Si No

Acción

Descuento ($) 60 25 50 0

Técnicas para derivar casos de prueba

Definición Jerárquica

► Cada test es dividido en subtests con diferentes condiciones. Se arma un


árbol jerárquico, donde cada nodo indica una condición. Los tests que son
especificados y ejecutados son las hojas del árbol

► Permite minimizar la cantidad de tests “sin sentido”

► Permite organizar la derivación sin olvidarse de ninguna combinación


importante

12
20/10/2010

Técnicas para derivar casos de prueba

Definición Jerárquica

Un ejemplo:

Alta de cuenta

Datos válidos Datos inválidos

Caja de ahorro Cuenta corriente

Pesos Dólares

Técnicas para derivar casos de prueba

Ejercicio

► Definir los casos de prueba a partir de la documentación adjunta

¿PREGUNTAS?

13
20/10/2010

MUCHAS GRACIAS!!!

Contacto
alfonsina.morgavi@gmail.com
nataliadavidovich@gmail.com
fwaisman@gmail.com

14

También podría gustarte