5 software testing books QA professionals should dig into

There's no cookie-cutter crash course on software testing. However, these five books can get beginners on the right path to better quality software.

With fewer testers in many organizations, everyone -- analysts, programmers and product owners -- handles more QA tasks. So, they better get good at it.

There is no standard introductory course on software testing, and very little agreement on what the syllabus would even be. So, rather than try to absorb every bit of relevant knowledge, it's better to educate yourself for the specific context at hand. Self-education might come in the form of blog posts and instructional videos.

Software testing books provide more detailed descriptions of key concepts and objectives, though many are out of date before they even reach publication. Still, there are a few that have stood the test of time. Dig into these five software testing books to make quality a priority.

Agile Testing, by Lisa Crispin and Janet Gregory

Based on the authors' Agile Testing Quadrants model, Agile Testing provides readers with different ways of thinking about test approaches: business-facing, technology-facing, supporting the team and critiquing the application.

Agile Testing Quadrants model.
The Agile Testing Quadrants model includes different types of tests.

Within each of those four quadrants, Crispin and Gregory provide a list of test approaches and techniques. The book also coaches readers on key success factors for test automation and tooling, including making tooling a whole-team effort that runs in line with development, and how to use automation as a safety net to catch major defects early. Crispin and Gregory later describe how Agile testing enables teams to not only release software more quickly, but also get more frequent feedback from the customer without an expensive and rigid test phase. You will read about an "iteration in the life" of an Agile tester, from sprint kickoff through story review, functional testing, customer acceptance and regression testing.

Ultimately, Agile Testing gives readers a big pile of test approaches and techniques, but it doesn't explain exactly when to use each one. The authors also don't provide advice on test design and coverage.

No single software testing book is going to give you a degree in software quality. But, if you want to get familiar with modern terms and concepts in software testing, Agile Testing is a great start. If you want to keep going, More Agile Testing continues the conversation.

The Doman Testing Workbook, by Cem Kaner; or Software Testing: A Craftsman's Approach, by Paul C. Jorgensen

When it comes to test design -- picking the most effective test scenarios -- there are many methods you can take. Boundary analysis, equivalence classes, decision tables and all-pairs testing take a problem set that consists of an infinite number of test ideas and reduce them to a powerful few.

In Software Testing: A Craftsman's Approach, Jorgensen works through a few powerful examples, such as the getNextDate function. The problem itself is deceptively simple: this command instructs the system to, given a single date, get the next day. Jorgenson works through many ways the software could fail in this example -- each of which would require a different test to suss out. His various design techniques each create a different set of possible tests to run. The challenge to the reader is to integrate them into a single test strategy.

In The Domain Testing Workbook, Kaner and his co-authors give the reader problem sets to work through; the book provides a specification and asks which test ideas the reader would explore. The Jorgensen book provides thorough explanations, while the Kraner piece puts the reader to work.

Some readers might be familiar with the testing terms in Jorgensen's book or opposed to the problem-solving work in Kaner's, but the results bear out. In the training course I teach, we have an objective score, instruction and then a new score. When I teach test design, scores go up. When people read these software testing books, the quality of their testing improves, as does their ability to explain testing to others.

Quality Software Management: Volumes 1 and 2, by Gerald M. Weinberg

Gerald M. Weinberg wrote over 40 books, including the earliest known chapter on testing in a software book, in 1961's Computer Programming Fundamentals. Two of his works earned a spot on this list of go-to software testing books.

During the 1990s, he wrote three Quality Software Management books, two of which are on our list. The first volume explores ways to think about what is happening in the organization before you try to fix it. That first book, Systems Thinking, describes a work situation, then diagrams a set of causes and effects to model what unintended consequences a change can have -- and what to do next. For example, Weinberg describes the pressures that lead to Technical debt, as quick fixes create maintainability problems that slow down development -- all this before the term was even coined. The second volume, First-Order Measurement, helps readers devise a series of measurements, as well as exercises to challenge them. The book introduces the idea of a slip chart: a two-dimensional diagram of how schedules change. His analysis and example charts enable a leader to predict future organizational behaviors -- a little bit like having their own crystal ball.

The Black Swan: The Impact of the Highly Improbable, by Nassim Nicholas Taleb

Testers must think like users. Thus, they should learn how people think about certain possibilities and unlikely events in particular ways. A fun and adventurous read, The Black Swan takes examples from failures in financial systems and draws lessons that directly apply to software.

Taleb challenges the reader to consider a coin that, when flipped, comes up tails 99 times in a row. What are the odds that it comes up tails again? In his example, Taleb provides several different perspectives on that question, including an academic answer and a skeptical answer, to demonstrate the flaws in how people try to predict the future.

If you want to delve into what goes on in the mind when confronted with risk, read Thinking Fast and Slow by Daniel Kahneman. In that book, Kahneman describes two minds: the fast mind, which is good at simple repetitive operations, and the slow mind, which does more complex work. Testing with the fast mind is an easy way to miss important bugs, and it is also how most simplistic, GUI-focused automated tests work.

Accelerate: Building and Scaling High Performance Technology Organizations, by Nicole Forsgren, Jez Humble and Gene Kim

Jez Humble took the idea of continuous delivery that was percolating around several startups and formalized it into a repeatable process with his Continuous Delivery book in 2010. Afterward, he joined Gene Kim and Nicole Forsgren to determine the software development strategies that make organizations more effective.

In Accelerate, the authors describe why more frequent software releases result in more value for the business. These strategies might challenge the way readers think about software testing -- and that's a good thing. The authors examine productivity in terms of the number of deploys per year, time to get a change from commit to production, mean time to recovery and change failure rate percentage. These metrics differ from expected development metrics like quantity of code, bugs caught or even velocity. The book also explains deployment pain, how it can be measured and how it can lead to burnout.

A book club on Accelerate might challenge some assumptions, ruffle a few feathers and change the conversation from testing to modern quality.

Honorable mentions

There are many software testing books, including some specific to security aspects and software performance. Here are a few more books for eager readers:

Dig Deeper on Software testing tools and techniques

Cloud Computing
App Architecture