Recently, I delivered a talk on what I see as the Fundamentals of Software Testing, and it got me thinking – I really should post some of the resources I’ve found helpful over the years. Good thing I’ve got a blog! Now, this is by no means an exhaustive list – I have a lot of books yet to read! However, I do think that these are some excellent ones to get you going.
Note: Where possible, I’ve included links to places to buy the books. They’re not affiliate links, and I’m not getting any compensation for any of my recommendations. Also, you may notice that most of the links are for physical copies of the books; that’s because I personally prefer the physical format for books I expect to read more than once or twice. In some cases, physical copies are no longer available, and I’ve linked to the relevant e-book vendor.
The very first book I ever read on the topic of software testing is appropriately titled: Testing Computer Software. It’s by Cem Kaner, Jack Falk, and Hung Quoc Nguyen, and the latest edition (as of this blog post) was published in 1999. That might seem a bit dated, and in fact a lot of the books I’ll recommend are a bit on the older side. The reason they make this list is because I find them to still be relevant, for the most part. There are, of course, technical references that are dated, and they won’t get into some of the more recent developments (in particular, cloud computing). That being said, Cem in particular is well-known for having put together some pretty evergreen ideas on software testing. I particularly like the book’s focus on
Many, if not most, in the software testing industry are aware of the late Gerry Weinberg. He’s sometimes referred to as the godfather of software testing, having pioneered a lot of the field in the early days of digital computing. He’s also known for having been a prolific writer on many subjects including, of course, testing. In my view, Perfect Software, and Other Illusions About Software Testing is possibly the most valuable because it’s highly accessible for testers, programmers, and managers. Even if you’re not testing, if you’re involved in software development, this book is worth a read.
Lessons Learned in Software Testing involved the collaboration of Cem Kaner, James Bach, and Bret Pettichord. I’ll admit, I’m not as familar with Bret’s work in general, but both Cem and James have had significant impacts on my testing career. This book is broken into 293 different lessons on software testing, which is an interesting approach. While it certainly can be read cover-to-cover, it can also act as a good source of new test ideas if you’re stuck. It also has some (IMO) sage advice on managing your testing career.
While not strictly a testing book, I feel that Weinberg on Writing: The Fieldstone Method is eminently practical. For most, if not all testers, the majority of our work products are documents – bug reports, status reports, documentation, the list goes on. While Gerry’s method may not always be needed for things like individual bug reports, I feel that his way of thinking about how to collect information for writing is incredibly valuable.
The next couple of books are a bit more esoteric; I don’t recommend them for new testers, unless you really want to push your brain hard.
Discussion of the Method : Conducting the Engineer’s Approach to Problem Solving was recommended to me by Michael Bolton and James Bach, as a way to dive deeper into the thinking behind testing. They sure weren’t kidding! It starts out as a book about the thinking behind how engineers make decisions, and ultimately ends as a kind of philosophical treatise. I think it makes a very strong case for the idea that everything is heuristic, and if that’s true, then software testing certainly is.
The last book I’ll mention here is An Introduction to General Systems Thinking, by Gerry Weinberg. Yeah, I know this is the third book of his I’ve recommended here. He was just that good! Anyway, this particular book delves into General Systems Thinking, which covers a LOT of ground. This book is a bit less philosophical than Discussion of the Method, but where it lacks some of the philosophy, it more than makes up for it in some pretty solid (as far as I can tell anyway) proofs that back up its premises. To be blunt, I need a couple more read-throughs before I’ll have a handle on it, but there’s definitely something there that is of value.
And now, I pass the baton to you, dear reader. What books would you recommend for a burgeoning software tester? Any of these books you wouldn’t recommend? Why?