"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: (1) defect detection, and (2) 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. In both of these cases, the mechanism used to determine whether program output is correct (known as an oracle) is often impossible to develop. Obviously the benefit of the entire software testing process is highly dependent on many different pieces. If any of these parts is faulty, the entire process is compromised." (Reliable Software Technologies).
Software testing is the most visible activity in the Software Quality Assurance, which is, perhaps, the most critical activity in a software project. It is not a quick glance through application's menus. It is not about catching bugs. It is about making sure that the software product satisfies the customer's needs by preventing bugs. If such happened, that bug appeared, QA is about describing it, locating, fixing, merging the fix and looking for the bug cause.