Software Testing is the process of executing a program with the intention of finding errors. Every software code has been reviewed and verified through SQA activities but these activities are not sufficient. Every time the software delivered to the client has been thoroughly tested by client before sending it to the production. Thus developer has to test the software before it gets to the client. Testing has been generally performed by three ways: white-box testing, black box testing and gray-box testing. Day by day with increasing functionality of software has caused increasing complexity and size of software applications due to this reason more emphasis has been sited on object oriented design strategy to cut down software cost and boost software reusability.