Refactoring and Testing in 2016: A Practitioner's Perspective

We describe how and why we use test automation and refactoring in the design and evolution of software systems. The writing and running of automated tests against the the system create mutual feedback loops that guide design decisions in both the system and test code.