A software testing system uses a graph traversal algorithm to explore a
model simulating a software product in order to identify errors in the
software product. The model employs a Petri's net construct for
maintaining state and governing transitions. In particular, the model
mediates between a test driver and the software product. The model-based
approach is usable both to validate the design of the software and verify
the implementation of that design. Using the Petri net model, the test
space is bounded.