I. Introduction
Software testing is a formal process in which software, unit or package, is tested for errors on a computer against well defined test cases. Errors may include deviation from requirements or coding and documentation standards, but functionality (syntax and semantics) errors are often the cause software defects. Software testing is a crucial part of the software development process as it assures an acceptable level of quality and in the deliverable and reduces the risk of software failure. Testing may consume a substantial percentage of the project’s budget [1].