Overview
In the provided evidence, random test generation appears as part of a test data selection workflow. After an input/output relation has been partitioned using a CNF-like normal form, the test data selection phase uses a combination of constraint solvers, random test generation, and the integrated SMT solver Z3 to construct an instance for each partition. [test-data-selection]
Role in the test-generation pipeline
The cited case study describes a three-phase pipeline:
- A specification-processing phase that leads to partitioning of the input/output relation.
- A test data selection phase that combines constraint solvers, random test generation, and Z3 to construct an instance for each partition.
- A test execution phase that converts instantiated test cases, described as “test oracles,” into test driver code executed against the system under test (SUT). [test-generation-pipeline]
Within this pipeline, random test generation is not presented as a standalone method; it is used together with solver-based techniques during test data selection. [random-generation-with-solvers]
Relationship to HOL-TestGen
The evidence discusses this workflow in the context of HOL-TestGen. It also describes HOL-TestGen’s support for sequence test specifications using monads and its standard representation of valid test sequences with mbind. [hol-testgen-context]