Black box software testing: A course by Cem Kaner & James Bach
Domain Testing
- Video lecture 1:
- Part A -- Introduction [6:34]
- Part B -- The Classical Analysis [10:24]
- Part C -- Examples [12:12]
- Part D -- Risk-based Equivalence Analysis [18:19]
- Part E -- Summary [4:19]
- Solutions to examples in the slides [8:51]
- Video lecture 2:
- Video extracts: This material is in the main lecture set (except for the solution to the FoodVan problem) but these examples are potentially usable as stand-alone clips for other courses.
- The hockey game example [4:24]
- The triangle example [7:54]
- The FoodVan example [7:43]
- Lecture slides (1) (PPT)
- Lecture slides (2) (PPT)
- Examples of use of domain testing
- In-class activity Grading notes for the activity Traditional domain analysis
- Assignment Grading notes Myers follow-up risk-based
- Assignment Grading notes Risk-based domain analysis
- Essay test questions: Domain1
- Essay test questions: Domain2
Domain testing is the most frequently described test technique. Some authors write only about domain testing when they write about test design. The basic notion is that you take the huge space of possible tests of an individual variable and subdivide it into subsets that are (in some way) equivalent. Then you test a representative from each subset.
More advanced problems involve combination tests--having done the analysis for several variables, we now test the variables together, using the representative values as if they were the only values of interest. Thus a variable that has a million possible values is reduced to 4 by the traditional domain testing approach (2 valid, 2 invalid). The number of "possible" tests of 3 variables combined would be 4 x 4 x 4 instead of some gargantuan number.
Unfortunately, the classical domain testing approach is a bit too simplistic. Glen Myers showed a more complex variation in his book, The Art of Software Testing (1979), as did Kaner, Falk & Nguyen in Testing Computer Software (1988, 1993). These authors described what was common in practice, rather than in the more theoretical discussions. Those discussions lead to an overly mechanical view of the thinking and practice of domain testing. These two lectures describes a risk-based approach to domain testing, and puts it in the context of three other dominant explanatory structures for the practice of domain testing.
We are setting up a mailing list for announcements about this course and, perhaps, a tightly focused and moderated discussion of how to teach it or self-study with it. (This won't be a general, high-traffic, intro-to-testing discussion.) If you're interested in the course, please sign up by sending us an email. We will NOT share your email address with third parties or send commercial advertising to you.
We are publishing this course under a Creative Commons license that allows you to freely reuse and distribute the materials and to modify the slides and associated printable materials (but not the videos). We would be appreciate a few mirror sites, to reduce the growing burden on our servers. If you can help in this way, or any other way, please send a note to Cem Kaner.