TDD - Test Driven Development
3 days - Advanced
Designed for developers seeking to refine their coding practice, this training delves into Test-Driven Development. Enhance your theoretical and practical skills in TDD, elevate your code quality, and embrace craftsmanship through hands-on, lesson-rich real-world use cases.
Training details
Test-Driven Development (TDD) is a straightforward, elegant, and effective programming technique built on a cycle of short feedback loops: write a test, make it pass, and refactor the code. This approach balances the creation of well-structured, readable software with the reliability of automated testing.
This intensive 3-day training is designed to provide a comprehensive understanding of Test-Driven Development. It combines theoretical knowledge with hands-on practice to enable participants to apply TDD effectively in their software development projects.
By the end of the training, you will have acquired the knowledge to effectively apply TDD techniques, setting the foundation for creating or enhancing applications with operational, highly maintainable, and scalable code.
Objectives
- Understand the fundamentals and principles of TDD.
- Master the TDD cycle: Red, Green, Refactor.
- Develop a simple application using TDD.
- Gain proficiency in refactoring techniques.
- Develop skills to integrate TDD into existing development workflows.
Target Audience
- Software Developers
- Technical Leads
- Architects
- QA Engineers
- Project Managers with technical background
Prerequisites
- Experience in software development.
- Knowledge of object-oriented programming (JAVA, C#, etc.).
- Laptop with at least 8Gb of memory, IDE installed.
Pedagogical method
TThis training focuses on hands-on skills, based on practical exercises as well as discussions and sharing the trainer's practical experience.
- Interactive lectures: 20%
- Hands-on coding exercises: 70%
- Group discussions and Q&A sessions: 10%
Evaluation and follow-up mode
Skill acquisition is continuously assessed throughout the training through a series of workshops and practical exercises. Immediately following the training, we conduct a thorough assessment of trainee satisfaction. Participants will receive a training certificate upon completion, which details the training objectives, content, program, duration, and a formal acknowledgment of the skills and knowledge acquired.
Program
Day 1
- Introduction to Test-Driven Development
- Overview and History of TDD
- Perception of TDD: Myths vs. Reality
- Redefining Testing in Software Engineering and TDD Contexts
- Technical Implications of TDD
- The Importance of Feedback Loops
- The TDD Cycle: Red, Green, Refactor
- TDD and Software Engineering Paradigms
- Reversing the Classical Industrial Model
- Comparing Industrial and Artisanal Models in Software Development
- The Importance of Refactoring
- Challenges and Barriers in Adopting TDD
- TDD General Patterns
- TDD Pattern: Isolated Test
- TDD Pattern: Test List
- TDD Pattern: Assert First
- TDD Pattern: Test Data
- TDD Pattern: Evident Data
- Red Bar Patterns
- TDD Pattern: Starter Test
- TDD Pattern: Explanation Test
- TDD Pattern: Learning Test
- TDD Pattern: Another Test
- TDD Pattern: Regression Test
- Green Bar Patterns
- TDD Pattern: Fake It Till You Make It
- TDD Pattern: Triangulation
- TDD Pattern: Obvious Implementation
- TDD Pattern: Fixture
- Practical Hands-On Session
- Introduction to Test-Driven Development
Day 2
- TDD Survival Principles
- "Don’t Repeat Yourself" Pattern
- "You Ain’t Gonna Need It" Principle
- Advanced Hands-On Practice and Application of Concepts
- End-of-Day Summary and Reflection
- TDD Survival Principles
Day 3
- Handling External Dependencies in TDD
- "Stub" Pattern
- "Mock" Pattern
- Hands-On Session and Application of Concepts
- TDD Challenges and Antipatterns
- Long Setup Code
- Setup Duplication
- Long Running Tests
- Fragile Tests
- Unexpected test success
- Writing overly large tests
- Testing private methods
- Training Recap and Closing Discussion
- Handling External Dependencies in TDD
Contact us to discuss your project
Send us an email and we will get back to you as soon as possible[email protected]