A Practical Guide to Testing Object-Oriented Software
Few systems these days are designed to execute on a single processor in a single process. In an attempt to gain flexibility and extensibility, many systems are designed in pieces that are sufficiently independent that can reside in a separate process from the others. The term distributed means systems with a client/server architecture in which the client and server pieces are designed to be in separate processes. Today's systems are much more varied than the client/server systems of the eighties in which the server was always a database server and the clients simply queried or modified the data. Appplications often begin with one component of the application being downloaded to run on a customer's computer. Information is streamed back to an application server, which in turn works with a database component to fulfill a transaction. In this chapter we will add to our repertoire of testing techniques to include tests that are targeted at new types of defects specifically related to concurrent, distributed software. Basically we will consider the following two types of faults.
The Brickles example, as we have been using it thus far, is not distributed and not useful in this context. We will use examples from the Java version of Brickles that is multithreaded and that uses an applet running in a Web browser as its interface. |