Validation¶
ProTest validates your model in real time as you edit. The validation summary in the left sidebar shows a green checkmark when the model is valid, or error and warning counts when issues are detected.
How Validation Works¶
Validation runs automatically whenever you change any part of the model — parameters, values, constraints, seeds, or sub-models. You don't need to trigger it manually.
Status Indicators¶
| Status | Meaning |
|---|---|
| Valid (green checkmark) | No errors or warnings. The model is ready to generate. |
| N warning(s) | Warnings found but generation is still allowed. Review warnings to ensure they are intentional. |
| N error(s) (warning icon) | Errors found. Generation is blocked until all errors are resolved. |
| N error(s), M warning(s) | Both errors and warnings. Fix the errors first. |
Errors vs Warnings¶
- Errors block generation. They indicate problems that would cause the engine to fail or produce invalid results.
- Warnings allow generation. They flag potential issues that might be intentional (e.g., a seed referencing a value you recently renamed).
Parameter Validation¶
| Check | Severity | What It Means |
|---|---|---|
| No parameters defined | Error | You need at least one parameter to generate. |
| Empty parameter name | Error | A parameter has a blank name. Give it a name. |
| Duplicate parameter names | Error | Two parameters have the same name (case-insensitive by default). Rename one. |
| Parameter has no values | Error | A parameter exists but has no values defined. Add at least one value. |
| Empty value name | Error | A value within a parameter has a blank name. Give it a name. |
| Duplicate values in a parameter | Warning | The same value appears twice in one parameter. This is usually a typo. |
Constraint Validation¶
ProTest checks your constraints for common errors without requiring you to generate first.
Quote and Reference Errors¶
| Check | Severity | What It Means |
|---|---|---|
| Mismatched quotes | Error | A constraint line has an odd number of " characters. Check for missing or extra quotes. |
| Unknown parameter reference | Error | [SomeParam] doesn't match any defined parameter. Check spelling and case. |
| Invalid value in comparison | Error | "SomeValue" isn't a valid value for the referenced parameter. Check spelling. |
| Invalid value in IN set | Error | A value inside IN { "val1", "val2" } doesn't exist for that parameter. |
Numeric vs String Value Errors¶
ProTest determines whether a parameter is numeric (all values parse as numbers) or string (anything else), and validates constraints accordingly.
| Check | Severity | What It Means |
|---|---|---|
| Unquoted number on string parameter | Error | You wrote [OS] = 123 but OS is a string parameter. Use [OS] = "123". |
| Unquoted word as value | Error | You wrote [OS] = Windows without quotes. Use [OS] = "Windows". |
| Unquoted number not in numeric parameter | Error | You wrote [Count] = 99 but 99 isn't one of Count's values. |
| Quoted value on numeric parameter | Warning | You wrote [Count] = "5" but Count is numeric. Use [Count] = 5 instead. This still works but is not the intended syntax. |
Examples¶
Numeric parameter (values: 4, 8, 16, 32):
# Correct — unquoted numbers for numeric parameter
IF [RAM] >= 8 THEN [Performance] = "High";
# Warning — quoted number on numeric parameter (works but not preferred)
IF [RAM] = "8" THEN [Performance] = "High";
String parameter (values: Windows, Linux, macOS):
# Correct — quoted strings for string parameter
IF [OS] = "Windows" THEN [Browser] <> "Safari";
# Error — unquoted string value
IF [OS] = Windows THEN [Browser] <> Safari;
Semicolons Are Optional
ProTest automatically adds missing semicolons when processing constraints. You can include them for readability, but forgetting one will not cause an error.
Seed Validation¶
| Check | Severity | What It Means |
|---|---|---|
| Seed references unknown parameter | Warning | A seed row references a parameter that doesn't exist. This can happen if you renamed or removed a parameter after creating seeds. |
| Seed value invalid for parameter | Warning | A seed row has a value that isn't in the parameter's value list. This can happen if you renamed or removed a value. |
Seed issues are warnings (not errors) because they don't prevent generation — the engine simply ignores invalid seed entries.
Sub-Model Validation¶
| Check | Severity | What It Means |
|---|---|---|
| Empty sub-model name | Error | A sub-model has a blank name. Give it a name. |
| Duplicate sub-model names | Error | Two sub-models share the same name. Rename one. |
| Sub-model references unknown parameter | Error | A sub-model lists a member parameter that doesn't exist. |
| Sub-model has no member parameters | Warning | A sub-model exists but has no parameters assigned. Add at least two parameters. |
| Sub-model order exceeds member count | Warning | The interaction strength is higher than the number of parameters (e.g., order 3 with only 2 parameters). Lower the order or add more parameters. |
Fixing Validation Issues¶
When you see errors or warnings in the validation summary:
- Click the message — ProTest navigates to the relevant tab and highlights the issue
- Read the message — It tells you exactly what's wrong and often suggests the fix
- Fix the issue — Validation re-runs automatically as you edit
- Check for green — Once all errors are resolved, the checkmark turns green and you can generate
Common Scenarios¶
"[Browser] is not a valid parameter" You likely have a typo in your constraint. Check the spelling against the Parameters tab. Remember that parameter names are case-insensitive by default.
"Windows is not a valid value for [OS]"
Your constraint uses an unquoted string. Change [OS] = Windows to [OS] = "Windows".
"Seed value 'Chrome' is not a valid value for Browser" You probably renamed "Chrome" to something else in the Parameters tab. Update the seed to match.
"Sub-model order (3) exceeds member count (2)" You can't have 3-way coverage with only 2 parameters. Either add another parameter to the sub-model or lower the order.