In that case the role of the strategy reduces to checking conformance
without ever needing to select tester actions. Passive testing can be used, for example,
to validate existing logs of events of a concurrent system. In that case each log
represents a sequence of events produced by a single agent. Multiple per-agent
event logs can be merged into a single log, for example by using the multiplexing
technique discussed below.
16.6 Partially ordered runs
This section discusses the problem of producing a sequence of events of a reactive
system, such that the sequence respects an underlying partial order of those events.
If the IUT is sequential, such as a single-threaded program, events can be enqueued
in the order they are observed by the stepper. This is, for example, the case
with the bag example above. If the IUT is concurrent, such as a multithreaded program
or a distributed system, the problem is that the chronological order in which
the events are observed by the stepper and enqueued into the observation queue
may differ from the chronological order in which they actually happened, due to
buffering and communication delays. This may render the testing process incorrect.
Dependencies between agents, where agents are either threads or processes,
usually impose a partial order on the events. For example, send events happen before
corresponding receive events in communicating systems.
Pages:
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359