The idea is the following. Let us for simplicity assume that all actions are without
parameters, the idea can be generalized for actions with parameters, or it can be
applied to action symbols only by ignoring the parameters. Imagine that there is a
218 Testing Systems with Complex State
weight associated with each action that is initially some positive number. When an
action is selected the corresponding weight is decremented by one. If, in a given state,
the enabled actions are a1, . . . , ak with weights w1, . . . , wk, then an action ai is not
selected if wi = 0, ai is selected with probability wi/(w1 +?· ?· ?·+wk), otherwise.
A useful analogy is with a box of colored marbles. Each action corresponds to
a particular color and selecting an action corresponds to removing one randomly
chosen marble from the box. This continues until the box is empty. This is a powerful
and computationally cheap technique to produce test runs where weights are chosen
in a way that matches a certain operational profile.
Using groupings for pruning. A further technique that is a powerful way to deal
with complex state is to use state or transition groupings. Suppose that each model
state is mapped to an abstract value called a group label that characterizes some interesting
properties of that state. The grouping function can, for example, be a coverage
function. The grouping function may also be predicate abstraction in which case the
group label is a sequence of Boolean values, or it may be a function that takes a sequence
to a set.
Pages:
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293