Testing Your Way to a Good Design

About the Course

This course teaches the principles and practices of Test-Driven Development (TDD) and demonstrates how proper software design evolves through application of the eXtreme Programming principle of Test First.  Unit testing principles are introduced, along with a thorough discussion on the benefits of TDD.  An application is developed (from start to finish) during this course to explain step-by-step and demonstrate first-hand how a high quality, testable design evolves by applying the three laws of Test-Driven Development.

Course Topics

The following topics provide the foundation, strategies, and techniques for realizing a good software architecture, along with high code coverage and a test suite that supports continuous delivery.

Test Automation Pyramid

The test automation pyramid is discussed as a testing strategy that effectively supports Agile development and DevOps models for continuous delivery.  This concept was introduced in 2009 by Mike Cohn in his book Succeeding with Agile and is often referenced by leaders such as Martin Fowler, Ward Cunningham, and Bob Martin.  It provides context as to how unit tests relate to other types of testing efforts.  This helps to ensure the right amount of testing within the various scopes of architecture while minimizing test overlap.

Accelerating Software Delivery

High quality, loosely-coupled and highly cohesive code evolves from the application of the eXtreme Programming principle of Test First.  While optimizing both, TDD is about building code quality as much as building code coverage.  The practices of TDD are taught in detail.

The Three Laws of TDD

The three laws of Test-Driven Development define the discipline of TDD.  By following these three laws, your software will organically evolve into one that is maintainable, extensible, and testable.

Transforming to Green

How you write the code to make your tests pass can result in a good architecture or one that works, but could be much better.  Applying a prioritized set of transformations can make all the difference in building a great solution.

London vs Chicago

Going beyond the basics is important to understand the different approaches of Test-Driven Development.  Optimize efficiency by applying behavior verification from the top-down or deliver greater flexibility through state verification from the inside-out.

TDD vs ATDD

While many confuse the practice of ATDD with TDD, these two approaches to development are very different.  As these are separate and distinct practices, the methods of each are explained to clarify their unique value, followed by a side-by-side comparison.

TDD by Example

An application is developed (from start to finish) to explain step-by-step and demonstrate first-hand how a high quality, testable design evolves by applying the three laws of Test-Driven Development.