A Philosophy of Testing
Imagine plotting the various dimensions of your software: the functionality, performance, user interface, and so on, on a multidimensional chart (for the diagrams in this section, I'll stick to two dimensions; even if you're viewing them on some mad future reader, my graphics tool doesn't support more than that).
The first thing to notice is that you can't draw a point on Figure 6.1 that represents the "target" product to develop. The most important reason is that the target may not exist. Depending on your philosophical approach to software, there may not be a true collection of requirements that is universally understood to be the correct thing to build. Consider the people who are using the software as part of the system the software is supporting, so the "right thing" depends on those people and their interactions with each other. The thing you "should" build depends on the context and varies with time. (Manny Lehman...