Summary
In this chapter, you've learned why testing in Ruby is more critical than in many other programming languages. You've learned about different approaches to testing, such as manual testing, test after development, test-driven development, and behavior-driven development. You've learned that is important to limit the complexity of your tests by limiting the types of abstractions you use in your tests. You've learned about different levels of testing, and the tradeoffs between them. Finally, you've learned about different types of code coverage, and what 100% coverage means.
Testing your library often alerts you to things you need to change in your library, and in the next chapter, you'll learn about how best to handle change in your libraries.