Property based testing deals with the test oracle problem by specifying a set of properties that can be checked automatically after a test. For example, a property to check for a bank deposit transaction might be "transaction_amount > 0 && new_balance == old_balance + transaction_amount". After a set of properties are defined, random values (within a specified range) can be applied and output checked against the properties.
Combinatorial test methods can make this process both more efficient and more thorough. Instead of applying random values, t-way combinations of values can be used. This approach provides quantifiable assurance that the system responds correctly, as defined by the properties, to input values. Using covering arrays makes the process more thorough and requires fewer tests than applying a large volume of random inputs.
This approach is an active area of research.
Security and Privacy: assurance, modeling, testing & validation
Technologies: semiconductors, software & firmware