/curso-tdd

Curso de desarrollo para asegurar la calidad del software

Primary LanguagePerl

Curso de programación para QA -3ª edición

Build Status 💟 CircleCI 💟 DevQAGRX 💟 Comprueba README

En este curso trataremos de aprender las técnicas necesarias para trabajar en un entorno de desarrollo, para aplicaciones nativas en la nube o cualquier otra cosa. Será un curso conceptual, pero también práctico donde aprenderemos a desarrollar diferentes técnicas en cualquier lenguaje de programación y diferentes microframeworks. La idea principal es que este curso sirva de introducción a la asignatura de infraestructura virtual o cualquier otra asignatura de informática avanzada.

Cada sesión contendrá una parte teórica y una práctica; la parte teórica será una clase magistral de 20-30 minutos, seguida de una parte práctica. Durante el curso se irá elaborando un proyecto en equipo de dos o tres personas. Cada dos o tres sesiones se tendrá que alcanzar un hito del proyecto que se haya elegido, que se tendrá que entregar (y se evaluará de forma más o menos automática) al final de las mismas. Cuando se completen todas las sesiones y objetivos generaré un badge para el repo donde se haya cumplido todo (y dependiendo del nivel en el que se haya alcanzado, se hará también una recomendación en LinkedIn o donde se solicite).

Planificación del curso

  • Sesión 1: Git y GitHub/GitLab. Uso básico y avanzado de sistemas de control de fuentes y de sitios web para desarrollo colaborativo.

    • Conceptos básicos: pull, pull request, push, clone.
    • Releases y tagging.
    • Material.
  • Sesión 2: Resolviendo problemas usando la informática.

    • Temática: hay vida más allá de cliente-servidor.
    • Material.
  • Sesión 3: Servicios avanzados en informática.

    • Configuración distribuida.
    • Logs.
    • Almacenamiento de datos.
    • Material.
  • Sesión vermut: Análisis de RadarCovid. Aprovechando que han "liberado" RadarCOVID, vamos a ver qué se puede aprender del código publicado sobre lo que se debe (y no se debe hacer) en desarrollo de software de calidad.

    • Dejar claves privadas en el repo
    • Tests
    • Ficheros diversos abandonados.
    • Reproducibilidad de la compilación.
    • ...
  • Sesión 4: Requisitos funcionales, personas (usuarios ficticios), desarrollo por capas y todo lo que necesitamos para empezar.

    • Uso de issues/hitos en el desarrollo basado en test.
    • Material.
  • Sesión 5: Comienzo de la implementación "defensiva".

    • Cómo organizar un proyecto: canvas, milestones, issues.
    • Documentación de las historias de usuario y traslado a issues.
    • Comienzo del diseño, en general, de las clases (y excepciones).
    • Material.
  • Sesión 6: Task runners y cómo usarlos.

    • Diferentes tipos de task runners y por qué son útiles para todo.
    • Material.
  • Sesión 7: Preparando tu aplicación para testear: separation of concerns, inversión de dependencias, diseño.

    • Cómo asegurarnos desde el diseño de que se cumplen las historias de usuario.
    • Material.
  • Sesión 8: objetos de test, aserciones, marcos de pruebas, fases del test.

  • Sesión 9: Qué es la integración continua y cómo usarla para ejecutar los tests automáticamente.

    • Hooks de git y cómo usarlos para testear todo el tiempo.
    • Diferentes sistemas de integración continua: Travis, GitHub Actions...
    • Material.
  • Sesión 10: CI: Acelerando con Dockerfiles.

  • Sesiones 11: Tests de cobertura y por qué son importantes.

  • Sesión 12: Tests funcionales/de integración

    • Cómo testear microservicios y sistemas basados en tareas.
    • BDD y algunos frameworks.
    • Material.
  • Sesión 13: Inversión de dependencias.

  • Sesión 14: Tests adicionales

    • Tests de prestaciones.
    • Tests de front-end.
    • Tests de regresión.
    • Material.
  • Sesión 15: Última sesión.

    • Aclaración de dudas.

Proyectos inicialmente propuestos

Se puede usar esta plantilla para los proyectos.

Lugar

Se hará de forma virtual usando Jitsi, Rocket Chat o alguna plataforma libre.

Clases

De lunes a viernes, 7 al 11 y 14 al 18 de septiembre de 12:30 a 2 de la tarde, 21 al 25 de septiembre 13:45 a 15:00.

Título

A los que superen todos los hitos y actividades planteados en el curso se les hará una recomendación en LinkedIn por parte del profesor.

Inscripción

Añade tu nick de GitHub y perfil de LinkedIn a esta tabla mediante un pull request. La inscripción es gratuita y abierta a quien lo desee, pero los asistentes tendrán que traer su propio portátil y conexión a Internet (si no tienen acceso al WiFi de la universidad).

Proyectos realizados

Los proyectos en elaboración se enlazarán en en esta página.

Instrucciones de uso

make y pandoc deben estar presentes para generar los PDFs.

make

o

make doc

generará los proyectos en un solo PDF.