(From the Back Cover) Effective Software Testing explores fifty critically important best practices, pitfalls, and solutions. Gleaned from the author's extensive practical experience, these concrete items will enable quality assurance professionals and test managers to immediately enhance their understanding and skills, avoid costly mistakes, and implement a state-of-the-art testing program.
This book places special emphasis on the integration of testing into all phases of the software development life cycle--from requirements definition to design and final coding. The fifty lessons provided here focus on the key aspects of software testing: test planning, design, documentation, execution, managing the testing team, unit testing, automated testing, nonfunctional testing, and more.
You will learn to:
* Base testing efforts on a prioritized feature schedule
* Estimate test preparation and execution
* Define the testing team roles and responsibilities
* Design test procedures as soon as requirements are available
* Derive effective test cases from requirements
* Avoid constraints and detailed data elements in test procedures
* Make unit-test execution part of the build process
* Use logging to increase system testability
* Test automated test tools on an application prototype
* Automate regression tests whenever possible
* Avoid sole reliance on capture/playback
* Conduct performance testing with production-sized databases
* Tailor usability tests to the intended audience
* Isolate the test environment from the development environment
* Implement a defect tracking life cycle
Throughout the book, numerous real-world case studies and concrete examples illustrate the successful application of these important principles and techniques.
Effective Software Testing provides ready access to the expertise and advice of one of the world's foremost software quality and testing authorities.
Review By: Catherine Wolfe 08/04/2003This book presents the reader with suggestions for the improvement of software testing in all areas of the software lifecycle. Each chapter discusses a phase or element in the testing cycle and is subdivided into separate items or ideas for improving one aspect of that phase. The author uses an experience-based, best practices approach for each item while keeping the ideas at a conceptual level.
The structure of the book is well designed for practical use by a manager or tester who wants ideas that apply to "where they are" in the process. Each of the fifty "items" has sufficient detail to be read on its own or in the context of the chapter while having valuable input to the reader—providing a reference-like usability.
Along with the most common testing phases of Requirements, Planning, Test Design, and Test Execution, the author includes other useful and important topics such as:
The Testing Team (organization and expertise levels)
System Architecture (why it’s important for testers to understand the underlying architecture)
Unit Testing (best practices for the development and testing staff)
Automated Testing (both advice on choosing and utilizing these tools)
Nonfunctional Testing (the criticality of security and performance, etc.)
The book is obviously written by someone who understands the world of testing and is offered as sage advice rather than a "how-to" from scratch. She provides a broad mix of procedural, managerial, and technical expertise. The author has also made this book applicable to many different software development environments.
It is not specifically "web," "client-server," or "shrink-wrap" driven, but speaks more to the overarching problems and processes that many test organizations encounter on their path to greater quality.
This book is like a big Hershey's chocolate bar. It comes premolded into many delicious and bite-sized sections making it easy to snap off one piece to savor a single topic, or break off a big chunk of ideas on a phase of the software cycle.
Even the seasoned veteran will find this book useful as there is always room for improvement in some part of the process. It is especially helpful to the Test/QA Manager who can select single ideas and implement change gradually. Most chapters focus directly on areas that are within the manager or lead’s realm of responsibility and can therefore provide practical advice.
Chapter 7 "Automated Testing Tools" is especially relevant with today's tighter budgetary restrictions, providing sensible approaches to what is typically a costly area. Some testing methodology is included.
The author has done an excellent job providing guidelines without becoming "preachy." It is also apparent that her suggestions are born from experience in the discipline and not just theories or "ideal practices." I have already been able to implement several of her proposals for improvement that were achievable in a short time.
This book presents the reader with suggestions for the improvement of software testing in all areas of the software life cycle. Each chapter is divided into easy-to-digest and implementable suggestions. The book also provides ideas that cross software environments, making it as useful to shrink-wrapped testers as it is to a client-server group.