The use of system models for guiding the prioritization of regression test suites is examined in depth. In particular, this paper extends recent work on the use of extended finite-state machine (EFSM) models as a tool for predicting which tests are more likely to find errors in the modified code (and should therefore be executed earlier in the regression test sequence).
The first phase of prioritization, called selective prioritization, identifies which tests are affected by additions or deletions of transitions from the EFSM. The tests identified in this way are further prioritized in a second phase that uses flow analysis to examine data and control dependencies between added and deleted transitions and their interactions with the rest of the model. The process is illustrated throughout the paper with a running example of an EFSM model of an automated teller machine.
The main contribution of the paper is the development of an evaluation framework for test prioritization methods. It is based on the idea of seeding a fault d into the model and then computing the relative position of the first test that detects d in the test suite ordering produced by a given method. An empirical study of the framework compares random test prioritizations to different stages of the model-based prioritization described above. The study suggests that, in certain cases (such as faults that are detected by relatively few tests), the model-based prioritization techniques can be beneficial in reducing the time to detect faults.
The paper is an excellent, readable summary of model-based regression test suite prioritization and offers convincing evidence of the value of the approach. It will be of interest not only to software testers, but to anyone interested in software modeling. It includes an extensive bibliography on regression test suite optimization techniques.