Complex systems such as computers, aerospace systems, etc., are often tested by using a sequence of tests to exercise the functionality of the system. If the system fails a test, an error message is generated, initiating the Test Selection (TS) phase. The troubleshooter must decide whether or not to run more tests. Should the troubleshooter decide to conduct more tests, a test must be chosen as it may no longer be useful to conform to the predefined sequence. While in the TS phase, the troubleshooter will repeatedly make these decisions until he is done. We present a domain-independent framework to automate TS that is based on two computational models, TI and TP. Both models are needed for we show there are applications for which one model performs well, while the other model performs poorly. The use of the appropriate model for automating TS is indicated by certain characteristics of the testing sequence and the system under test.