
Te explico la forma de sacarle el máximo partido a este curso
Al final de la clase tendrás importado y funcionando en el IDE Eclipse el proyecto de esqueleto de partida cursotesting-kickoff. SO Windows
Al final de la clase tendrás importado y funcionando en el IDE Eclipse el proyecto de esqueleto de partida cursotesting-kickoff. SO Linux (Debian - Ubuntu)
Aunque este no es un curso de agilismo, sentaremos los pilares básicos del desarrollo ágil para comprender el papel vital que juegan los tests en él.
Qué son las prácticas Integración Continua y entrega continua y cómo se fundamentan en el testing de calidad
Primer acercamiento a los conceptos de TDD y ATDD
Repaso muy rápido de los tipos de pruebas más populares y cuáles nos interesan a nosotros
¿Qué principios tiene que cumplir un test para que sea efectivo?
Tutorial rápido para arrancar con JUnit 5
Te enseño como crear plantillas de código en Eclipse para que te puedas crear tu propia plantilla de métodos de test, con la estructura Given-When-Then.
También te adjunto mi propia plantilla para que la puedas importar directamente en Eclipse
Escribiremos nuestros primeros tests unitarios.
Introducimos bugs en el código de TextNormalizer para comprobar si nuestros tests son completos y detectan dichos bugs
Usando solo lo aprendido hasta el momento, te propongo hacer los tests unitarios para una clase llamada EmailValidator
Ejemplos de cómo probar los casos en los que nuestro código debe lanzar algún tipo de excepción.
Aprendemos para qué sirven los tests parametrizados de JUnit 5
Usamos tests parametrizados de JUnit 5 para mejorar el test EmailValidatorTest que hicimos en clases anteriores
Usamos tests parametrizados de JUnit 5 para mejorar el test TextNormalizerTest que hicimos en clases anteriores. Pero esta vez poniendo el foco sobre la fuente de datos @CsvSource.
Probamos la clase InvoiceLine con un test parametrizado con fuente de datos MethodSource
Clase práctica en la que explico por qué es mejor inyectar un Clock en lugar de hacer new Date() o Instant.now()
Este término se utiliza mucho en textos o libros. A estas alturas no es nada nuevo para nosotros, simplemente se le llama así a los objetos que preparamos para que los use nuestros tests
Repasamos el concepto de TDD y vemos cómo se aplica su algoritmo
Repaso del concepto de ATDD que ya introducimos en la sección de base teórica, pero ahora con más detalle.
Descripción del problema a resolver y escribimos los tests de aceptación para definir la historia de usuario
Implementando el contador de palabras a través del proceso TDD para cumplir con los tests de aceptación definidos en la clase anterior
Te explico la razón por la que, antes de seguir avanzando con material nuevo, vamos a seguir machacando TDD con más ejercicios muy sencillos.
Ejercicios súper sencillos para practicar la mecánica TDD
Ejercicios súper sencillos para practicar la mecánica TDD
Ejercicios súper sencillos para practicar la mecánica TDD
Enunciado de un ejercicio para determinar el tipo de un triángulo en función de sus lados.
Reflexionamos sobre algunos de los aspectos que implica aplicar TDD en nuestro día a día trabajando en un proyecto real
Definición y propósito de los dobles de prueba
Ejemplo de utilización creación y utilización de objetos de imitación sin usar ninguna biblioteca o herramienta de terceros. La ídea aquí es entender la base.
Reglas heurísticas para ayudarte a decidir cuándo es mejor usar un doble de prueba o un objeto real como colaborador del SUT en tu test
Descripción del problema y tests de aceptación
Implementamos un convertidor de divisas con TDD y Mockito como framework para los dobles de prueba
Definir el tipo de test de integración que nos interesan a nosotros, ver las diferencias con los unitarios y también las ventajas e inconvenientes de este tipo de pruebas.
Cómo deben ser los test de integración en un entorno de desarrollo ágil con TDD
Intentaremos probar un código que consulta y guarda datos en una BD relacional en fichero con los conceptos de testing que hemos visto hasta el momento y nos enfrentaremos a la problemática que aparece.
Ejemplo de un CustomerRepository, que hace operaciones JDBC en BD Relacional, solucionando la problemática de este tipo de test con spring-test y BD en memoria
Introducción a Database Rider, una herramienta específica pensada para este tipo de tests
Ejemplo de un CustomerRepository, que hace operaciones JDBC en BD Relacional, solucionando la problemática de este tipo de test con la herramienta Database Rider
Introducción a JDBDT, una herramienta alternativa para tests de acceso a BBDD
¿Cómo organizar nuestro testing y por tanto nuestro desarrollo. ¿Por dónde empezamos? ¿Qué tipo de tests priorizo?
Presentar el esqueleto del proyecto sobre el que trabajaremos
Hacemos un pequeño resumen de lo practicado durante esta sección
Aprender testing y TDD no consiste solo en conocer JUnit o Mockito. La clave está en entender cómo escribir tests que realmente aporten valor y cómo usar el Desarrollo Dirigido por Tests (TDD) para diseñar mejor tu código y trabajar con más seguridad ante el cambio.
En este curso aprenderás los fundamentos del testing de software y del TDD con un enfoque eminentemente práctico. No se trata de un curso académico ni de una colección de conceptos sueltos: está pensado para que puedas llevar lo aprendido a tu trabajo real como desarrollador.
A lo largo del curso aprenderás a escribir tests unitarios y de integración con JUnit 5, a utilizar Mockito y otros dobles de prueba con criterio, a practicar TDD de forma efectiva y a entender cuándo tiene sentido usar un enfoque u otro. También verás cómo probar código que accede a base de datos, cómo trabajar con tests parametrizados, cómo comprobar excepciones y cómo aplicar buenas prácticas para que tus tests sean fiables y mantenibles.
Más allá de las herramientas, el objetivo principal es que entiendas los principios que hay detrás del testing de calidad. Quiero que al terminar el curso no solo sepas usar JUnit 5, Mockito o Database Rider, sino que sepas por qué estás haciendo cada cosa y cómo tomar mejores decisiones al desarrollar software.
El enfoque del curso es el de un programador para programadores. Todo el contenido está planteado desde la experiencia real en proyectos, con ejemplos prácticos y aplicables al día a día. Más del 80% del material son clases prácticas, y el nivel va subiendo poco a poco para que puedas asimilar bien los conceptos y afianzarlos con seguridad.
Aunque usaremos Java y JUnit 5, muchas de las ideas que verás aquí son aplicables a cualquier lenguaje y tecnología. La tecnología es un medio, no un fin. Por eso el curso no busca enseñarte una herramienta “porque sí”, sino ayudarte a mejorar como desarrollador.
Además, el curso incluye cuestionarios de autoevaluación en la mayoría de secciones, ejercicios para practicar por tu cuenta, código fuente descargable con los ejemplos y un proyecto final donde pondremos en práctica los conceptos más importantes.
Este curso te puede ayudar especialmente si quieres:
empezar a trabajar con testing y TDD con una base sólida
escribir tests más útiles y menos frágiles
entender mejor la diferencia entre tests unitarios e integración
usar TDD como técnica para diseñar mejor
mejorar la calidad de tu código y trabajar con más confianza
Si quieres aprender testing y TDD con un enfoque práctico, realista y aplicable a tu día a día, este curso está pensado para ti.