Skip to content

Home / Supported Features

Supported Features

This page documents what ProTest supports and does not support relative to Microsoft PICT's feature set.

Parameter Features

PICT Feature ProTest Notes
Named parameters Yes
Named values Yes
Value weighting (N) Yes Biases generation when choice doesn't affect coverage (details)
Negative values ~ Yes Full support with UI toggle (details)
Value aliases \| No Not supported in the UI. ProTest's constraint IntelliSense eliminates the need for aliases by providing autocomplete for parameter names and values. Aliases in imported .pict files are preserved on round-trip but cannot be created or edited.
Parameter reuse <Param> Partial Expanded on .pict import (values copied with weights and negatives preserved). Not available in the visual editor — use the Model Text tab for manual entry.

Constraint Features

PICT Feature ProTest Notes
IF / THEN / ELSE Yes Full conditional constraint support
Unconditional invariants Yes Constraints that always apply (details)
=, <> (equality) Yes String and numeric comparison
>, >=, <, <= (comparison) Yes String and numeric comparison
LIKE (wildcard matching) Yes * = any chars, ? = one char
IN (set membership) Yes IN { "val1", "val2" } and NOT IN
AND, OR, NOT (logical) Yes With correct operator precedence
Parenthesized expressions Yes (condition1 OR condition2) AND condition3
Parameter-to-parameter comparison Yes [Param1] = [Param2] with all operators
ISNEGATIVE() / ISPOSITIVE() No Parsed on import but not evaluated. These functions test whether a value is negative — ProTest imports them without error but the constraint checker does not enforce them.
Comments (#) Yes Supported in constraints and model text

Model Features

PICT Feature ProTest Notes
Global interaction order (1-6) Yes Set in sidebar or CLI --strength
Sub-models { } @ N Yes Full support with UI editor (details)
Complete seeds Yes All parameter values specified
Partial seeds Yes Some values left as (any)
Randomization (/r) Yes With optional deterministic seed
Case-sensitive matching (/c) Yes Toggle in sidebar or CLI --case-sensitive
Per-parameter order (Param @ N) No Stripped on import with a warning. Use sub-models instead, which provide the same capability with a clearer UI.
Result parameters ($Param) No The $ prefix for computed/output parameters is stripped on import. ProTest treats all parameters uniformly.
Empty string values No Empty values (space between commas) are not supported. Use a named placeholder value instead (e.g., "None" or "Empty").

Generation Features

Feature ProTest Notes
PICT engine Yes Microsoft's pairwise testing engine. Generally better for t=3+ (details).
SIPO engine Yes Simulated annealing. Generally better for pairwise (t=2) (details).
Parallel trials Yes Multiple seeds, best result kept
NCK post-optimization Yes UI only. Rarely effective at t=2 (details).
Time-limited generation Yes CLI only (--max-time)
Output statistics (/s) No PICT's /s flag for model statistics is not exposed. ProTest computes its own statistics in the Results tab.

Verification Features

Feature ProTest Notes
Tuple coverage verification Yes Confirms all t-way tuples are covered
Constraint satisfaction check Yes Confirms no row violates constraints
Seed inclusion check Yes Confirms all seeds appear in results
Sub-model coverage check Yes Confirms sub-model orders are met
Transitive constraint analysis Yes ProTest-exclusive. Detects implied exclusions from constraint interactions (details).

File Format Features

Feature ProTest Notes
.cahtt (native JSON) Yes Full model + settings + results (details)
.pict import Yes Converts to .cahtt with warnings for unsupported features
.pict export Yes Model text only — see what you lose
CSV output Yes Comma-separated values
Markdown output Yes Table format for documentation
Custom separators (/d:, /a:) No Value separator (comma) and alias separator (pipe) are hardcoded.

Features ProTest Adds Beyond PICT

ProTest is not just a PICT wrapper — it adds significant capabilities:

Feature Description
SIPO engine Alternative generation algorithm, often produces fewer test cases at pairwise strength
NCK post-optimization Removes redundant test cases while maintaining coverage
Transitive constraint analysis Detects and explains implied exclusions from constraint interactions
Coverage % column Cumulative tuple coverage per row, recalculates on sort
Constraint IntelliSense Autocomplete for parameter names and values in the constraint editor
Visual UI Full-featured WPF application with 6-tab interface
Verification framework Coverage, constraint, seed, and sub-model verification
Native .cahtt format Stores everything in a single JSON file including results and settings