Testing and Designing Tests
In the Preface section, we mentioned three levels of testing – checking the obvious, testing intensely (which might never end), and, finally, looking at testing as a risk management activity. We’ll start with the obvious, demonstrate the forever, and then talk about the ways to look at testing as risk management – that is, how can we spend a little time now to save time and money and avoid frustrated users and damaged reputations later? To do that, we must select a few of the most powerful test ideas, with a bias toward the most important parts of the software, and then determine something of meaning from them. Risk management also includes a variety of techniques with some overlap, so that if one approach fails to find a problem, others might succeed. We’ll cover that in Part 2 of this book.
These ideas apply to both unit and customer-facing tests; they also apply to the specialized testing that we’ll discuss in Chapter 5. To start, the examples will be customer-facing, only because we find that the most approachable to the widest audience.
This chapter will focus on the following areas:
- Understanding and explaining the impossibility of complete testing
- Learning and developing the theory of error to find defects
- Understand how a real-time unscripted test session might run
- How to perform unscripted testing
- Creating test ideas, including boundaries, equivalence classes, and the pairwise approach to testing
- Understanding other methods, such as model-driven, soak, and soap opera, as well as other alternative test approaches