ABSTRACT

Any nontrivial software must be tested. In testing, errors are detected and corrected — this process is known in software development as debugging. A program may have two kinds of errors: coding and application failures. Obvious coding errors manifest themselves by crashing that program or other programs, and in the worst case the operating system. Several not so obvious coding errors result in misbehaving of the application, so “simulating” in a way logical errors. A notorious example of such a failure is the unfortunate comparison operator (= =) used in C/C++, which often stays undetected by a compiler if confused with the assignment operator (=). I would like to have the money corresponding to the time invested in searching for this kind of simple error. Application errors mean that the program does not realize the requirements. Hence, the reasons for application errors are very often not clear — they can be logical errors or coding failures.