Co-evolving systems identify tightly coupled artifacts that are characterized by high interdependence, such as production code and test code.

In well-tested software systems, tests can even get larger than production code.

Co-evolving systems should be evolved together, as a whole.

  • Cause of co-evolution: changes in production code that can impact multiple tests so that a developer may have to correct them in consequence
  • Repair of the co-evolution: the manual correction to restore the functional synchronization between the two systems

References