Skip to main content

Compatible PICT Online

A browser-based pairwise test case generator fully compatible with Microsoft PICT model format. Write your model, click Generate, and get optimized test combinations instantly — no installation required.

Privacy

All processing runs entirely in your browser. No data is sent to any server.

Loading PICT demo…

How it works

PictModel parses a PICT-format model into parameters, sub-models, and constraint filters, and lets you generate rows directly from it:

import { PictModel } from "covertable/pict";

const model = new PictModel(`
machine: iPhone, Pixel, XPERIA, ZenFone, Galaxy
os: iOS, Android
browser: FireFox, Chrome, Safari

IF [machine] = "iPhone" THEN [os] = "iOS";
IF [os] = "iOS" THEN [machine] = "iPhone";
`);

const rows = model.make();

If you only want to apply constraints to factors you already have in code, you can pass model.filter directly to make as a preFilter:

import { make } from "covertable";
import { PictModel } from "covertable/pict";

const machine = ["iPhone", "Pixel", "XPERIA", "ZenFone", "Galaxy"];
const os = ["iOS", "Android"];
const browser = ["FireFox", "Chrome", "Safari"];

const model = new PictModel(`
machine: iPhone, Pixel, XPERIA, ZenFone, Galaxy
os: iOS, Android
browser: FireFox, Chrome, Safari

IF [machine] = "iPhone" THEN [os] = "iOS";
IF [os] = "iOS" THEN [machine] = "iPhone";
`);

make({ machine, os, browser }, {
preFilter: model.filter,
});

Supported Syntax

PictModel supports the full PICT model file format. See the PictModel reference for the complete table.

Constraints

SyntaxExampleDescription
IF ... THEN ...IF [os] = "iOS" THEN [machine] = "iPhone"Conditional constraint
IF ... THEN ... ELSE ...IF [os] = "iOS" THEN [machine] = "iPhone" ELSE [machine] <> "iPhone"With else branch
Unconditional[machine] <> [os];Always-applied invariant (no IF)
= / <>[os] = "iOS" / [os] <> "Android"Equality / Inequality
> / < / >= / <=[price] > 100Numeric comparisons
AND / OR / NOT[os] = "iOS" AND [browser] = "Safari"Logical operators with parentheses
LIKE[machine] LIKE "i*"Pattern matching with * and ?
IN[os] IN {"iOS", "Android"}Set membership

Parameters

SyntaxExampleDescription
BasicType: A, B, CStandard parameter declaration
QuotedMsg: "hello, world"Required for values with commas
AliasesOS: Windows | Win, LinuxMultiple names for the same value
Invalid (~)Type: A, ~BadNegative-test value (at most one per row)
WeightBrowser: Chrome (10), FirefoxBias value selection during completion
ReferenceB: <A>, extraInherit values from another parameter
Sub-model{ A, B, C } @ 3Apply different N-wise strength to a group