Methods and systems of testing software and modeling user actions are
described. In some embodiments, multiple different algorithms are
provided for operating on a software model. The software model describes
behavior associated with software that is to be tested. Different sets of
algorithms can be selected for operating on the software model to produce
a sequence of test actions that are to be used to test the software. The
algorithms can be mixed and matched to achieve a desired testing result.
In some embodiments, the different algorithms comprise deterministic
algorithms, random algorithms, and various types of algorithms
therebetween. In one embodiment, the software model comprises a state
graph having nodes that represent state, and links between the nodes that
represent actions. The different algorithms that are available for
selection can have different graph traversal characteristics such that
the state graph can be traversed in different manners. For example,
algorithms that are more local in their traversals can be teamed with
algorithms that are more global in their traversals, thus covering a
wider area of the state space with good local coverage in some areas.