Software testing demands the use of some model to guide such test tasks as selecting test inputs, validating the adequacy of tests, and gaining insight into test effectiveness. Most testers gradually build a mental model of the system under test, which would enable them to further understand and better test its many functions. Explicit models, being formal and precise representations of a teste...