Continuous Testing with Ruby, Rails, and JavaScript
Continuous Testing (CT) is a developer practice that shortens the feedback loops established by test-driven development and continuous integration. Building on techniques used by Agile software development practitioners, Continuous Testing with Ruby shows you how to get instant feedback about both the quality of your code, and the quality of your tests.
We show how you can create a customized continuous testing environment, specifically suited to the projects you're working on. You'll see working examples for languages such as Ruby and JavaScript, but the techniques described in this book can easily be applied no matter what technology you happen to be working with. We also cover how to extend this environment when working with frameworks such as Ruby on Rails, and discuss how creating rapid feedback loops can dramatically increase the rate at which you can deliver working, valuable software.
Automated testing is an increasingly common practice in the software development industry. However, many companies struggle to gain all the benefits of automated testing, due to poorly written or incomplete tests. Continuous Testing with Ruby shows how these companies can get the most value out of their existing tests. It also helps you improve the quality of the new tests you write, by giving you instant feedback about problem areas, and creating a visceral feedback loop for test quality that you can actually feel as you work.
Just as continuous integration and test-driven development have changed the definition of software development in the last ten years, Continuous Testing is poised to become a standard practice for development teams in the next decade.
Review By: John Snuggs
03/21/2012Continuous Testing is a very good book. Although it was challenging to set up the environment (I work on Windows systems, so tools native to OS X require a few tweaks to be able to run), I learned a lot in the process. I had no idea that Ruby was surrounded by so many helper tools.
While the book is based on understanding and using RSpec and Autotest, I felt intrigued by the topic of behavior-driven development (BDD). I spent some time exploring BDD, following the suggestions of the authors.
As the authors say, continuous testing and test-driven development (TDD) in general lead developers to introduce short-term technical debt. I found the suggestions for handling this debt to be very appealing. They provide a systematic way of capturing and reporting on the work that still needs to be done. This is a very practical approach that I can use elsewhere.
The second part of the book covers Rails, JavaScript, and Watchr. The approach to testing Rails or JavaScript is really the culmination of all the techniques introduced earlier in the book. I work more frequently with JavaScript, so that resonated more for me and helped me see ways to be more systematic in my development and testing approach.
The book is well suited to people like me who want to learn about TDD and those who are using TDD and want a deeper understanding of the foundation and how to get the most out of it. There are great descriptions of how and why to use tools including Autotest, Watchr, Node.js, Spork. I appreciated the collection of tools and the explanations of when and why you should use them to get the most out of your environment.