From the Inside Flap
Client-server system development is the preferred method of constructing cost-effective department- and enterprise-level strategic corporate information systems. Client-server development allows the rapid deployment of information systems in end-user environments. Client-server development is ad hoc in nature, using, in many instances, new software development platforms. Client-server development workbenches can be used both by IS professionals (programmers, analysts) and by nontechnical knowledge workers in functional business areas. Because implementation of client-server tools do not require technical education or experience they present an additional set of software development problems to system development.
The client-server computing model has also been extended to include the Internet, bringing another new and unique set of computing problems. The Forrester Report describes this new computing model as "Internet Computing." The report defines Internet Computing as, "Remote servers and clients cooperating over the Internet to do work," and says that Internet Computing extends and improves the client-server model.
The report differentiates between what is currently happening on the World Wide Web and Internet Computing. In the latter, users do not go to a site and request a file or run a Java script through their browser, but they request a "session" and receive a client code from the remote server. With the code loaded on the client computer, the two can begin to communicate and exchange data. The report describes this as a "conversation."
Internet Computing will be truly interactive. It will feature computing sessions that are global and on a massive scale as opposed to client-server computing, which is localized and limited to a small group of users.
Software testing for client-server systems (Desktop or Webtop) presents a new set of testing problems, but it also includes the more traditional problems testers have always faced in the mainframe world. Client-server software testers must test client software applications, server software applications, middleware, and network software applications. Even so, the tester must assess client-server applications, regardless of application level, with respect to the software's system (external) quality, and its functional/technical (internal) quality.
The client's Graphical User Interface (GUI) applications are much more complex than the traditional Character User Interface (CUI) applications found on mainframes. GUIs present a "fluid" interface that can be changed at the whim of the user. This causes software testers to acquire a new testing perspective and places a larger burden on them. The complexity of testing the GUI drives the tester to automate the GUI testing process.
GUIs have some unique characteristics that lend themselves both to testing in general and automated testing in particular. They are object-oriented in nature, which simplifies testing because classes of Windows objects have precisely defined sets of behaviors. Object orientation lends itself to automation. The majority of commercially available software tools to aid GUI testing have taken an object-oriented approach. This approach has been dubbed "Structured Capture/Replay."
Applications at the server level can involve replicated processes and data. The tester must be able to test an application's ability to deal with these types of redundancies in a client-server system. These applications must also be performance tested.
Network software applications must be load tested for and monitored in terms of the volume of network traffic. This kind of testing is only doable using automated testing tools such as IBM's TPNS, Mercury's LoadRunner, or SQA's LoadTest PC. Also, network nodes must be tested with respect to their ability to stand alone when other nodes are down. Web-enabled client-server applications involve further complexities.
Finally, several influences shaped my thoughts in this book. First, my background in software testing theory has forced me to cling to Black Box and White Box concepts and their associated test-case design strategies. A second influence is my leaning toward MIS and business computing systems. Third, my experiences as a software developer and as a tester and test manager have slanted my views towards the practical. Fourth, my experience testing client-server applications for the past five years has opened my eyes to the intricacies of desktop systems. Fifth, my recent encounters with Web-enabled client-server software applications have convinced me that the testing complexities of these systems are limitless.
One other factor has had a strong influence on this book's content SQA TeamTest. I have become intimately familiar with it after having used it on every client-server project I have tested to date. I have completed almost all of my client-server testing on systems developed to run in Windows 3.1.1, Windows 95, Windows NT 3.51, and NT 4.0. SQA TeamTest was the choice of all of the companies where I consulted. Thus, many of the practical tips and advice offered in this book are slanted toward test automation and, in particular, toward SQA TeamTest.
From the Back Cover
End-to-end coverage begins with the desktop GUI, moving through server and network concerns on up to cross-level functional testing, and system testing. A data-driven approach maximizes the opportunities for automation with Structured Capture/Replay tools. Guidelines are offered for choosing and implementing an automated test tool suite, and a special section addresses Y2K issues in testing PC and client-server software.