This change series allow automatic testing for properties that usually can only be validated manually once the whole system is put together.

Habit: Split Services 1 — Ports and Adapters

Organization ROI: Reduce cost of ownership related to both 1st and 3rd party dependencies.

Engineer ROI: Isolate and micro-test interactions between any two components. Get informed when 3rd party components change underneath you in production.

Habit: Split Services 2 — Complex Adapters

Organization ROI: Reduce cost of ownership for depending on complex or highly-shared services.

Engineer ROI: Adapt services that do what you need but are hard to work with into exactly what you need.

Habit: Split Services 3 — Testable Services

Organization ROI: Reduce cost of integrating with 1st party services, such as databases.

Engineer ROI: Know when changes to your service would impact others without running full-system tests.

Habit: Test User Interactions

Organization ROI: Reduce cost of ownership for tests that verify response to user behavior.

Engineer ROI: Test user interfaces and user behaviors without running the UI.

Habit: Test Temporal Dependencies

Organization ROI: Prevent timing-related bugs.

Engineer ROI: Know when code will behave differently under delays, timeouts, and parallelism, even when you can't test all cases.

Habit: Test Persistance

Organization ROI: Reduce time it takes to find data persistance errors.

Engineer ROI: Verify state persistance with tests that run at full unit test speed.