Introducción al testing unitario
-
Upload
juanma-gomez -
Category
Documents
-
view
216 -
download
0
description
Transcript of Introducción al testing unitario
![Page 1: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/1.jpg)
Introducción al Testing Unitario
@JuanmaGomeR
![Page 2: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/2.jpg)
Preguntas Frecuentes
¿Cómo pruebo un test que no devuelve nada?
public void tell_dont_ask_principle(params…)
@JuanmaGomeR
![Page 3: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/3.jpg)
Preguntas Frecuentes
¿Cómo debo probar los métodos get/set?
public String getAlmuerzo() {return almuerzo;
}
public void setAlmuerzo(String…)@JuanmaGomeR
![Page 4: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/4.jpg)
Preguntas Frecuentes
¿Dónde colocar mis test?
Carpeta, paquete...
@JuanmaGomeR
![Page 5: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/5.jpg)
Preguntas Frecuentes
¿Cómo testear los métodos privados?
private Algo privateMethod(params…) {...}
@JuanmaGomeR
![Page 6: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/6.jpg)
Preguntas Frecuentes
¿Cómo de simple es un método para decir que es demasiado
simple para testear?
@JuanmaGomeR
![Page 7: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/7.jpg)
Preguntas Frecuentes
¿Cada cuanto tiempo ejecutar mis tests?
Cambio, commit, minuto, hora, día, año, década...
@JuanmaGomeR
![Page 8: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/8.jpg)
Testing UnitarioClaves del test unitario
@JuanmaGomeR
![Page 9: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/9.jpg)
Tests Unitarios
Prueban una funcionalidad concreta
@JuanmaGomeR
![Page 10: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/10.jpg)
Tests Unitarios
Se basan en el principio de responsabilidad única: cada
método tiene una única responsabilidad, y esa
responsabilidad es la que pruebo @JuanmaGomeR
![Page 11: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/11.jpg)
Tests Unitarios
Deben ser independientes de los datos puesto que no probamos datos, sino
funcionalidad @JuanmaGomeR
![Page 12: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/12.jpg)
Tests Unitarios
Son repetibles en el tiempo
@JuanmaGomeR
![Page 13: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/13.jpg)
Tests Unitarios
Sólo prueban los métodos públicos del SUT (System Under
Test)@JuanmaGomeR
![Page 14: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/14.jpg)
Tests Unitarios
No se hacen uso de dependencias de la
clase a probarSi no, serían test de integración
@JuanmaGomeR
![Page 15: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/15.jpg)
Otros tests
● Integración: prueban la conexión entre componentes. Debería ser el siguiente paso al test unitario.
●Funcionales: prueban la integración de todos los componentes que desarrollan una funcionalidad.
●Regresión: prueban que los SUT siguen funcionando a lo largo del tiempo (IC)
●Carga: prueban la eficiencia del código
@JuanmaGomeR
![Page 16: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/16.jpg)
Testing Unitario¿Cómo diseñar un test unitario?
@JuanmaGomeR
![Page 17: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/17.jpg)
System Under Test (SUT)
●Es el sistema que vamos a probar. ●Probamos los métodos públicos:○ Interface de nuestro SUT al mundo exterior
● ¿Los métodos privados no?○Relocalizar en otra parte del SUT o del sistema○PrivilegedAccessor
@JuanmaGomeR
![Page 18: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/18.jpg)
¿Cómo diseñar un test unitario?
Un test unitario es independiente de los demás y del entorno
@JuanmaGomeR
![Page 19: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/19.jpg)
¿Cómo diseñar un test unitario?
Ejecución extremadamente
rápida
@JuanmaGomeR
![Page 20: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/20.jpg)
¿Cómo diseñar un test unitario?
Su éxito no depende del orden de ejecución
de los demás tests
@JuanmaGomeR
![Page 21: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/21.jpg)
¿Cómo diseñar un test unitario?
Son repetibles en el tiempo
@JuanmaGomeR
![Page 22: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/22.jpg)
¿Cómo diseñar un test unitario?
Se deben pueden ejecutar de forma
automática
@JuanmaGomeR
![Page 23: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/23.jpg)
Testing UnitarioAlgunas Buenas Prácticas
@JuanmaGomeR
![Page 24: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/24.jpg)
Algunas Buenas Prácticas
@Testpublic void pruebo_un_metodo_get() {
String mi_dato = “Mi Dato”;
MiObjeto mi_objeto = new MiObjeto();
mi_objeto.set_mi_dato(mi_dato);
assertEquals(mi_dato, mi_objeto.get_mi_dato());}
@JuanmaGomeR
![Page 25: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/25.jpg)
Algunas Buenas Prácticas
Escribir un test cuando solamente sea
necesario. NO cobertura 100%
@JuanmaGomeR
![Page 26: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/26.jpg)
Algunas Buenas Prácticas
package es.miempresa.programa.producto.paquete
public class MiObjeto {package String que_eres() {
return “Soy tu objeto”;}
}
package es.miempresa.programa.producto.tests.paquete
public class MiObjetoTests {@Test public void si_te_pregunto_devuelves_soy_tu_objeto() {
assertEquals(“Soy tu objeto”, new MiObjeto().que_eres());}
}@JuanmaGomeR
![Page 27: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/27.jpg)
Algunas Buenas Prácticas
Los tests están colocados en un lugar
representativo (mismo paquete, por ejemplo)
@JuanmaGomeR
![Page 28: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/28.jpg)
Algunas Buenas Prácticas
@Testpublic void test_metodo1() {
String a = “soy tu objeto”;String b = “soy otra cadena”;String c = null;int num = (a==b);if(num) {
c=b;}assertEquals(a, new Agenda().getCamandulo().getB());
} @JuanmaGomeR
![Page 29: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/29.jpg)
Algunas Buenas Prácticas
Fácilmente mantenibles y entendibles
Siguen siendo código fuente
@JuanmaGomeR
![Page 30: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/30.jpg)
Algunas Buenas Prácticas
Prueban el qué y no el cómo
○Métodos públicos --> Qué○Métodos privados o protegidos --> Cómo
@JuanmaGomeR
![Page 31: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/31.jpg)
Algunas Buenas Prácticas
Test única funcionalidad: No If, while, for, ... dentro de un test unitario
Principio de responsabilidad única también para los tests
@JuanmaGomeR
![Page 32: Introducción al testing unitario](https://reader034.fdocuments.es/reader034/viewer/2022042521/558833dcd8b42ad7338b468f/html5/thumbnails/32.jpg)
¡MUCHAS GRACIAS!
@JuanmaGomeR