Skip to content

Home / Tutorials / Real-World Example

Real-World Example

In this tutorial, you will model a realistic testing scenario for a cloud deployment pipeline, using sub-models, seeds, constraints, and engine comparison.

Scenario

Your team deploys a microservice to multiple cloud environments. You need to test the deployment across:

Parameter Values
Cloud Provider AWS, Azure, GCP
Region US-East, US-West, EU-West
Instance Size Small, Medium, Large, XLarge
OS Image Ubuntu, Amazon Linux, Windows Server
Database PostgreSQL, MySQL, DynamoDB
Cache Redis, Memcached, None
Load Balancer ALB, NLB, None

That's 3 x 3 x 4 x 3 x 3 x 3 x 3 = 2,916 combinations. Exhaustive testing is impractical.

Step 1: Define Parameters

Enter all seven parameters and their values on the Parameters tab.

Step 2: Add Constraints

# DynamoDB is AWS-only
IF [Cloud Provider] <> "AWS" THEN [Database] <> "DynamoDB";

# Amazon Linux is AWS-only
IF [Cloud Provider] <> "AWS" THEN [OS Image] <> "Amazon Linux";

# ALB/NLB are AWS load balancers
IF [Cloud Provider] <> "AWS" THEN [Load Balancer] IN { "None" };

Step 3: Create Sub-Models

Infrastructure parameters need stronger coverage than application parameters:

Sub-Model Parameters Order
Infrastructure Cloud Provider, Region, Instance Size, OS Image 3
Application Database, Cache, Load Balancer 2

Step 4: Add Seeds

Ensure your production configurations are always tested:

Cloud Region Size OS DB Cache LB
AWS US-East Large Ubuntu PostgreSQL Redis ALB
Azure EU-West Medium Windows Server MySQL Redis None

Step 5: Generate and Compare Engines

  1. Generate with PICT engine — note the test case count
  2. Generate with SIPO engine — compare the count

Engine Comparison

The SIPO engine typically produces 10-30% fewer test cases than PICT, though the reduction varies by scenario. For this model, try both and compare.

Step 6: Apply NCK Optimization

On the Results tab, click Reduce using NCK to see if any redundant test cases can be removed.

Result

Instead of testing all 2,916 combinations, you now have a compact test suite (likely 30-50 test cases) that:

  • Covers all 3-way infrastructure interactions
  • Covers all pairwise application interactions
  • Includes your production configurations
  • Respects all cloud-specific constraints

Key Takeaways

  • Sub-models let you apply higher coverage where it matters most
  • Constraints prevent invalid test cases from being generated
  • Seeds ensure critical configurations are always tested
  • Comparing engines can significantly reduce your test suite