1. A computer-implemented method for testing software comprising: modeling software using a software model that describes behavior associated with the software; and operating on the software model using a random destination algorithm and at least one other different algorithm to produce a sequence of test actions, the random destination algorithm being configured to randomly select a destination in the model and move to that destination to produce the sequence of test actions.