The Value of Checklists in Our Software Testing Work
How do you keep track of all the details in you busy professional and personal life? Do you have a to-do list, write things on napkins or the palm of your hand, or just keep items organized in your great memory? I've always been a to-do list kind of a guy, either using a paper list or, more recently, an electronic list of my tasks.
There's another kind of a list that many of us (myself included) may dismiss more quickly than we should: the checklist. By checklist I mean some list that details a specific set of items, normally in an organized sequence, to ensure you have not forgotten any one in a series of crucial steps.
Some may see checklists as unnecessary, but consider the growing complexity of many of our software development and testing tasks. While in some cases testing tasks may be much less risky than shooting a rocket into space, flying an airplane, or conducting brain surgery, in other cases of life-or-death and mission-critical software, these are a must.
Imagine SpaceX lifting off its next rocket—or a surgeon operating on you—without a comprehensive checklist. Closer to home, think of the cost in missing a step in your complex software testing work. At a minimum there will be rework, or worse, a critical bug that will impact your customers. As testing professionals, the complexity of our responsibilities continues to increase exponentially with each new technology that is integrated into our systems.
The following are some examples of checklists:
- Test design checklist: Have all the steps in carrying out comprehensive test design been implemented?
- Test plan checklist: A detailed test plan template that itemizes and describes the content that is expected in each test plan section
- Test case checklist: What are all the dimensions of a test case that must be described—preconditions, input, expected results, postconditions, and so forth?
- Nonfunctional checklist: A performance test checklist. What are all of the detailed items or steps to be executed (and in what order) for load and stress testing?
- Agile sprint testing checklist: What are all the testing tasks (functional, nonfunctional, and exploratory) that need to be done for each sprint?
In his book The Checklist Manifesto, Atul Gawande makes a distinction between errors of ignorance (mistakes we make because we don’t know enough) and errors of ineptitude (mistakes we make because we don’t make proper use of what we know). Failure in the modern world, he writes, is really about the second of these errors.
Making mistakes because we didn't make proper use of what we know is simply bad professional practice. Ignoring the use of a tool such as checklists, where appropriate and it would add value, increases the risk in our already risky world of software testing.
Do you have a great (nonproprietary) software testing checklist you'd like to share? Add the link in the comments below.