Statistics gathered in past research show that testing, analysis and debugging costs usually consume over 50% of the costs associated with the development of large software systems. Specifically, regression testing has been shown to be a critically important phase of software testing and many techniques have been proposed that reduce effort, time and cost of testing, such as test case prioritization techniques, regression selection techniques and test case reduction methods. This study concentrates on a survey of test case prioritization techniques. This study classifies and organizes existing test case prioritization techniques researched since 1998 into four categories: (a) customer requirement-based techniques (b) coverage-based techniques (c) cost effective-based techniques and (d) chronographic history-based techniques. Also, this study resolves the following research problems: (a) ignoring practical weight factors (b) inefficient test case prioritization methods and (c) ignoring the size of test cases. In brief, the contributions are to: (a) collate a comprehensive set of test case prioritization techniques (b) compare these test case prioritization techniques and identify the limitations of each technique (c) propose a new classification of test case prioritization techniques (d) introduce a new continuous test case prioritization process (e) propose a new test case prioritization method along with a practical set of weight factors and (f) define specific research issues and guide future research of test case prioritization methods.