Envíanos tu consulta
Términos y condiciones *
*Si no puedes asistir en directo de facilitaremos un enlace para verlo en diferido
logoImagina
iconoCurso

Curso completo de Testing con TDD y BDD

DISPONIBLE EN MODALIDAD:
Con un mercado cada vez más exigente y con ciclos de desarrollo más cortos, resulta imprescindible que los equipos de desarrollo incorporen de manera eficaz metodologías y herramientas que ayuden a asegurar una entrega continua de software con elevados estándares de calidad. El objetivo de este curso es el de dotar a los profesionales de equipos de desarrollo de un conjunto de técnicas y herramientas demandadas por empresas para este cometido.
iconClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClient
Formación en Testing con TDD y BDD bonificable para empresas

¿A quién va dirigido?

A desarrolladores interesados en aprender a aplicar en sus proyectos de desarrollo las estrategias de BDD y TDD para así realizar un correcto desarrollo de los proyectos.

Objetivos

  • Aprender a incluir de una manera eficaz las metodologías de desarrollo TDD y BDD como un eje crucial dentro del desarrollo de software.
  • Elevar la calidad del software implementado haciéndolo más robusto, mantenible y protegido frente a regresiones inesperadas.
  • Comprender la relación que existe entre el agilismo y el testing.
  • Aprender a interpretar correctamente el _Storytelling_ y su relación con Gherkin.
  • Aprender a utilizar diferentes librerías para la implementación de pruebas automáticas.
  • Diseñar e implementar una estrategia eficaz de testing automatizado para proyectos de cualquier tipo de complejidad.

¿Qué vas a aprender?

Con un mercado cada vez más exigente y con ciclos de desarrollo más cortos, resulta imprescindible que los equipos de desarrollo incorporen de manera eficaz metodologías y herramientas que ayuden a asegurar una entrega continua de software con elevados estándares de calidad. El objetivo de este curso es el de dotar a los profesionales de equipos de desarrollo de un conjunto de técnicas y herramientas demandadas por empresas para este cometido.

Requisitos

  • El curso estará desarrollado con Java, Maven, Python y Git, por lo que es necesario tener conocimientos y experiencia trabajando con ello
  • Tener instalados Java JDK 11 (o superior), Python (v3 o superior), Git, Docker Desktop, IntelliJ IDEA (Community Edition o superior), Pycharm (Community Edition o superior) previamente en el equipo
  • Tener un equipo con acceso a un usuario con permisos de instalación y conexión estable a internet

Temario del curso

tema 1

Introducción al Testing de Software

  • ¿Qué es el testing?
  • ¿Por qué el testing es fundamental en el desarrollo de Software?
  • Testing manual vs Testing automatizado
  • Tipos de testing que se llevan a cabo en entornos reales
  • ¿Es necesario probar y automatizar todo?
  • ¿Es cierto que el testing relentiza los proyectos?
  • 7 principios del testing
  • El coste de los errores en el mundo real
  • El coste de las pruebas
  • Ciclo Waterfall
  • Storytelling: As a, Wants to, So that
  • Pruebas exploratorias
  • Pruebas de regresión
  • Pruebas de aceptación
  • La Pirámide del Testing
  • Introducción a la familia XUnit de librerías de testing para distintos lenguajes y proyectos
tema 2

Configurando el entorno de desarrollo y las herramientas de testing para Proyectos Java y Maven

  • Instalaciones y configuraciones Docker y Make necesarias
  • Creación de un Makefile para automatizar tareas
  • Configuración de imágenes Docker para Java
  • Uso de contenedores para el desarrollo y testing
  • Compartir y versionar el entorno de desarrollo
  • Instalación y configuración de JUnit en proyectos Java Maven
  • Integración y configuración en IDE IntelliJ para proyectos de testing Java Maven
  • Introducción a las aserciones y criterios aceptación en el testing
  • Uso de librerías de aserciones para proyectos Java Maven
  • Ejecución de tests y visualización de resultados
  • Configuraciones para saltar o focalizar ejecución de pruebas concretas
  • Depuración de tests en ejecución con IntelliJ
  • Configuración de herramientas de testing en Docker
  • Alternativas a JUnit más destacables
tema 3

Configurando el entorno de desarrollo y las herramientas de testing para proyectos Python

  • Instalaciones y configuraciones Docker y Make necesarias
  • Creación de un Makefile para automatizar tareas
  • Configuración de imágenes Docker para Python
  • Uso de contenedores para el desarrollo y testing
  • Compartir y versionar el entorno de desarrollo
  • Instalación y configuración de PyTest en proyectos Python
  • Integración y configuración en IDE PyCharm para proyectos de testing Python
  • Introducción a las aserciones y criterios aceptación en el testing
  • Uso de librerías de aserciones para proyectos Python
  • Redacción de tests unitarios con Pytest
  • Ejecución de tests y visualización de resultados
  • Configuraciones para saltar o focalizar ejecución de pruebas concretas
  • Depuración de tests en ejecución con PyCharm
  • Configuración de herramientas de testing en Docker para Python
  • Alternativas a PyTest más destacables
tema 4

Introducción al TDD: Conceptos y principios

  • Fundamentos del Test-Driven Development (TDD)
  • Ventajas y desventajas de TDD
  • Patrón AAA (Arrange, Act y Assert)
  • Las etapas de la metodología TDD: Red, Green & Refactor
  • La resistencia del desarrollador a aplicar la metodología
  • Introducción al Coverage (Cobertura de pruebas) de proyectos
  • ¿Cómo ayuda TDD a garantizar una buena cobertura de pruebas?
  • ¿Debemos garantizar siempre un 100% de Coverage?
  • Preguntas frecuentes acerca de la metodología TDD
tema 5

Refactorización, patrones y calidad de código

  • ¿Qué es la calidad del testing?
  • Principios del Código Limpio y garantía de calidad en proyectos SW
  • Principios SOLID y buenas prácticas en programación
  • Técnicas de refactorización
  • Patrones de diseño comunes en TDD y BDD
  • Patrones de Diseño GoF
  • Patrones Creacionales: Factory & Prototype
  • Patrones Estructurales: Adapter, Facade & Composite
  • Patrones de Comportamiento: Strategy & CoR
  • Mantenibilidad y escalabilidad del código
  • Code smells y cómo evitarlos
  • Introducción a las herramientas de análisis de calidad en el flujo de trabajo
  • Introducción a Sonarqube
  • Descargando Sonarqube
  • Instalaciones y configuraciones esenciales para poner en marcha Sonarqube localmente
  • Iniciando Sonarqube por primera vez
  • Creación de proyectos y análisis de interfaz de Sonarqube
  • Analizando los criterios y reglas de aceptación de Sonarqube
  • Integrando Sonarqube en proyectos Java y Maven
  • Dockerizando Sonarqube para proyectos Java y Maven
  • Integrando Sonarqube en proyectos Python
  • Dockerizando Sonarqube para proyectos Python
  • Analizando calidad de código, coverage y otros aspectos desde Sonarqube
  • Establecimiento de métricas y objetivos de calidad
  • Integrando Soarqube en nuestro proceso CI/CD
  • Introducción a JaCoCo (Java Code Coverage)
  • Testing mutants
  • PITest (Mutation testing) para proyectos Python
tema 6

Tests de Integración y su aplicación en proyectos Java y Maven

  • ¿Qué son los tests de integración?
  • ¿Qué es el SUT?
  • Introducción a Fake Data, Stubs y Mocks
  • Técnicas de mocking y stubbing en tests unitarios y de integración
  • Instalación y uso de librerías de mocking en Java y Maven: Mockito
  • Implementación de mocks y stubs de Mockito en tests unitarios y de integración
  • Casos de uso y limitaciones del mocking y stubbing
  • Slice Testing
  • Component Testing
  • Middlewares Testing
  • Introducción y uso de WireMock para proyectos Java y Maven
  • Simulación de APIs Java con WireMock
  • Introducción a TestContainers y los entornos de testing efímeros en Java
  • Dockerización de tests de integración para proyectos Java
  • Buenas prácticas en el uso de mocking y stubbing
tema 7

Tests de Integración para proyectos Python

  • Librerías más destacables para testing de integración para proyectos Python
  • Instalación y uso de librerías de mocking en Python: UnitTest.Mock
  • Implementación de mocks y stubs de Unnittest.Mock en tests unitarios y de integración
  • Casos de uso y limitaciones de UnitTest.Mock
  • Simulación de APIs Python
  • TestContainers en Python
  • Dockerización de tests de integración para proyectos Python
  • Buenas prácticas en el uso de mocking y stubbing en Python
tema 8

Pruebas de regresión y mantenimiento del código

  • Concepto y propósito de las pruebas de regresión
  • Estrategias para la implementación de pruebas de regresión
  • Integración de pruebas de regresión en TDD y BDD
  • Mantenimiento del código y actualización de tests
  • Evolución y adaptación del código a nuevos requisitos
tema 9

Seguridad en aplicaciones Java y Python

  • Principales riesgos y vulnerabilidades
  • Autenticación y autorización
  • Validación y saneamiento de datos
  • Implementación de tests de seguridad
  • Prevención y mitigación de ataques comunes
tema 10

Testing no funcional: Seguridad, Accesibilidad y Rendimiento

  • ¿Qué es el testing no funcional?
  • Requisitos no funcionales
  • Observabilidad vs Monitorización
  • Testing de seguridad
  • Testing de accesibilidad
  • Análisis del rendimiento
  • Técnicas de optimización
  • Implementación de tests de rendimiento
  • Monitorización del rendimiento en producción
  • Uso de herramientas de profiling y análisis de rendimiento
  • Otras herramientas de profiling destacables
  • Recomendaciones y consejos a la hora de probar conceptos no funcionales
tema 11

Testing y Arquitectura

  • Introducción a la arquitectura de aplicaciones y diseño de pruebas
  • Teoría de la Pasta
  • Código Espagueti
  • Código Lasaña
  • Código Ravioli
  • Arquitectura hexagonal
  • Tipos de prueba en función de módulos
  • Domain-Driven Design
  • Introducción al testing en arquitecturas distribuídas
  • ¿Qué son las arquitecturas distribuidas?
  • Rompiendo el monolito
  • Documentación de APIs (OpenAPI, AsyncAPI)
  • Contract Testing
  • Pact Broker
tema 12

Testing avanzado

  • Testing parametrizado
  • AssertJ
  • Testing de excepciones
  • Funciones puras, transparencia referencial y side effects
  • Testing de funciones impuras
  • Aserciones avanzadas con AssertJ
  • Testing con timeouts
  • Testing en aplicaciones multihilo
tema 13

Introducción a BDD: Conceptos y principios

  • Fundamentos del Behavior-Driven Development (BDD)
  • Diferencias entre TDD y BDD
  • Beneficios de BDD
  • Retos potenciales a la hora de implantar BDD en un equipo
  • Entendiendo lo que es un comportamiento (Behaviour)
  • Objetivos de negocio y planteamiento de Features
  • Análisis de requisitos y técnicas de descubrimiento de Features
  • Pasando de features a historias de usuario y escenarios
  • Pasando de ejemplos a criterios de aceptación
  • Colaboración con stakeholders en la definición de requisitos
  • Incorporación de feedback en el proceso de desarrollo
  • Comunicación efectiva y técnicas de presentación
  • Técnicas para gantizar el mayor ROI en la definición de features
tema 14

Gherkin, Cucumber y Behave para implementar BDD

  • Introducción a Gherkin
  • Sintaxis fundamental de Gherkin
  • Creación de archivos Feature
  • Añadiendo títulos y decsripciones a las Features
  • Redacción de Escenarios identificados
  • Redactando los pasos (Steps) en un Escenario (Given, When y Then)
  • Creación de Escenarios con tablas de datos de ejemplo
  • Añadiendo varios escenarios a una Feature
  • Reutilizando pasos en distintos escenarios
  • Añadiendo trasfondo y contexto a nuestros escenarios (Backgroud)
  • Baby Steps y pasos intermedios
  • ¿Cómo evitar dependencias entre escenarios?
  • Añadiendo etiquetas a los escenarios
  • Introducción a Cucumber
  • Soluciones de Cucumber en la actualidad para distintos lenguajes
  • Instalaciones y configuraciones para proyectos Java y Maven
  • Creación de archivos de Features en proyectos Maven con Cucumber
  • Pasando de la redacción a la implementación del Escenario
  • Paso de parámetros y valores
  • Configuraciones del Cucumber Runner
  • Especificando Features a ejecutar desde el Cucumber Runner
  • Introducción a Cucumber Studio
  • Configuraciones e integraciones en Cucumber Studio
  • Instalación de Cucumber Studio y puesta en marcha
  • Trabajando BDD con Cucumber Studio
  • Alternativas a Cucumber para Java: JBehave
  • Introducción a Behave para proyectos Python
  • Fundamentos de Behave
  • Instalaciones y configuraciones
  • Creación de archivos de Features en proyectos Python con Behave
  • Pasando de la redacción a la implementación del Escenario con Behave y Python
  • Paso de parámetros y valores
  • Configuraciones más destacables de Behave
  • Alternativas a Behave: Pytest-BDD
  • Consejos para separar el "qué" del "cómo" a la hora de pensar en tests de aceptación robustos
  • Otros Consejos y buenas prácticas para creación de Escenarios y aplicación de BDD en el mundo real
tema 15

Automatización de tests de UI para aplicaciones Web con Selenium

  • Introducción al testing de interfaces de usuario
  • Particularidades a la hora de establecer criterios de aceptación a la hora de probar UI de una aplicación
  • ¿Qué es el testing de UI?
  • ¿Qué es el testing e2e?
  • ¿Qué es la metodología 12 Factor Apps?
  • Ventajas en la redacción de pruebas e2e
  • Soluciones actuales para el testing de UIs de aplicaciones Web
  • Introducción a Selenium
  • Introducción a Selenium IDE
  • Añadiendo Selenium IDE a nuestro navegador
  • Análisis de la interfaz de Selenium IDE y principales funcionalidades
  • Captura de accciones y pasos con Selenium para pruebas e2e de aplicaciones Web
  • Record-and-Playback
  • Limitaciones de Selenium IDE
  • Exportando acciones y proyectos desde Selenium IDE a distintos lenguajes
  • Introducción a Selenium WebDriver
  • Instalaciones y configuraciones de Selenium WebDriver en proyectos Java y Maven
  • Configuraciones del Selenium WebDriver y uso de distintos navegadores en Java
  • Sintaxis y fundamentos de Selenium WebDriver para Java
  • Redactando tests de UI con Selenium WebDriver para Java
  • Añadiendo tests redactados con Selenium a la implementación Java de escenarios Gherkin y Cucumber
  • Análisis de resultados de ejecución de archivos Features implementados con Selenium
  • Errores más comunes de Selenium en Java y recomendaciones para afrontarlos
  • Trabajando con Docker y Selenium WebDriver para proyectos Java y Maven
  • Instalaciones y configuraciones de Selenium WebDriver en proyectos Python
  • Configuraciones del Selenium WebDriver y uso de distintos navegadores en Python
  • Sintaxis y fundamentos de Selenium WebDriver para Python
  • Redactando tests de UI con Selenium WebDriver para Python
  • Añadiendo tests redactados con Selenium a la implementación Python de escenarios Gherkin y Behave
  • Análisis de resultados de ejecución de archivos Features implementados con Selenium
  • Errores más comunes de Selenium en Python y recomendaciones para afrontarlos
  • Trabajando con Docker y Selenium WebDriver para proyectos Python
  • ¿Qué es Selenium Grid?
  • Configuraciones y uso de Selenium Grid en proyectos Java y Maven
  • Configuraciones y uso de Selenium Grid en proyectos Python
  • Garantizando la escalabilidad y uso de Selenium en varias máquinas y entornos
tema 16

Automatización de tests de UI y e2e para aplicaciones Móvil con Appium

  • Particularidades de las aplicaciones móviles frente a aplicaciones web
  • Soluciones actuales para el testing de UIs de aplicaciones móviles
  • Introducción a Appium
  • Diferencias y similitudes entre Selenium y Appium
  • Versiones de Appium hasta la actualidad
  • Limitaciones principales de Appium
  • Introducción a UIAutomator2 Driver de Appium
  • Requisitos para instalar y configurar Appium y UIAutomator2 Driver
  • Introducción al CLI de Appium
  • Instalaciones y configuraciones de Appium
  • Capturando acciones con Appium
  • Instalaciones y configuraciones de Appium en proyectos Java y Maven
  • Configuraciones de Appium y uso de distintos Sistemas Operativos móviles (Android e iOS)
  • Sintaxis y fundamentos de Appium para Java
  • Redactando tests de UI con Appium para Java
  • Trabajando con Docker y Appium para proyectos Java y Maven
  • Añadiendo tests redactados con Appium a la implementación Java de escenarios Gherkin y Cucumber
  • Análisis de resultados de ejecución de archivos Features implementados con Selenium
  • Errores más comunes de Appium en Java y recomendaciones para afrontarlos
  • Instalaciones y configuraciones de Appium en proyectos Python
  • Configuraciones del Appium y uso de distintos navegadores en Python
  • Sintaxis y fundamentos de Appium para Python
  • Redactando tests de UI con Appium para Python
  • Añadiendo tests redactados con Appium a la implementación Python de escenarios Gherkin y Behave
  • Análisis de resultados de ejecución de archivos Features implementados con Selenium
  • Errores más comunes de Appium en Python y recomendaciones para afrontarlos
  • Trabajando con Docker y Appium para proyectos Python
  • Alternativas a Appium en la actualidad
tema 17

Integración de TDD y BDD en metodologías ágiles

  • Introducción a las metodologías ágiles (Scrum, Kanban, XP)
  • Integración de TDD y BDD en el ciclo de vida del desarrollo ágil
  • El testing en los procesos DevOps y QA
  • Colaboración entre equipos multidisciplinarios
  • Adaptación del proceso de desarrollo a los cambios
  • Gestión del tiempo y priorización de tareas
tema 18

Integración continua y despliegue continuo (CI/CD), Testing en Producción y en entornos DevOps

  • Introducción al testing A/B
  • Introducción a la Integración Contínua (CI)
  • Introducción a la Entrega Contínua (CD)
  • Conceptos y principios de CI/CD
  • Automatización de pruebas y despliegue en CI/CD
  • Introducción a testing en entornos de Producción
  • La importancia del feedback en producción
  • Monitorización y alertas en CI/CD
  • Análisis de eventos
  • Logging
  • Introducción al Beta Testing
  • Recibiendo feedback de usuarios
  • Prácticas de testing en Producción: Canary Release
  • Prácticas de testing en Producción: Staged Rollout
  • Prácticas de testing en Producción: Dogfooding
  • Prácticas de testing en Producción: Dark Launching
  • Introducción a testing en entornos de DevOps
  • La infraestructura como código
  • Gestión y orquestación de contenedores
  • Servicios cloud disponibles a tener en cuenta
  • Prácticas de testing para entornos: Configuración de entornos
  • Prácticas de testing para entornos: Testing de infraestructura
  • Prácticas de testing para entornos: Testing destructivo
  • Introducción a Jenkins
  • Introducción a WebHooks en Github
  • Configuración de pipelines de CI/CD con Github Actions
  • Integración de imágenes de Docker con el Registry de Github Actions
  • Mejora continua, documentando las estrategias de testing y adaptación al cambio
tema 19

Librerías y herramientas de testing más destacables del mercado actual

  • Comparando herramientas de grabación de pruebas frente a librerías de código
  • Librerías de tests para aplicaciones JavaScript y Web
  • Introducción a Cypress y Cypress Dashboard
  • Instalación de Cypress Recorder en el navegador
  • Grabación de pasos Cypress y exportación desde Cypress Recorder
  • Creación de proyectos Cypress con Javascript y Node
  • Análisis de sintaxis y fundamentos de Cypress
  • Ejecución de tests de Cypress y análisis de resultados
  • Introducción a Katalon Studio
  • Ventajas de Katalon Studio y el concepto de testing CodeLess
  • Katalon usa por debajo Selenium y Appium
  • Introducción a Katalon Recorder
  • Instalación de Katalon Recorder en el navegador
  • Testing de aplicaciones web y Web Apis con Katalon Studio
  • Analítica de informes de ejecución en Katalon TestOps
  • Usando Katalon Studio para testing BDD con Gherkin y Cucumber
  • Funcionalidades principales de Katalon
  • Integraciones de otras herramienta con Katalon Studio
  • Limitaciones más destacables de Katalon
  • Librerías de tests para aplicaciones C#
  • Librerías de tests para aplicaciones Go
  • Librerías de tests para aplicaciones PHP
  • Librerías de tests para aplicaciones móviles nativas Android
  • Librerías de tests para aplicaciones móviles nativas iOS
  • Testing de Web Apis desde Postman
  • Otras librerías destacables y herramientas recomendadas
tema 20

Proyectos prácticos aplicando TDD y BDD

  • Presentación y discusión de los proyectos finales
  • Planificación y diseño de los proyectos
  • Desarrollo de una API RESTful con TDD y BDD
  • Creación de una aplicación web con TDD y BDD
  • Implementación de un sistema de colas con TDD y BDD
  • Resolución de problemas y aprendizaje a través de la práctica
  • Evaluación y retroalimentación del proyecto
  • Refinamiento y mejora de proyectos a lo largo del tiempo

Curso de Testing con TDD y BDD bonificado para Empresas a través de FUNDAE

Somos entidad organizadora de FUNDAE, todas nuestras formaciones se pueden bonificar hasta el 100%, sujeto a vuestro crédito disponible y a cumplir con todos los requisitos de realización establecidos por la Fundación Estatal para el Empleo.

 

Si desconoces el funcionamiento de las bonificaciones, ofrecemos el servicio de gestión en FUNDAE, consúltanos cualquier duda que te surja.

Descargar Guía FUNDAE
imagenFundae
iconClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClient