Giter Site home page Giter Site logo

jj / curso-tdd Goto Github PK

View Code? Open in Web Editor NEW
78.0 4.0 129.0 10.25 MB

Curso de desarrollo para asegurar la calidad del software

Home Page: https://jj.github.io/curso-tdd

License: MIT License

Perl 67.15% Makefile 0.04% Dockerfile 0.02% Raku 0.76% Python 0.29% Ruby 0.10% Rust 0.10% TypeScript 0.06% SCSS 5.18% HTML 9.01% JavaScript 17.10% CSS 0.13% Nim 0.05% R 0.02%

curso-tdd's Introduction

Curso de desarrollo ágil - 5ª edición

Build Status 💟 CircleCI 💟 DevQAGRX 💟 Comprueba texto 💟 Test Nim 💟 Test Raku

Índice

Introducción

En este curso trataremos de aprender las técnicas necesarias para trabajar en un entorno ágil 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 durará unos 20-30 minutos; el resto del trabajo se hace de forma asíncrona interaccionando a través de un grupo de Telegram. Durante el curso se irá elaborando un proyecto en equipo de dos o tres personas. Se tendrán que alcanzar hitos del proyecto que se haya elegido que se evaluarán automáticamente usando tests. 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

La tercera edición ha quedado grabada en esta lista de reproducción. El planteamiento general del curso está en esta presentación.

La cuarta edición del curso, ya completa, está en esta lista de reproducción.

Tendremos estas sesiones:

  1. Introducción

    • Qué vamos a hacer en el resto del curso, cómo nos vamos a organizar
    • Grupos de Telegram, bots en los grupos.
    • Presentación.
  2. Git y GitHub/GitLab. Uso básico y avanzado de sistemas de control de fuentes y de sitios web para desarrollo colaborativo.

  1. Diseño de una aplicación

  2. Resolviendo problemas usando la informática.

  1. Servicios avanzados en informática.
  1. Desarrollo ágil
  • Cómo organizar un proyecto: canvas, épicas.
  • Desarrollo por capas y todo lo que necesitamos para empezar.
  • Historias de usuario, user journeys y todo eso.
  • Material.
  • Presentación.
  1. Diseñando la aplicación

    • Historias de usuario
    • Uso de issues/hitos en el desarrollo basado en test.
    • Diseño dirigido por el dominio
    • Material.
    • Presentación.
  2. Refinando el diseño y organizando el desarrollo

  3. El arte de la buena revisión de código.

  4. Comienzo de la implementación "defensiva".

  • Documentación de las historias de usuario y traslado a issues.
  • Comienzo del diseño, en general, de las clases.
  • Diseño de excepciones.
  • Material.
  • Presentación.
  1. Task runners y cómo usarlos.
  1. Preparando tu aplicación para testear: separation of concerns, diseño.
  • Cómo asegurarnos desde el diseño de que se cumplen las historias de usuario.
  • Material.
  • Presentación.
  1. Objetos de test
  1. Ejecución de tests
  1. Qué es la integración continua y cómo usarla para ejecutar los tests automáticamente.
  • Diferentes sistemas de integración continua: Travis, GitHub Actions...
  • Acelerando con Dockerfiles.
  • Material.
  • Presentación.
  1. Inversión de dependencias.
  1. Tests de cobertura y por qué son importantes.
  1. Tests funcionales/de integración/end to end
  • Cómo testear microservicios y sistemas basados en tareas.
  • BDD y algunos frameworks.
  • Material.
  1. Tests adicionales
  • Tests de prestaciones.
  • Tests de front-end.
  • Tests de regresión.
  • Material.

Hitos

Las entregas se organizan en hitos, que corresponden (en general) a una sesión. Este es el esquema de lo que hay que hacer en cada hito con enlaces

Hito Sesión(es) Descripción y enlace
0 2 Crear repo con componentes
1 3 Idea de problema a resolver
2 4 Gama de aplicaciones
3 5 Servicios
4 6 Desarrollo ágil
5 7 Historias de usuario
6 8 Hitos
7 9 Revisiones
8 10 Programando
9 11 Gestor de tareas
10 12 Linter
11 13 Tests y aserciones
12 14 Marcos de test
13 15 Integración continua
14 16 Inyección de dependencias
15 17 Tests de cobertura

Esta información te la da el bot kke, añadido al grupo de Telegram del curso, o con una conversación directa con él.

La informática consiste en resolver problemas del usuario mediante un ordenador. Estos son algunos de los problemas con los que se podría tratar.

Se puede usar esta plantilla para los proyectos.

Lugar

Se hará en la plataforma de Spain AI. El enlace se proporcionará en el grupo de Telegram en el que están los inscritos.

"Título" o acreditación de haber realizado el curso.

Spain AI proporcionará un título en PDF al final del curso.

Inscripción

Inscríbete en EventBrite. La inscripción es gratuita.

Proyectos realizados

Los proyectos en elaboración se enlazarán en en esta página. Los de las ediciones anteriores están en este directorio.

Instrucciones de uso

make y pandoc deben estar presentes para generar los PDFs.

make

o

make doc

generará los proyectos en un solo PDF.

Si tienes instalado mask, puedes usarlo también.

curso-tdd's People

Contributors

agr8 avatar alexmenor avatar alexrodriguezlop avatar angelgf22 avatar antmordhar avatar antoniogamiz avatar axaryk avatar balath avatar crisconru avatar dipzza avatar dylan-nogueras avatar elenamerelo avatar igponce avatar jj avatar jmrr avatar jotape736 avatar juanmi-gh avatar kevincamp avatar kobedinho avatar lidiasm avatar luisbalru avatar manueljnunez avatar marquirj avatar mati3 avatar migueorg avatar muetsii avatar raulsoria98 avatar rpalaciosg avatar thejosess avatar yabirgb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

curso-tdd's Issues

Pregunta

Hola, soy Felipe, de Colombia, me gustaria saber como participar en el curso, tambien me gustaria saber si el curso de TDD tiene costo

HITOS.MD

@JJ creo que es un sentir popular, si tuvieramos un único documento, como fuente de la verdad, al que ceñirnos a la hora de completar los hitos del curso. Estaría guay tener explicado cada hito, con cada requisito para ser completado. Un ejemplo con el hito 0, pero así con todos.

Hito 0

  • Crear un repositorio para el proyecto.
  • Sacar una release con el tag 0.0.1 del repo.
  • Modificar el fichero proyectos.md del repositorio del curso indicando la versión.
  • Mandar PR al repo original

Añadir tests para los PRs

Añadir una serie de tests que comprueben la corrección de lo enviado en el PR.

  • Hito 1: Comprobar hitos e issues.
  • Hito 2: Comprobar existencia de herramienta de construcción o task runner.
  • Hito 3: Comprobar badge de Travis.
  • Hito 4: Comprobar de nuevo badge de Travis.
  • Hito 5: Comprobar codecov o similar.

Duda: cambio de proyecto

(perdona si abuso del sistema de issues, pero me pareció que es más ordenado y claro que preguntarlo por telegram)

Resulta que he empezado mis deberes con la aplicación de datos medioambientales. Lo escogí porque ahora mismo estoy trabajando con APIs REST, y me servía para usar mis conocimientos pero también coger más destreza empezando el proyecto de cero. Pero me encuentro finalmente un tanto desilusionado, por:

  • En la fase de análisis vi que el tamaño para hacer algo medianamente útil es bastante grande, creé 5 hitos y muchas historias de usuario, sólo para tener algo que se pudiera usar. Y ni siquiera hemos empezado a programar.

  • Pasé mucho tiempo buscando fuentes de datos, y veo también que es trabajoso adaptar y agregar cada fuente de datos.

  • Otro alumno ha escogido el mismo proyecto.

  • No me veo terminando esto, menos manteniéndolo.

  • Encima mi proyecto está dando errores en los tests y creo que seguirá generando problemas.

Por otro lado, mientras añadía funcionalidad al proyecto, traté de incorporar un framework del que había oído hablar. Y encontré que no se adaptaba muy bien al problema de los datos medioambientales, PERO sin embargo iba muy bien para una vieja idea que nunca llegué a empezar por falta de conocimiento.

Esta nueva idea es una aplicación web, un chat con tiradas de dados para rol. A diferencia del otro:

  • Gracias al framework, el tamaño de algo míniamente valioso es menor que lo de los datos medioambientales.

  • Se trata de un ámbito que conozco bastante mejor.

  • Tengo claro el diseño.

  • Es algo que una vez estuviera hecho, yo mismo sería usuario.

  • Me veo terminando al menos una versión usable y manteniéndola, por lo que hay contribución también a la sociedad (por los usuarios, y porque sería AGPL).


tl;dr;

  • ¿Puedo cambiar de proyecto poniéndome al día con las tareas?

Compaginar horarios del trabajo con el curso

Hola @JJ , ¿se contempla el grabar las clases de Jitsi para que la gente que esté trabajando pueda verlas luego?

Entiendo que las prácticas a distancia están permitidas dada la situación actual, quizás habría que aclarar eso en el README.md

Un saludo.

Dividir la primera sesión en dos partes

La primera sesión es bastante pesada: una parte es crear la infraestructura, otra empezar a escribir las historias de usuario. La infraestructura (cómo usar issues y demás) y los high concepts deberían ir primero, para explicar en la segunda sesión los conceptos de metodología de trabajo, así daría quizás tiempo a todo.
De hecho, en esta edición incluso la segunda sesión se ha quedado un poco corta...

"Eat my own dogfood"

Crear un fichero de tareas para automatizar las que hay:

  • Fatpackear tests
  • Generar gráficos
  • Lo que surja

Poner las historias de usuario primero

Quizás como parte de la (nueva) primera sesión. Antes de empezar a diseñar módulos y demás, lo primero y principal es saber qué se quiere hacer. Por eso, las historias de usuario deberían ir conceptualmente antes en el temario, para luego pasar a metodologías y demás.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.