Anatomy of a System Using Modality

Under Modality the world is split into two main pieces: the stimulus and the SUT. The SUT is the System Under Test which, depending on what you want to verify, could be the actual system you're developing, a simulator, or your system along with its test harness, to name a few. The stimulus is an umbrella term for everything that interacts with the SUT from the outside. Some examples of things that could be included in the stimulus are your test harness, manual interaction with the SUT (e.g. pushing a button), or queueing a mutation through Modality to change the state of the SUT.

A diagram of Modality's system under test (SUT) model, where components of any sort can integrate with Modality for observation and troubleshooting

The SUT is made up of components, logical groupings of functionality which you define. To use Modality you instrument your components with probes, which are the units that allow Modality to collect data, track communication between components, and make targeted alterations to the state of the SUT.

A diagram of Modality's process, introducing mutations into your system, observing many conditions, and returning sophisticated analysis

Data is collected in the form of events, which indicate that something happened and optionally carry a payload with some information about the system. Expectations are a special type of event that you can use to call attention to meaningful state of the SUT by specifying a pass/fail condition. To take advantage of Modality's full functionality you also want to create mutators in your components, which specify what piece(s) of state Modality can change.

A diagram of Modality's scope capabilities, defining areas of interest in the complex flow of system events. Modality scope is observing the trace of all events, including several Modality mutations.

To summarize, when using Modality the world is split into the stimulus and the SUT. The SUT is the System Under Test and the stimulus is everything that interacts with the SUT. The SUT is made up of components, each of which contains some number of probes and mutators. Probes fire events and expectations to collect information and serve as the point where mutators can introduce mutations.

Modality collects all the data recorded in events and expectations, along with all mutations and whatever actions you record from the stimulus, and synthesizes them into a trace which gives a holistic picture of everything that happened in your system and what might have caused it, whether it be a change of state in another component or some input to the SUT from the stimulus.