  Software testing is a critical element of software quality assurance and
represents the ultimate review of specification, design and coding. Software
testing is the process of testing the functionality and correctness of software
by running it. Software testing is usually performed for one of two reasons:
defect detection, and reliability estimation. The problem of applying software
testing to defect detection is that software can only suggest the presence of
flaws, not their absence (unless the testing is exhaustive). The problem of
applying software testing to reliability estimation is that the input
distribution used for selecting test cases may be flawed. The key to software
testing is trying to find the modes of failure - something that requires
exhaustively testing the code on all possible inputs. Software Testing,
depending on the testing method employed, can be implemented at any time in the
development process.
