I. Introduction
Software testing is considered as a major highly cost activity in software maintenance life cycle. The software testing process could be used to determine and improve the software quality. Major testing activities include multiple processes. Regression testing attempts to validate modified software and ensure that the modified parts of the program do not introduce unexpected errors. One concern in regression testing is the effectiveness of test suites in finding new faults in successive program versions [3]. Regression testing can be applied in various ways code based, specification-based and model-based. Code-based techniques are white-box method that is they select test cases based on the difference between original and modified code. It uses relationships between code parts and test cases that traverse them to locate test cases for retest when code is modified. An important issue with unit-testing is scalability problem. As software systems grow in size and complexity, so does the need for higher level models and abstractions in their development [6].