One of the first comprehensive guides to testing every phase of software development and revision.
Businesses lose billions of dollars every year due to poorly tested software, and the body of professional software testers is grossly underpopulated. Now, Software Testing delivers a thorough treatment of everything a technology professional needs to become a proficient software tester. The presentation sequence builds from simple to complex examples, giving novice readers a foundation for grasping the material. The use of real-world case studies further enhances understanding, while diagrams, tables, and sample printouts help the reader to visualize the processes being discussed.
Divided into four parts, this book provides:
An overview of software testing
A review of software development life cycles
Structured testing strategies and approaches
A complete life cycle software testing project
Ideal for graduate-level students of computer science and management information systems, this resourceful book also includes a companion Web site with tools and additional examples.
Review By: Danny Vinson 01/08/2009This book is designed as a textbook intended to provide a complete look at software testing in a way that reveals the entire lifecycle and provides a good context for understanding how testing provides both a valuable service to the greater economy and a solid career path for the individual. To this end, the authors cover the entire lifecycle as it looks from the perspective of a software tester or test manager with specific interest in the testing approach elaborated by Dr. Edward L. Jones, known as the SPRAE checklist.
SPRAE stands for Specification, Premediation, Repeatabiliy, Accountability, and Economy. After two initial chapters describing the greater need for testing and the basic aspects of a traditional software development lifecycle, most of the remainder of the book is spent exploring how these five aspects are applied in creating a full, lifecycle testing strategy. Chapter 5: Test Planning describes how to structure the guiding documents for a testing effort, including a test plan and test cases, following a model that corresponds somewhat to the IEEE documentations standards developed by the Tigris Community, called ReadySET. Chapters 6 through 9 detail the different phases of testing: static testing, an exploration and validation of the foundation documents such as requirements and designs; functional testing, the exercising of all elements of the application or system under test; structural testing, which includes interfaces to other systems, security, installation, and other activities; and performance testing.
Chapters 10, 11, and 12 are--for me--the most useful, although they're the most theoretical of the lot. Chapter 10 is a good discussion of the relative merits of carefully constructing a good testing environment, as well as the value that is apparent to the rest of the organization of doing so (and the possible costs for not following that path). Chapter 11 is about testing tools, and when (and why) they're useful to a solid testing effort. They avoid the minefield of discussing a specific product, choosing instead to have a general overview and a mention of emerging standards in interoperability between different tools. Chapter 12 is about test results, from a statistical perspective, and what certain patterns mean to the idea of bug prediction, clustering, and prior defect history. The book winds down with a chapter describing how this methodology was applied to a large-scale testing effort, and why it helped that project succeed beyond the client's expectations, followed by a presentation of one approach to testing complex systems and then a brief chapter on the future of software testing.
This is not a book about the relative merits of various testing belief systems, but is instead about a particular, structural approach to testing within more traditional, waterfall-like projects with clear beginnings, middles, and ends. The language in many sections could be refined and simplified, although I suspect that this text works better spoken instead of simply read, and may be intended to provoke discussion. Were I teaching an undergraduate- or graduate-level software testing class, this would be one of the texts I'd consider using. And I recommend it to those with that mission, an impression enhanced by the Study Guide included on Wiley's ftp site supporting this book. To others, it can help develop a practical understanding of one possible approach, the SPRAE checklist method, but should not be considered a complete summary of the current state of software testing practice.