Improving Product Reliability and Software Quality, 2nd Edition
by Mark A. Levin, Ted T. Kalal, Jonathan Rodin
22Software Testing and Debugging
Obviously, software needs to be tested prior to releasing it. There are several stages of testing that are executed sequentially to make for the most effective defect detection. First developers test their code, then it gets handed off to software quality assurance (SQA) to continue testing. Developer testing consists of unit tests and integration tests. SQA testing focuses on system testing. Unit tests exercise individual components in isolation. Integration testing checks the interaction between modules in a controlled manner. System testing exercises the entire software package. Testing should be done in the following order:
where each step is successfully concluded before the subsequent testing step is begun. Testing in this order is significantly more productive than attempting to run these tests in a different sequence. When individual components are tested first (during unit test) then the subsequent testing can focus on finding integration or system defects with the assurance that individual modules are relatively robust. If all the software is tested at once, it becomes very difficult to locate the root cause of a defect. Lots of time is spent trying to determine where a defect is located. This causes significant loss to productivity.
Details about the different types of testing can be found in the following sections.