How would you feel if you knew that any part of the code was at most a few minutes away from being shippable and delivered into production? How would you feel if you knew that any part of the code is a few ctrl+z's away from being shippable and delivered into production? Emboldened and confident? Test driven development (TDD) gives you that. TDD allows you to proceed with confidence that you're building the right thing. It provides you with imminent-horizons that you can meet and measure. TDD gives developers the confidence to go faster, secure in the knowledge that what they break they will fix and be able to improve. How do you test components? Services? What happens as you move to distributed systems and start introducing web endpoints? When what were small in-process unit tests now become distributed integration tests? How do you ensure that the contract between web endpoints works while retaining the fast feedback loop of unit testing? In this talk, join Spring Developer Advocates Josh Long (@starbuxman) and Mario Gray (@mariogray) as we look at how to test Spring applications and service. We'll look at how to test basic components, mocks, how to take advantage of test slices, and how to test web applications. We'll also look at how to ensure that API producers and API consumers work well together using consumer driven contract testing (CDCT) without sacrificing the testing pyramid for end-to-end integration tests.