Refactoring edits are error-prone, requiring cost-effective testing. Regression test suites are often used as a safety net for decreasing the chances of behavioural changes. Because of the high costs related to handling massive test suites, prioritization techniques can be applied to reorder test case execution, fostering early fault detection. However, traditional prioritization techniques are not specifically designed for detecting refactoring-related faults. This article proposes refactoring-based approach (RBA), a refactoringaware strategy for prioritizing regression test cases. RBA reorders an existing test sequence, using a set of proposed refactoring fault models that define the refactoring's impact on program methods.Refactoring-based approach's evaluation shows that it promotes early detection of refactoring faults and outperforms well-known prioritization techniques in 71% of the cases.Moreover, it prioritizes fault-revealing test cases close to one another in 73% of the cases, which can be useful for fault localization. Those findings show that RBA can considerably improve prioritization of test cases during perfective evolution, both by increasing fault-detection rates as well as by helping to pinpoint defects introduced by an incorrect refactoring. of refactorings and software bugs [13,14]. In addition, 77% of the participants from the survey of Kim et al. with Microsoft developers [4] confirm that refactoring may induce the introduction of subtle bugs and functionality regression.A number of strategies are designed to prevent behavioural changes when refactoring: (i) refactoring mechanics, proposed by Fowler [1], guide the application of refactoring with the combination of micro changes and compilation/test checks; (ii) the formal specification of refactoring edits, founded by theories of object-oriented programming [15][16][17]; (iii) refactoring engines, automate the application of refactoring edits by checking pre-conditions (e.g. Eclipse ‡ , NetBeans § , JRRT ¶ ); and (iv) regression testing, test suites are used to increase confidence on behaviour preservation after refactoring [18].From those options, regression testing is probably the most popular alternative. However, as a system evolves, its regression test suite tends to increase, because new test cases can be added to check new functionalities [19,20]. Thus, it may be impractical to rerun regression suites after each refactoring when working with a large test suite-it can take a long time for the first test case to fail as well as it may be difficult and costly to gather enough information on test cases that fail so that fault localization can begin. In such context, there is a need for techniques that preserve test effectiveness, with as few test cases as possible. Test case prioritization [21] rearranges a test suite aiming to improve achievement of certain testing goals (e.g. the rate of fault detection). Several prioritization techniques have been proposed [22][23][24][25][26][27][28]; most consider code coverage as prioritization cr...