Jphvn8blrsfyitey1cje
2 DAY COURSE

Uncle Bob's Advanced TDD

Topics covered at TDD-ADVANCED-02-02
View Schedule & Book More dates available

Next up:

This two-day, hands on course will explain the principles of Test Driven Development as described in Agile Software Development: Principles, Patterns and Practices, by Uncle Bob.

This is an intense, exercise-driven course, written and delivered by Uncle Bob Martin, which focuses on the design of clean, robust, and maintainable unit and acceptance tests. You will learn the principles of test design, and the practices of keeping tests clean. More importantly, you will learn the principles of designing applications for testability. Exercises include the refactoring of bad tests, the writing of clean tests, and the design and refactoring of applications to make them testable.

Exercises are in Java, but are applicable to C#, C++, and other object oriented languages.

Learn how to:

  • Understand the professional’s attitude towards TDD
  • Cope with a non-TDD organization
  • Understand the Principles of Clean Tests and Conventions for well written tests
  • Avoid and repair fragile tests
  • Test with GUIs, Databases, Web Containers, and external resources
  • Stubbing, Mocking, and Test Doubles
  • Use Metrics and Tools
  • Understand BDD
  • Use Acceptance Testing

What the community says

"Very knowledgeable - good learning techniques."

Isabelle Laking, Investec on 31st Oct 2017

"Superb and engaging course."

Tom Rice, Barclay Card on 4th Apr 2017

"Very interesting and kept me engaged with the lectures, found the sessions very productive with many topics covered in the limited time."

Dominic Everard, Cubic on 4th Apr 2017

"Great course."

Pontus Ljungdahl on 11th May 2016

"Did not disappoint! Uncle Bob is a legend!"

Andrei Petric on 11th May 2016

About the Author

Uncle Bob (Robert C. Martin)

Robert Martin (@unclebobmartin) has been a programmer since 1970. He is the Master Craftsman at 8th Light inc, an acclaimed speaker at conferences worldwide, and the author of many books including: The Clean Coder, Clean Code, Agile Software Development: Principles, Patterns, and Practices, and UML for Java Programmers.

Thanks to our partners

Moderated Discussion of:

  • Fears, concerns, confounds & blockages
  • Professionalism, Clean Code, and TDD
  • Push-back: What Managers really want
  • Why TDD?
    • The Three Laws of TDD.
    • Understanding the Costs and Benefits.
  • Clean Tests
    • Test Smells
    • Multiple Logical Asserts
    • Accidental Complexity
    • Too Slow
    • Scope Too Wide
    • Slang
    • Cleaning Tests
    • Composed Asserts
    • Composed Results
  • Testing Behaviour vs. State
    • Mocking and Stubbing
    • Ontology of Test Doubles
  • Exercises
    • Initial Setup
    • Coverage
    • Critiquing some good and bad tests
    • Cleaning Tests
    • Review The Presenter Model for UI testability
  • Coding Dojo
    • Group Exercise
    • TDD under the microscope

F.I.R.S.T Principles

  • Making Tests Fast
  • Database Isolation
  • Web Container Isolation
  • Impact Analysis
  • Isolating Tests
  • Repeatable Tests
  • Hosting, Mocking
  • Test Hierarchies
  • Self Validating Tests
  • Testing Tools, the good and the bad
  • Timely Tests
  • Test Conventions and Heuristics
    • Naming Conventions
    • Statistical Testing
    • Principles of Test Encapsulation: Testing Private Methods
    • Testing Inheritance Hierarchies
    • Test Per Class
    • Splitting Test Files
  • Writing Maintainable Tests
    • The Fragile Test ''Problem''
    • Interface Sensitivity
    • Abstract API's
    • Behaviour Sensitivity
    • Data Sensitivity
    • Context Sensitivity
    • Sensitive Comparison and Equality
    • Test Sensitivity
  • Preserving Tests
    • When are Tests Discarded
    • Solutions
  • Exercises
    • Fitnesse
    • Wiki
    • Tests
    • Fixtures
    • Setup
    • Acceptance Tests Smells
    • Critiquing Acceptance Tests
  • Metrics
    • Coverage
    • Combining Cyclomatic Complexity and Coverage
    • Braithwaite's Correlation
    • Wall Metrics
  • S.O.L.I.D The Principles of TEST design
    • How the principles of OO are used to design good tests
  • Static Analysis Tools
  • Behaviour Driven Development (BDD)
  • GUI Testing
  • Testing Through the GUI
  • Testing Around the GUI
  • Stubbing the GUI
    • Stubbing the applications
  • The Levels of Testing
  • The Dilemma of Manual Testing
  • Unit Tests
  • Component Tests
  • Integration Tests
  • System Tests
    • Exploratory Tests
  • Functional and Performance Testing
  • Legacy Code
  • Convincing Others
  • Exercises
  • Refactoring applications to Seperate GUI
  • Testing the GUI seperately
  • Applying the Principles
    • Applying the Levels

Audience

Prerequisites

For this Advanced Test Driven Development course, you need to be a developer with one or more years experience with TDD. Please note that exercises will be in Java, and delegates will need a sufficient understanding of the language for writing tests and creating applications.

Bring your own hardware

You are required to have your own laptop with the following:

  • Preferred IDE
  • 2GB ram
  • Your preferred Browser
Overview

This two-day, hands on course will explain the principles of Test Driven Development as described in Agile Software Development: Principles, Patterns and Practices, by Uncle Bob.

This is an intense, exercise-driven course, written and delivered by Uncle Bob Martin, which focuses on the design of clean, robust, and maintainable unit and acceptance tests. You will learn the principles of test design, and the practices of keeping tests clean. More importantly, you will learn the principles of designing applications for testability. Exercises include the refactoring of bad tests, the writing of clean tests, and the design and refactoring of applications to make them testable.

Exercises are in Java, but are applicable to C#, C++, and other object oriented languages.

Learn how to:

  • Understand the professional’s attitude towards TDD
  • Cope with a non-TDD organization
  • Understand the Principles of Clean Tests and Conventions for well written tests
  • Avoid and repair fragile tests
  • Test with GUIs, Databases, Web Containers, and external resources
  • Stubbing, Mocking, and Test Doubles
  • Use Metrics and Tools
  • Understand BDD
  • Use Acceptance Testing

What the community says

"Very knowledgeable - good learning techniques."

Isabelle Laking, Investec on 31st Oct 2017

"Superb and engaging course."

Tom Rice, Barclay Card on 4th Apr 2017

"Very interesting and kept me engaged with the lectures, found the sessions very productive with many topics covered in the limited time."

Dominic Everard, Cubic on 4th Apr 2017

"Great course."

Pontus Ljungdahl on 11th May 2016

"Did not disappoint! Uncle Bob is a legend!"

Andrei Petric on 11th May 2016

About the Author

Uncle Bob (Robert C. Martin)

Robert Martin (@unclebobmartin) has been a programmer since 1970. He is the Master Craftsman at 8th Light inc, an acclaimed speaker at conferences worldwide, and the author of many books including: The Clean Coder, Clean Code, Agile Software Development: Principles, Patterns, and Practices, and UML for Java Programmers.

Thanks to our partners

Program

Moderated Discussion of:

  • Fears, concerns, confounds & blockages
  • Professionalism, Clean Code, and TDD
  • Push-back: What Managers really want
  • Why TDD?
    • The Three Laws of TDD.
    • Understanding the Costs and Benefits.
  • Clean Tests
    • Test Smells
    • Multiple Logical Asserts
    • Accidental Complexity
    • Too Slow
    • Scope Too Wide
    • Slang
    • Cleaning Tests
    • Composed Asserts
    • Composed Results
  • Testing Behaviour vs. State
    • Mocking and Stubbing
    • Ontology of Test Doubles
  • Exercises
    • Initial Setup
    • Coverage
    • Critiquing some good and bad tests
    • Cleaning Tests
    • Review The Presenter Model for UI testability
  • Coding Dojo
    • Group Exercise
    • TDD under the microscope

F.I.R.S.T Principles

  • Making Tests Fast
  • Database Isolation
  • Web Container Isolation
  • Impact Analysis
  • Isolating Tests
  • Repeatable Tests
  • Hosting, Mocking
  • Test Hierarchies
  • Self Validating Tests
  • Testing Tools, the good and the bad
  • Timely Tests
  • Test Conventions and Heuristics
    • Naming Conventions
    • Statistical Testing
    • Principles of Test Encapsulation: Testing Private Methods
    • Testing Inheritance Hierarchies
    • Test Per Class
    • Splitting Test Files
  • Writing Maintainable Tests
    • The Fragile Test ''Problem''
    • Interface Sensitivity
    • Abstract API's
    • Behaviour Sensitivity
    • Data Sensitivity
    • Context Sensitivity
    • Sensitive Comparison and Equality
    • Test Sensitivity
  • Preserving Tests
    • When are Tests Discarded
    • Solutions
  • Exercises
    • Fitnesse
    • Wiki
    • Tests
    • Fixtures
    • Setup
    • Acceptance Tests Smells
    • Critiquing Acceptance Tests
  • Metrics
    • Coverage
    • Combining Cyclomatic Complexity and Coverage
    • Braithwaite's Correlation
    • Wall Metrics
  • S.O.L.I.D The Principles of TEST design
    • How the principles of OO are used to design good tests
  • Static Analysis Tools
  • Behaviour Driven Development (BDD)
  • GUI Testing
  • Testing Through the GUI
  • Testing Around the GUI
  • Stubbing the GUI
    • Stubbing the applications
  • The Levels of Testing
  • The Dilemma of Manual Testing
  • Unit Tests
  • Component Tests
  • Integration Tests
  • System Tests
    • Exploratory Tests
  • Functional and Performance Testing
  • Legacy Code
  • Convincing Others
  • Exercises
  • Refactoring applications to Seperate GUI
  • Testing the GUI seperately
  • Applying the Principles
    • Applying the Levels
Audience

Audience

Prerequisites

For this Advanced Test Driven Development course, you need to be a developer with one or more years experience with TDD. Please note that exercises will be in Java, and delegates will need a sufficient understanding of the language for writing tests and creating applications.

Bring your own hardware

You are required to have your own laptop with the following:

  • Preferred IDE
  • 2GB ram
  • Your preferred Browser