Software testing - the state of the practice

The main factor preventing delivery of high quality software systems is the difficulty of finding and eliminating latent software defects. Software errors - very much like "design faults" in pure hardware lbased systems - often reveal themselves in very unpleasant and unexpected ways. Systematic software testing is the best defense against such software quality problems. The intricacies and complexity of non-trivial software products i n practice dictate some form of automated software testing. A software product in the 10 KLOC to 50 KLOC range may have billions of internal states, tens of thousands of variables, and thousands of different "functional behaviors" or "features." Analyzing such a system manually - while an interesting application of modern Computer Science - isn¿t much fun, and doesn¿t often produce much defect detection benefit.