El primer módulo del curso. Esperamos que te guste. 1

Anuncio
El primer módulo del curso. Esperamos que te guste.
1
En todos los módulos encontrarás una primera transparencia de objetivos de cada
uno de los módulo.
2
Todo el módulo tiene un boletín de ejercicio. Utiliza el boletín como una guía para
seleccionar los ejercicios que te resulten más interesantes o retadores. Además
encontrarás propuesta para comentar en foros, o ejercicios on-line en la plataforma
de enseñanza virtual.
3
El índice del módulo
4
Vamos a comenzar repasando algunas definiciones básicas que se utilizan en el
ámbito de la prueba del software. Es importante que todos usemos las mismas
palabras para referirnos a los mismos conceptos.
5
Una prueba se puede resumir como una entrada, una acción y un resultado.
Comprobamos si ese resultado es el esperado o no para determinar si la prueba se
pasó con éxito o falló.
6
Dos ejemplos que siguen el patrón anterior.
7
Si no buscamos un error difícilmente lo encontraremos escribiendo pruebas. Aunque
escribimos pruebas para mitigar la sensación de inseguridad y de duda, debemos
evitar que las pruebas nos den una falsa sensación de seguridad.
8
Esta clasificación está tomada de Métrica v3 aunque refleja muy bien las fases de
pruebas más comunes en la literatura de pruebas
Las primeras pruebas a aplicar dentro del proceso de prueba del sistema software
son las pruebas unitarias, de integración que verifican los componentes del sistema
software y su interrelación. Sin embargo, como hemos visto en una diapositiva
anterior, estas pruebas no son suficiente para garantizar la calidad del sistema.
Necesitamos una fase de pruebas que nos garantice que ese código sin errores realiza
lo que se espera de él: la fase de pruebas del sistema.
A continuación veremos cada una de estos tipos en más detalle.
9
La definición de Métrica v3 es muy genérica para no atarse a ningún lenguaje /
paradigma de programación concreto. A lo largo del curso, nuestros componentes
serán las clases y los métodos Java o de lenguajes similares (Python, JavaScript, etc.).
10
Los resultados esperados en las pruebas de integración suelen ser los mismos que los
resultados de las pruebas unitarias. La diferencia es que dichos resultados en las
pruebas de integración se calculan con los componentes reales del sistema que
entrarán en producción.
11
Las pruebas del sistema recogen las pruebas de los requisitos del sistema. Cualquier
cosa que se defina como un requisito debe tener algún tipo de prueba que verifique
su correcta implementación en el sistema.
12
El entorno de producción es aquella plataforma (máquinas, sistemas operativos, etc.)
que se utilizarán durante la vida del software.
13
El concepto de prueba de aceptación puede variar según la literatura. En Métrica V3
(de dónde hemos tomado esta clasificación) las pruebas de aceptación las realizan
principalmente los usuarios.
En otras referencias (generalmente del mundo ágil) las pruebas de aceptación son
pruebas del sistema diseñadas por los usuarios o creadas a partir de datos y ejemplos
proporcionados por usuarios.
En este curso no nos vamos a preocupar de esta distinción.
14
Hay varios sub-tipos distintos de pruebas dentro de los tipos de pruebas. Por
ejemplo, una de las fases en las que más tipo de pruebas distintas está documentada
en la literatura es la fase de prueba del sistema
Como norma, cada posible requisito o característica del sistema es susceptible de ser
verificada por una prueba del sistema. Dado que podemos tener muchos tipos de
requisitos: funcionales, de datos, de interfaz de usuario, de accesibilidad, etc.
También podemos tener muchos tipos de pruebas distintas.
15
Las técnicas de prueba nos indican cuantas pruebas se deben desarrollar y qué debe
comprobar cada una de las pruebas. Son una guía para saber qué pruebas tenemos
que hacer.
16
Sin notas.
17
Aquí vamos a ver técnicas que nos permitirán definir qué casos de prueba
necesitamos para poder probar un fragmento de código
18
Ejemplos de casos de prueba posibles.
19
Ejemplo de valores límite.
20
Esta técnica hace que salte una alarma en nuestra cabeza cada vez que escribimos un
bucle if o un bucle for / while que puede no ejecutarse ni siquiera una vez.
21
¿Cómo podríamos escribir una prueba automática que comprobara los resultados
esperados? Veremos la respuesta en el capítulo de Mocking.
22
Un conjunto (implementación de la interfaz java.util.Set)
23
Un conjunto (implementación de la interfaz java.util.Set)
En esta prueba podemos ver que la información de entrada de cada una de las
pruebas (filas) no es solo el valor a introducir en el conjunto sino también el estado
en el que está dicho conjunto. Es necesario tener en cuenta el estado previo de lo
que vamos a probar como parte de la definición de la prueba.
24
Vamos a ver qué características tienen las buenas pruebas unitarias.
25
La idea que el concepto “testable code” quiere expresar es escribir código que sea
sencillo de probar. Vamos a ver a continuación cómo podemos hacer esto.
26
Para terminar te proponemos enlaces a materiales adicionales para profundizar.
27
Enlaces y referencias en Internet para leer más.
28
Enlaces y referencias en Internet para leer más.
29
Descargar