A formal approach to select tests for regression testing of changes performed in a system evolution step is proposed. Systems are modeled as extended finite state machines (EFSMs) supporting several commonly used data types including booleans, numbers, arrays, queues and records. Tests are described using a sequence of input and expected output messages with concrete parameter values. Changes add/delete/replace one or more EFSM transitions. Transitions potentially executed by a test are automatically identified from its description. A simple structural invariant for a test description based on these transitions is introduced. It is shown that for a test description satisfying the invariant it can be accurately determined if a given change affects the test. Affected tests are selected for regression testing of the change. Failure of a description to meet the invariant is analyzed to identify non-observable regions in the description, which are then further analyzed using other system transitions to identify affected tests. We also describe a novel approach based on substitutability of tests to reduce the size of a regression test suite without affecting coverage. The effectiveness of the proposed approach is illustrated by applying it to several examples. Our experiments based on a well-known cost model for regression testing show that the proposed approach is economical for selective re-testing in these examples.