Agile Engineering
practices training and
courses

1 day

Agile Engineering
practices training and
courses

Writing Unit Tests in a Legacy Systems

1 day

Writing Unit Tests in a Legacy Systems

Our system is big and complex, it’s not feasible to write automated Unit tests for it.

Often developers shy away from writing unit tests due to their fear of breaking existing functionality and the perception that it will take a lot of time and effort to actually do it.

However, when we don’t write unit tests the problems tends to increase.

And while most teams will agree that this loop need to be broken, the fear, will stop most of them from even trying.

 

In this workshop:

  • we will learn how to write unit tests in a legacy system.

  • We will focus on the common issues that make legacy code hard to test.

  • We will understand how these can safely and surely be removed.

  • We will stop fearing changes in our system

  • and we will master those techniques by practicing on real life scenarios.

 

Intended Audience

  • Tech Leads

  • Developers

 

Prerequisites

  • At least 2 year of experience developing software/test automation

 

Objectives

  • Understanding Design for testability

  • Learning to write unit tests on untestable code

  • Learn technique for restructuring legacy code

  • Understanding what makes for improved code

 

Topics

  • Introduction to Design For Testability

  • Pattern for Breaking Dependencies:

    • Sprout class/method

    • Extract Interface

    • Dealing with singletons

    • Dealing with Statics

    • Dealing with Instantiation

  • Power Mocking tools

  • Code/Test Smells

 

Structure

  • Introduction to DFT the problem

  • Dependency breaking patterns

    • Characteristics tests

    • Sprout Class/ Method

    • Dealing with Singletons

    • Dealing with Static method

    • Handling instantiation

  • Leveraging Power Mocking Tools

  • Test/Code Smells

 

This is a general syllabus and in case of an in-house training, it is possible to make the necessary adjustments to make it more appropriate for your organization’s specific needs.