mobile menu icon
Test Driven Development (TDD)

TDD is a technique which, when correctly applied, allows us to develop well-designed code that strictly complies with business needs.

In this training, after every lesson during which we will delve into the foundations of TDD, you will apply the new knowledge in a practical way by doing ensemble programming with other participants, always under the guidance of the trainers.

teaching logo Information

20 hours
Remote (ask about in-person).
590 € / person
(V.A.T. not included)
For open editions: 50% discount for underrepresented groups in technology
I'm interested!
// Contents
1. Introduction to TDD
1.1. Why TDD?
1.2. TDD mechanics
--- 1.2.1. Basic TDD cycle
--- 1.2.2. Canon TDD
--- 1.2.3. Examples list, step size and triangulation
1.3. About testing
2. Writing and refining a list of examples
2.1. How do we generate a list of examples?
2.2. Understanding the problem
2.2. Refining the list of examples
--- 2.2.1. Partitions: redundant examples
--- 2.2.2. Boundary-value analysis: missing examples
2.3. Mutation testing
3. Test order and heuristics
3.1. Behaviour composition
3.2. Order of examples in TDD
3.3. Useful heuristics
--- 3.3.1. Zero, One, Many
--- 3.3.2. ZOMBIES
4. Green Bar patterns
5. Using test doubles: why, where and how?
5.1. Value of test doubles
5.2. Recognizing awkward dependencies: FIRS
5.3. How do we design code that respects FIRS?
5.4. Dummies, fakes, stubs, spies and mocks
5.5. Enabling TDD with testable design
6. Problems and tips when using test doubles
6.1. Common misconception: the class as the unit
--- 6.1.1. Objects vs Values
--- 6.1.2. Peers vs internals
--- 6.1.3. What is the unit?
6.2. What to double and what not to double?
6.3. Test doubles as feedback tools
6.4. Listening to the tests
6.5. Tips for designing interfaces that are robust to change
6.5. The roots of trauma with mocks
7. Sustainable TDD and TDD cycle variations
7.1. Tips for sustainable TDD
7.2. Useful TDD cycle variations
8. Outside-in TDD & TDD styles
8.1. Advantages over inside-out
8.2. Classicist & Mockist approaches
--- 8.2.1. Development flow
--- 8.2.2. Design implications
--- 8.2.3. Unit definition
// Languages

The examples and katas are in Java, JavaScript, C#, TypeScript and PHP, but if you need another language please contact us.

// Requirements

We will send you an email telling you everything you need to install before the training.

// Who is it intended for?

This is a training for people who already know how to code. Mostly programmers but also testers who want to learn more about code quality and automatic testing can benefit from it. All you need is to bring an open mind and a desire to learn. If you have never tried TDD before, you might be surprised.

// Private training and open editions

The training can be conducted as a private training, exclusively for the company that contracts it, or as an open edition. We try to offer one open edition every term. It is common for small companies to send people to our open editions. If you would like to be notified of upcoming open editions, please write to us at contact@codesai.com or fill out the contact form.

Please note that private training sessions are held once the client hires us. We will need to know the date one month in advance in order to be able to schedule them.

teaching logo Information

20 hours
Remote (ask about in-person).
590 € / person
(V.A.T. not included)
For open editions: 50% discount for underrepresented groups in technology
I'm interested!
OK! I am interested in taking the Test Driven Development (TDD) Course

If you wish to apply or if you still have any questions about this training, please contact us at contact@codesai.com or fill out the contact form.

We will try to get back to you as soon as possible!

Send Message