What is the difference between all combinations and pairwise?
All combinations is the cartesian product: every level of every factor multiplied together. Three levels by two by two is 12 rows, and it grows multiplicatively (six three-level factors is 729 rows). A pairwise set is a much smaller selection built so that, for any two factors you pick, every combination of their levels appears at least once. Those six three-level factors need only about 15 rows, with no two-factor combination missing.
Why is pairwise usually enough?
Empirically most defects are triggered by a single condition or by two conditions interacting – NIST studies put the two-way figure around 70 to 90 percent – and the share of faults that need three or more interacting factors falls away quickly. So with limited time it is practical to guarantee every two-factor combination and add the handful of higher-order cases you know matter. Where failure is expensive, such as payments or security, run the full product instead.
How are constraints handled?
Some combinations cannot exist – iOS with Internet Explorer, for example. Mark them as constraints and any row containing both levels is dropped from the full product and never generated in the pairwise set. The pair itself also stops counting towards coverage, which is why the number of covered pairs goes down. If you need many constraints, splitting the factor into a separate table is often clearer.
How do I use the generated table?
CSV imports into most test management tools, TSV pastes into Excel or Google Sheets, and the Markdown table drops into a GitHub issue or a wiki. Each row is one test case, so teams usually add columns such as expected result, owner and outcome on the right. The factors and levels live in the URL, so the whole team can reproduce the same table.