Implementing Agile Test-Driven Development for Java Developers

Course Code: 1305


This three-day course combines engaging lectures, demos, group activities and discussions with machine-based practical programming labs and exercises. Participants will work within a dynamic, learning environment wherein they will experience Test-Driven Development (TDD) first hand. Participants will explore concepts such as development agility and Agile Manifesto to evaluate various development methods with a structured organizational approach.

Schedule Classes

Looking for more sessions of this class?

Course Delivery

This course is available in the following formats:

Live Classroom
Duration: 3 days

Live Virtual Classroom
Duration: 3 days

What You'll learn

  • Introduction to the concept of development agility and the Agile Manifesto
  • Review each of the major agile development methods underscoring their strengths and weaknesses
  • Understand how to manage an agile environment even within a structured organizational approach
  • Learn how to introduce agility into a development organization
  • Examine what unit testing is and how various xUnit frameworks facilitate unit testing
  • Review and work with the xUnit family of unit testing tools
  • Understand the concepts of and motivations for Test-Driven Development
  • Relate unit testing, test driven development, and test coverage to agile processes
  • Understand the importance of refactoring in supporting agile and test-driven processes
  • Work with both refactoring techniques and tools
  • Work with Mock objects to understand what problems they solve and how they accomplish that
  • Understand what Continuous Integration is and what the components of CI are
  • Examine the motivations for CI
  • Review best practices for everything from CI to testing within the context of agile development


  • Agile rationale and concepts
    • Reducing risk through agility
    • The discipline of Timeboxing
    • Incremental delivery and evaluation
    • Agile method: Scrum
    • Agile method: XP
    • Pair programming
  • The Agile approach
    • Agile software development manifesto
    • The Agile principles
    • Identifying features
    • Managing features
    • Communication dynamics
  • Agile iterative development
    • Iterative approaches
    • Phased iterative development
    • Iterating
    • Feasibility & planning
    • Development
    • Adaptation & deployment
  • Prioritizing and planning
    • Features and backlogs
    • FDD process
    • Prioritizing features
    • Release planning
    • Assigning features to iterations
  • Building
    • Typical Continuous Integration process
    • CI server
    • Automate source code management
    • Automate build process
    • Automate testing
    • Automate deployment
  • JUnit overview
    • Purpose of unit testing
    • Good unit tests
    • Test stages
    • Unit testing Vs Integration testing
  • Jumpstart: JUnit 4.x
    • JUnit overview
    • How JUnit works
    • Launching tests
    • Test suites
    • JUnit test fixture
  • @Test annotation
    • Test execution cycle
    • Checking for exceptions
    • Using Timeouts
  • Hamcrest
    • About Hamcrest
    • The Hamcrest Matcher Framework
    • Hamcrest Matchers
  • Parameterized tests
    • Injecting the parameters
    • Setting the parameters
    • Test execution cycle
    • Observations
  • Theories
    • Writing theory enabled tests
    • Defining DataPoints
    • Defining theories
    • Observations
  • JUnit best practices
    • “Good” tests
    • Bad smells
    • White-Box unit testing
    • Black-Box unit testing
    • Automation and coverage
  • Transitioning to Agility
    • Agility: Some process, Some mindset
    • Characteristics that enable Agility
    • Characteristics that inhibit Agility
    • Risks associated with migrating
    • Smoothing the transition
  • The bottom line
    • Agile migration patterns
    • Extending the migration
    • Coding practices
    • Source control
    • Pair programming and code reviews
    • Continuous Integration
    • Legacy code
View More


Participants must have a working knowledge of Java.  Knowledge of current development processes, such as structured top-down development and the waterfall method is beneficial. Participants should have also skills equivalent to or should have taken the the courses Understanding the Agile Process – A Technical Overview and Mastering Java for OO Developers.

Who Should Attend

This course is highly recommended for:

  • Java and JavaScript software engineers
  • Java Quant engineers
  • Software developers
  • Lead software engineers

Interested in this course? Let’s connect!