TDD your Microservice from Git to Kubernetes
This workshop presents the foundations of Test-Driven Development (TDD) with a hands-on approach and guides the participants through the development of a WebApi.
In addition to TDD some other techniques like Continuous Integration, Tracer Bullet and Hexagonal Architecture will be explained and used.
Participants will work with netCore, Git, Docker and Kubernetes. Participants are required to be familiar with netCore and Git but no Docker/Kubernetes knowledge is required. Beyond the software installed on their machines, participants will use GitHub and Azure services (no subscription required).
The workshop is mainly based on the ideas of two books: Growing Object-Oriented Software Guided By Test (by Freeman & Pryce) and Continuous Delivery (by Humble & Farley).
Audience: C# (netCore) developers with no real-world experience applying TDD in microservices scenarios
Learning outcomes:
* Understand the TDD / CI/CD workflow in the context of microservices
* Understand how to deal with common challenges when applying TDD
* Get a hands-on experience developing Microservices using TDD & CI
Agenda:
* The foundations
--- TDD basics
--- TDD complementary practices: CI & DDD and
--- A bit of architecture with TDD flavor
--- Microservices in a nutshell
--- The role of Docker and Kubernetes
* Kick-starting the development
--- The walking skeleton
--- TDD at different levels: Unit, Integration and E2E tests
--- TDD styles: London, Chicago and Buenos Aires
--- TDD Heuristics to select the next test
--- Strategies to deal with Dependencies
--- The pipeline as a first class citizen
* Sustainable Development
--- Tests and frequent commits as the pulse of progress
--- Test patterns and Test-Readability
--- Refactoring for the tests
--- TDD in legacy applications
NicoPaez is a seasoned Software Engineer and Professor. He shares his time between industry and academia. He teaches Software Engineering at Universidad de Buenos Aires. He has published several articles and a book about Agile Software Development. He has almost 20 years of experience working in the software industry. He currently works as an independent consultant helping teams to improve their software delivery practices.