The practice of Agile Software Development requires, among other things, a high degree of flexibility in the coding process. As we get feedback from clients, stakeholders, and end users, we want to be able to evolve our design and functionality to meet their needs and expectations.
This implies an incremental process, with frequent (almost constant) change to the code we’re working on. Each change is an opportunity to make the product more appropriate to the needs it is intended to address. However, change can also be dangerous if it is not accomplished in a way that avoids code decay and protects against introducing bugs.
This course teaches the skills of unit testing, refactoring, and incremental development, but we take it farther than this. Unless developers are trained about which tests to write, how to write them, when to refactor code, and techniques for breaking dependencies, testing can become unsustainable as projects mature.
We teach sustainable test-driven development, with a focus on deriving maximum value (technical and business) from minimal effort and cost. We do this using a blend of lecture, demonstration, and hands-on coding exercises. When you leave this course you will have actually done test-driven development, will have refactored both new and legacy code, will have created mock objects and injected them for testing, and will understand how to keep your test suite from becoming a maintenance problem as it grows. You will also learn how testing, done correctly, can improve both your analysis and design skills.