A collection of test cases grouped by feature, component, or testing level (unit, integration, e2e).
A test suite is a collection of test casesTest CaseQuality AssuranceAn individual test caseView reference → organised to run together against a product, usually on every commit. The unit of value is the individual test, but the unit of decisionDecisionStrategyA recorded decision with context, rationale, and consequencesView reference → is the suite: what it covers, how long it takes, and whether a green run means the build is safe to ship. The interesting tension is that a suite gets more reassuring as it grows and slower at the same rate, and past a certain size the slowness starts eating the reassurance.
The grouping of tests into managed suites is as old as automated testing itself, but the modern thinking about how to shape a suite traces to Mike Cohn. He popularised the test pyramid in Succeeding with Agile (2009), arguing for a broad base of fast unit tests, a thinner middle of service tests, and a small cap of slow end-to-end UI tests. The economic logic is simple: tests near the base are cheap to write, quick to run, and pinpoint failures precisely; tests near the top are expensive, slow, and brittle.
Martin Fowler later refined the model in his Test Pyramid bliki entry, and a long debate followed about whether the pyramid still holds. Critics point out that the layer names have aged badly and that fast integration tests now blur the middle. The durable part survived the argument: suite shape is a budget, and inverting the pyramid (lots of slow UI tests, few unit tests) produces a suite that runs for an hour and flakes constantly. Run time is a first-class design constraintConstraintStrategyA constraint entityView reference →, not an afterthought.
A team ships a B2B web app with 2,400 tests. The suite breaks down as 2,000 unit tests (90 seconds), 350 service tests (4 minutes), and 50 Selenium UI tests (11 minutes), so a full run takes about 16 minutes on CI. That is already at the edge of tolerable; once a pull-request check passes 15 minutes, developers start context-switching away and stop trusting the signal.
The team splits the suite. Unit and service tests run on every push and gate the merge. The 50 UI tests move to a nightly run plus a pre-releaseReleaseProduct SpecificationA shipped version of the productView reference → gate, because their jobJobUserJob To Be Done: what the user is trying to accomplishView reference → is guarding the release, not blocking each commit. Six weeks later the per-push wait is under 6 minutes, merge frequency rises, and the UI tests still catch the cross-browser breakages they were written for. The suite did not get smaller; it got organised by how fast feedback needsNeedUserA user need, pain, desire, or constraintView reference → to be.
In the Unified Product Graph, Test SuiteQuality AssuranceA suite of related tests sits in the quality and testing region as the organising entity for verification. A product owns its suites through test_suiteProductmaintainsTest Suitehierarchy, and each suite gathers its members through product_maintains_test_suiteTest SuitecontainsTest Casehierarchy and test_suite_contains_test_caseTest SuiteincludesRegression Testhierarchy. Manual exploration connects through test_suite_includes_regression_testTest Suitetested viaQA Sessionhierarchy. Modelling the suite as a first-class node, rather than a flat bag of cases, lets the graph answer the questions that actually decide releases: which features are covered, how the regression set has grown, and where the slow tests cluster.test_suite_tested_via_qa_session
Type-specific fields on BaseNode
suite_typestringCategory of test suite
test_countnumberNumber of tests in the suite
pass_ratenumberPercentage of tests passing (0-100)
last_runstringISO date of last execution
total_duration_msnumberTotal execution time for the last run, in milliseconds
failed_countnumberNumber of tests that failed in the last run
skipped_countnumberNumber of tests that were skipped in the last run
flaky_countnumberNumber of tests that passed only on retry (flaky) in the last run
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
3 phases — initial: draft
8 edge types connected to this entity.
product_maintains_test_suitetest_suite_contains_test_casetest_suite_includes_regression_testtest_suite_tested_via_qa_sessiontest_suite_measured_by_test_coverage_reporttest_suite_deployed_in_test_environmenttest_suite_produces_test_resulttest_suite_covers_feature