Abstract:Software is always dynamically evolving due to additional functionalities, performance tuning, bug fixing, and others. The existing testing techniques are difficult to satisfy the changing testing requirements. Hence, systematic techniques are needed of test case evolution to ensure the quality of evolving software. This paper surveys the test case evolution and compares and analyzes these techniques in detail, including test case selection, test case repairing and test suite augmentation. Finally, the challenges and research directions of test case evolution are proposed.