This book summarizes twenty years of experience testing software.
For the past decade, we have been the principal developers of LabWizard, which is the gold standard in Knowledge Acquisition tools and is used around the world to provide patient-specific interpretations of pathology cases. LabWizard is a very complex suite of software involving a server program, multiple remote client programs, interfaces with lab systems, and lots of internal processes.
In spite of this complexity, the software has been developed and maintained by a very small team with limited time and resources. We believe that our approach to testing, which we call Extreme Testing, has been central to our success. Extreme Testing has these key points:
Complete Unit Test Coverage: All public classes must be thoroughly unit-tested.
Complete Requirements Test Coverage: Each software requirement must be tested with an application-level test.
Test First: When a bug is reported, a test that demonstrates the bug must be written before an attempt to fix the problem is undertaken.
Automation: All of the tests must be run automatically.
This book is about why we have converged on this testing strategy, and how we actually implement it. In particular, we look at how to automatically test user interfaces, the help system, internationalization, log files, spreadsheets, email, web services, tests involving multiple JVMs, and a host of other things.