Refactoring legacy code to testability

We all live with legacy code, that is code that has gone old and for some reasons is hard to maintain. The cost per change is increasing exponentially and threatens the very existence of our business.

This course aim to teach you the basics of attacking this problem. You will get hands-on experience that lifts your ability to cope with monolithic systems that are far from tested and where knowledge about their expected behavior has become foggy.

Firstly, we quickly introduce the basics of test driven development.  Then, the important tools of fighting legacy code complexity. To stay organized when changing a system in several steps, you need a personal process such as the Mikado Method. It helps you change and learn in small, safe steps.

See also this blog post on dependency breaking and characterization tests, The Sword and the Shield.

Note: Denna kurs hålls på svenska ifall samtliga deltagare är svensktalande. Allt presentationsmaterial är på engelska.

Who this course is for

Anybody who wants to learn or get better at the technical practices of Agile software development. You will learn to deliver higher quality code in shorter intervals with more customer communication.

Learning outcomes for this course

  • Why agile development requires automated testing
  • The case for TDD, test driven development
  • Test doubles for mocking
  • Refactoring
    • Dependency breaking
    • Characterization tests
    • The Mikado method
  • Code smells


  1. Basic knowledge of Java. This is not primarily a programming course, so the programming tasks will be pretty simple. If you are not primarily a Java developer, see this as an opportunity. You will work with others who are better at it, and you will learn! But make sure you at least know the basics.
  2. A development environment. To avoid wasting precious course time with technical setup issues, we want you to set up your technical development environment in advance.

This course has already been held.