TDD Course – Introduction level

First steps to learning how to work with Test Driven Development (TDD). In this course, you will learn:

 

What automated tests are and why they are essential for creating robust and resilient applications
Key concepts and the most popular TDD tools

 

This is the beginner level, intended for those starting from scratch. For professionals already familiar with the practice, we offer the intermediate level.

 

CORPORATE PROGRAM
Do you think this course might interest more members of your team? Fill out the form and request a proposal with special discounts.

Instructor: Benjamin Rae
  • English
  • English, Spanish
  • 16h course
  • Downloadable resources
  • Access during 1 year
  • Certification included
  • Instructor support
  • TDD Community

Introduction level: What are you going to learn?

  • Presentation of all the concepts you need to become familiar with TDD: the goal is for you to establish the fundamentals, understand why testing is necessary, how to perform tests, and the value they bring.
  • How to configure your environment for testing: become familiar with the tools we will use for testing and how to configure them.
  • Different test methodologies: What types of tests exist and what we can achieve with each of them.
  • How to develop software following the classic TDD workflow: what it consists of and what are its main advantages.

Course content

Modul 1: What is TDD? 1h
First we will briefly learn about the history of TDD, where it comes from and talk about the two key schools of TDD (Inside-out and Outside-in).
Modul 2: What is testing? 2h
In this module we will learn how to test our code manually and start to introduce test automation to help us understand the value of test automation.
Modul 3: Setting up your testing environment 3h
In this module we will set up our testing environments for both Java with JUnit 5 and TypeScript with Vitest to best work with automated tests.
Modul 4: Main types of tests 3h
With our testing environments ready, we will learn about the main types of automated tests, how to write them and when to use them to understand the value they give us. We will also discover how to use test doubles to help us with our automated testing.
Modul 5: Testing plan 3h
Now that we know about the different types of tests, it’s time to discover how to combine them into a testing plan and test an application.
Modul 6: Testing best practices 2h
Knowing the different types of tests is not enough, in this module we will discuss what to test, what not to test and how to improve our tests.
Modul 7: Other concepts related to testing 30 min
In this module we will introduce other concepts related to testing that are go beyond the main types of tests like mutation, coverage and property-based testing.
Modul 8: Why we do TDD? 2h
Now that you know how to test your code, it’s now time to discover how working with TDD can help us. Here we will discuss how TDD can aspects of our development such as design and efficiency.
Modul 9: How to do TDD? 3h
Finally, it’s time to start developing with TDD, here we will learn how to use TDD to develop our code in small increments or baby steps following the TDD cycle.

This course gives you access to:

  • Theoretical and practical resources to learn the basic concepts.  
  • Quizzes to validate your learning progress.  
  • Detailed examples of each of the techniques explained.  
  • Katas to practice what you learn.  
  • Instructor support: Each level offers a direct communication channel with the course instructors to resolve doubts and share progress. All our instructors are daily practitioners of these methodologies.  
  • TDD Community: Additionally, you'll have access to a community channel where you can share your progress, doubts, support materials, and your overall experience with other course members.  
 
By the end of the course, you are expected to be able to:
  • Write fast and maintainable tests: reliable, easy-to-maintain, and readable tests. Automation as a key process to make tests viable and scalable.  
  • Set up a testing environment: The most common implementation scenario for testing environments and tasks to configure it.  
  • Understand different testing methodologies: The types of tests that exist and what can be achieved with each one.  
  • Develop software following the classic TDD workflow: what it involves and its main advantages.

Who is it addressed to?

This is a purely technical course, so it is assumed that you already know how to program in a given language.
 
A solid foundation in Object-Oriented Programming will allow you to get the most out of this course. We recommend using an IDE (Integrated Development Environment) and familiarizing yourself with keyboard shortcuts, as this will help you gain a lot of speed and ease in development.
 
It’s ideal for you if: You already know how to program and want to improve your programming skills but have never done TDD. If you need to start from scratch, this is the perfect level for you.

Requirements

  • Be proficient in at least one programming language.  
  • Be familiar with the syntax of that language, data types, control flow, and other specific language features.  
  • Have a solid foundation in Object-Oriented Programming.  
  • We recommend using an IDE (Integrated Development Environment) and getting familiar with keyboard shortcuts.  
  • A GitHub or GitLab account.

What are the advantages of using TDD?

By applying TDD at the level this course provides, you will help create more reliable and flexible code, promoting scalable and high-quality solutions through automation.

Improved code quality: Ensures code quality, reduces errors, and makes it easier to add new features. You can verify that your code works as expected.  
Regression testing: Ensures that functionality remains intact after making changes. TDD makes this process more manageable by enabling fast and simple testing.  
Maintenance and scalability: TDD reduces risks related to software maintenance and scalability, as well-designed and tested code is easier to maintain and scale.  
Increased customer satisfaction: Developing a higher-quality product enhances customer satisfaction and loyalty.  
Long-term cost reduction: TDD helps lower long-term costs by reducing the time and resources needed to debug errors.  
Faster time to market: TDD facilitates continuous integration and delivery (CI/CD), speeding up the launch of new products and features. You'll receive quick feedback on the state of the code and can identify issues in the early stages.  
Team collaboration and productivity: It helps team members understand functionality and use cases, improves communication, and reduces misunderstandings, leading to smoother collaboration and higher productivity. It also boosts the technical level of the team and contributes to talent retention.  
Easier onboarding of new professionals: Writing tests acts as living documentation, lowering the entry barrier for new professionals joining a team.  


More info about How to effectively apply TDD in Software Development

We have already delivered this course to these clients

cazoo-logo roche-logo santander-logo

Do you have any questions?

If you're a company in need of a license package, we would be happy to prepare a custom proposal for you.