What a test suite is, what goes into one, the main types, how it differs from a test case and a test plan, how to build and run one, and how to manage suites as they grow.
A test suite is a group of related test cases that run and report together as one unit, such as a smoke suite or a checkout regression suite. A single test case tells you whether one thing works, but a release needs answers about whole flows: does checkout still work, did the new build break sign-in, is payment safe to ship? Suites answer those questions in one run.
This guide covers what a test suite is, the main types, how a suite differs from a test case and a test plan, how to build and run one, and how to manage suites as they grow. It uses one running example: an online store with a short smoke suite and a 200-case regression suite.
What is a test suite?
A test suite is a collection of related test cases grouped to run and report as one unit. Teams group cases by feature, flow, test type, or risk, so they can run them together and see the health of that area at a glance. In software testing, "test suite" and "software test suite" mean the same thing.
Think of it like folders on your desktop. You wouldn't keep hundreds of loose files and expect to find anything quickly, so you group them. A test suite does the same for test cases, which gives you two advantages:
- Clarity: you know where new test cases belong when a feature grows.
- Efficiency: you run all related tests at once instead of finding them one by one.
Suites also make results easier to read. When a run fails, the grouping shows which area broke, so debugging and reporting get faster.
As testing grows, teams combine several suites to run a full regression cycle, a sequence of related flows, or a cross-browser run in one execution, in parallel or in sequence. Some tools name this object, for example a test suite collection in Katalon Studio. The hierarchy looks like this:
- Test case: one check with steps and an expected result.
- Test suite: a group of related test cases.
- Test suite collection: a group of suites run together for broader coverage.
A test suite can be manual, run by testers from a checklist, or automated, run by a test runner from scripts. Both follow the same idea.
What's in a test suite?
A test suite usually has five parts:
- Test cases: the scenarios to check, each with preconditions, steps, test data, and an expected result. See how to write test cases.
- Test scripts: the code that runs each case in an automated suite. A manual suite uses written steps instead.
- Test data: inputs, accounts, and records the cases need, such as a test user and a product in stock. See test data management.
- Environment and configuration: the browser, device, operating system, and server the suite runs against, plus settings such as timeouts and retries.
- Run conditions: when the suite runs (on commit, nightly, before release) and what counts as a pass.
What is an automated test suite?
An automated test suite (also called an automation suite or test automation suite) is a test suite that runs on its own, based on rules, timing, or events you define, instead of someone starting each test by hand. Once set up, it becomes part of the development workflow and checks the stability of the application in the background.
Teams usually configure an automated suite to run:
- When a developer pushes new code: the suite runs as soon as code reaches the repository and reports right away if something broke.
- As part of a nightly CI build: the team starts each day with fresh results and can pick up overnight failures first thing.
- On a recurring schedule: every 2 hours, every morning at 9 AM, or every Friday afternoon before a deployment freeze. You decide the cadence.
The main benefit is consistency. Automated suites run the same steps in the same order on each run, so results are easier to compare, and nobody has to remember to click Run.
Why use an automated test suite?
- Faster feedback for developers: the suite runs right after a push, so issues get fixed while the change is fresh.
- Earlier bug detection: frequent runs catch defects before they reach staging or production, where they cost more to fix.
- More testing with less effort: suites can run hourly, nightly, or on every commit without extra manual work.
- Fewer defects reaching production: automated checks act as a safety net that keeps running between releases.
Types of test suites
Most teams keep several suites, each with a different purpose and run frequency:
- Smoke suite: a short set of critical checks on every new build, such as the home page loading and sign-in working. If it fails, deeper testing waits. See smoke testing.
- Sanity suite: a narrow check of one area after a small change or fix, to confirm it works before wider testing. See sanity testing.
- Functional suite: cases grouped by feature, such as sign-in, search, or checkout, that check each feature against its requirements. See functional testing.
- Regression suite: cases that confirm existing features still work after changes. It is usually the largest suite and the first to be automated. See regression testing and automated regression testing.
- Integration suite: checks that modules and services work together, for example the cart and the payment service. See integration testing.
- End-to-end suite: complete user journeys across the system, such as browse, add to cart, pay, and receive a confirmation. See end-to-end testing.
- Performance suite: checks response times and behavior under load, usually run before release or on a schedule rather than on every commit.
- Acceptance suite: checks the software against acceptance criteria and user requirements, often during user acceptance testing.
Manual vs automated test suites
A manual test suite is a list of test cases that testers run by hand and record results for. It suits new features, visual and usability checks, and exploratory work. See manual testing.
An automated test suite runs scripts through a test runner, usually from CI or a scheduler. It suits stable, repeated checks such as smoke and regression suites. Many teams keep both: an automated regression suite for every build, and a manual suite for the parts of a release that are new or hard to automate. Some tools don't let you mix manual and automated cases in one suite, so plan them as separate suites.
Static vs dynamic test suites
A static test suite has a fixed list of test cases that someone adds and removes by hand. It's simple and predictable, but it drifts as the product changes.
A dynamic test suite selects its cases with a query, usually on tags, names, or folders, such as "every case tagged Smoke and Login". New cases join the suite as soon as they carry the right tag, so suites stay current with less upkeep. Test frameworks offer the same idea through tags or markers, for example pytest markers or JUnit 5 tags.
Test case vs test suite vs test plan
These terms describe different levels of the same work:
Term | What it is | Online store example | Typical owner |
|---|---|---|---|
Test scenario | A high-level situation to test, without steps | A returning customer pays with a saved card | QA lead or tester |
Test case | One check with preconditions, steps, data, and an expected result | Pay with a saved Visa card and see the order confirmation page | Tester or automation engineer |
Test suite | A group of related test cases run and reported together | The checkout and payment regression cases | QA lead or suite owner |
Test run | One execution of a suite on a build and environment, with results | Last night's regression run on Chrome, build 4.2.1 | Whoever triggers it, or CI |
Test plan | The document that sets scope, approach, schedule, people, and exit criteria for testing | The release 4.2 test plan | Test manager or QA lead |
In short, a test scenario says what to test, a test case says exactly how, a test suite groups cases so they run together, a test run records one execution, and a test plan decides which suites run, when, and what counts as done.
How to build a test suite
- Define the purpose. Decide what question the suite answers, for example "is this build stable enough to test?" for a smoke suite or "did this release break existing features?" for regression.
- Pick a grouping system. Agree how the team classifies cases before you add them, so everyone knows where new cases belong. The common options are in the table below.
- Select the test cases. Add only the cases that serve the suite's purpose. Reuse existing cases instead of copying them into each suite, so one change updates every suite that uses the case.
- Set the order and dependencies. Put fast, critical checks first so a broken build fails early, and keep cases independent so they can run in any order or in parallel.
- Configure data and environment. Choose the browsers, devices, and servers, the test data, and the settings such as timeouts and retries.
- Set the run conditions. Decide when the suite runs (on commit, nightly, before release), who owns it, and what result blocks a release.
Common ways to group test cases:
Grouping | Examples | Useful when |
|---|---|---|
Feature | Sign-in, checkout, search | You want the health of each product area at a glance |
Test type | Smoke, regression, functional | You want to control how deep each run goes |
Priority | High, medium, low | You need to run the riskiest cases first |
User role | Admin, guest, member | The app has permission-based flows |
Test level | Unit, API, UI, integration | You want to know where in the stack a test runs and how long it takes |
Environment | QA, staging, production | Tests differ by environment settings or data |
Platform | Desktop, mobile, tablet | The app is responsive or cross-device |
Input type | Static, data-driven | You want to separate simple checks from data-heavy tests |
Run frequency | On commit, daily, weekly | You need to decide what runs constantly and what is scheduled |
Business flow | Sign-up, purchase, return | You test end-to-end user journeys |
Test suite example: an online store
The online store from our test management guide keeps two main suites. The numbers below are illustrative.
Smoke suite (10 cases). It answers one question: is this build worth testing? It covers the home page loading, sign-in, search returning results, adding a product to the cart, and reaching the payment page.
As a manual checklist, a tester runs the 10 cases on a new build and records pass or fail for each. The first 5 look like this:
Case | Steps | Expected result |
|---|---|---|
Home page loads | Open the store URL | Home page shows featured products within the agreed load time |
Sign-in works | Sign in with a test customer account | Account name appears in the header |
Search returns results | Search for a product in stock | Matching products appear |
Add to cart | Add a product from its page | Cart count goes up by 1 |
Reach payment | Go from the cart to checkout | Payment page loads with the order total |
As an automated suite, the same 10 cases run as scripts on every commit and every deploy to a test environment, and finish in a few minutes. If any case fails, the pipeline stops before the longer runs start.
Regression suite (200 cases). It covers sign-in, checkout and payment (40 of the cases are payment cases), and search. It runs nightly across the supported browsers, and the 40 payment cases also run on every release candidate. A separate manual suite covers what is new in each release, such as a redesigned checkout page that testers check by hand on each supported browser.
Here is how the store's suites line up with their triggers. Treat the time budgets as rules of thumb, not targets:
Suite | Trigger | Size | Time budget |
|---|---|---|---|
Smoke | Every commit and every deploy | 10 cases | Minutes |
Payment regression | Every release candidate | 40 cases | Under an hour |
Full regression | Nightly and before release | 200 cases | A few hours, less in parallel |
Manual release checks | Each release, by testers | New and changed features | A planned test session |
How to run a test suite
Running a suite takes 3 things:
- A test runner, such as JUnit, TestNG, pytest, Cypress, or Katalon Runtime Engine.
- A suite definition, such as an XML file, annotations, tags, CLI parameters, or a suite built in a tool's interface.
- An execution environment, such as a local machine, a container, a CI agent, or a cloud grid.
With these in place, a suite becomes one repeatable command you can call from a terminal, a build pipeline, or a scheduler. Here is what that looks like for the store's smoke suite in common runners:
Runner | How the suite is defined | Example command |
|---|---|---|
JUnit with Maven | A suite class or test filter | mvn -Dtest=SmokeSuite test |
TestNG | A testng.xml file that lists the classes | java org.testng.TestNG testng.xml (with the test classes and TestNG on the classpath) |
pytest | Markers on test functions | pytest -m "smoke" |
Cypress | Spec files selected with --spec | npx cypress run --spec "cypress/e2e/smoke.cy.js" |
Katalon Runtime Engine | A test suite in a Katalon Studio project | katalonc -noSplash -runMode=console -projectPath="(path to your .prj file)" -testSuitePath="Test Suites/Smoke" -browserType="Chrome" -apiKey="(your Katalon API key)" |
Running test suites in CI/CD
A CI/CD tool such as GitHub Actions, Jenkins, GitLab CI, or Azure DevOps doesn't run tests by itself. The CI agent pulls the repository, installs dependencies, and calls your test runner with a command like the ones above, for example npm run test:smoke or pytest -m "smoke".
How often each suite runs is the main design choice. The store's trigger table above is a common starting point: smoke on every commit and deploy, full regression nightly and before release. For ordering, environments, and parallel runs across a pipeline, see test orchestration.
For more on pipelines, see our guide to the CI/CD pipeline.
Test suite management
Test suite management is the ongoing work of organizing, prioritizing, maintaining, and measuring manual and automated test suites so they stay fast, relevant, and trusted as the product changes. It is part of test case management, which in turn sits inside wider test management.
A suite that nobody manages tends to grow slower and noisier with every release. These practices keep it useful.
Common test suite management challenges
- Size and duplication: suites grow with every feature, and copied cases mean one change has to be made in several places.
- Test data and environments: cases fail because data went stale or an environment differs from the one the suite was written for.
- Stale cases: tests for removed or changed features keep running and fail for the wrong reasons.
- Collaboration: developers, testers, and product owners don't agree on what each suite covers or who owns it.
- Limited time and people: there is rarely time to run everything, so teams need a way to choose.
- Measurement: without agreed metrics, nobody can tell whether a suite is getting better or worse.
Organize suites by purpose
Keep one source of truth for each test case and build suites from it, rather than copying cases into each suite. Group suites in folders by product area or purpose, and keep the number of suites small enough that everyone knows what each one is for. A suite should answer one question, such as "is the build stable?" or "is payment safe to release?".
Use clear naming conventions
A good suite name says what it covers and when it runs. A pattern such as area, type, and trigger works well, for example "Checkout regression nightly" or "Smoke on commit". Apply the same pattern to test cases so search and filters work, and avoid names that only make sense to their author.
Tag test cases for flexible suites
Tags let one test case belong to several suites without copies. Tag cases by feature, type, priority, and platform, then build dynamic suites from tag queries. When a new case is tagged Smoke and Checkout, it joins the right suites automatically. Agree a short tag list as a team, because inconsistent tags break the queries.
Assign owners and review on a schedule
Before you automate anything, agree what each suite tests, who owns it, and how often it's reviewed, and share that plan with developers and product owners. Then keep suites clean:
- Update or retire cases as soon as a feature changes or is removed, so old tests don't erode trust in the results.
- Move repeated steps into shared helpers such as a sign-in routine, so a changed selector or endpoint is fixed once.
- Review each suite every sprint or every month, looking for redundant, slow, and flaky tests, missing scenarios, and tests that no longer add value.
Prioritize by risk
Not every case deserves the same run frequency. Sort cases into:
- High risk: critical functions, user-facing features, and core regression cases, such as payment.
- Medium risk: less critical functions and important edge cases.
- Low risk: cosmetic checks and low-impact areas.
Rank within each group by business impact, risk and complexity of the code, how often users touch the feature, and whether test data is available. Run high-risk cases most often, and revisit the ranking when the product changes. Test-driven development helps here too, because every new function arrives with its own tests.
Handle flaky tests
A flaky test passes and fails on the same code. A few flaky tests can make a whole suite untrustworthy, because people start ignoring red results. Retry failed cases once to tell flaky failures from real ones, then move confirmed flaky tests into a quarantine suite that doesn't block releases, and fix or delete them on a deadline. Common causes are timing, shared test data, and test order. See flaky tests in test automation.
Optimize a test suite for speed and coverage
Running everything on every commit is slow, and running too little lets defects through. To optimize a test suite:
- Tier your suites: smoke on commit, regression nightly, the widest coverage before release.
- Remove duplicates and merge cases that check the same thing.
- Run independent cases in parallel and split long suites across machines or browser sessions.
- Use data-driven tests so one case covers many inputs instead of many near-identical cases.
- Measure coverage against requirements, not just case counts. See test coverage techniques.
Signs a suite needs pruning
- Tests that haven't failed in months and duplicate other coverage.
- Run time that creeps up release after release.
- Reruns that have become routine.
- Cases for features that no longer exist.
- Failures the team has learned to ignore.
Track suite health
A QA lead can judge a suite with 4 numbers: the pass rate trend across runs, the flaky rate, execution time, and coverage of requirements. Falling pass rates point to product or test problems, rising flaky rates and run times point to maintenance debt, and gaps in requirement coverage show what the suite misses.
Use a central tool
Managing suites in spreadsheets, scattered folders, and ad hoc scripts stops working as suites grow. A test management tool keeps cases, suites, runs, and results in one place, so the team can filter, audit, and remove duplicates. You can manage test suites in Katalon TestOps, or compare options in our guide to the best test management tools.
Test suites in Katalon
In Katalon, automated suites, test suite collections, and dynamic suites are built in Katalon Studio, and Katalon TestOps, the test management product in Katalon True, is where teams build manual and automated suites from existing test cases, then run and track them. Based on the current Katalon docs:
- Test suites in TestOps: a test suite is a collection of test cases executed and reported together, such as Smoke, Regression, or a release scope. You build suites in TestOps from existing test cases without copying them. Each suite is either automated or manual (not both), and suites can be organized in folders.
- Test suite collections: in Katalon Studio, a test suite collection runs several suites together in parallel or sequential mode, each with its own environment, run configuration, and execution profile.
- Dynamic test suites: a dynamic test suite in Katalon Studio adds test cases through a query on ID, name, tag, comment, or description. From Studio 11.6.0, queries support AND, OR, and parentheses, for example (tag=Smoke OR tag=Sanity) AND tag=Login.
- Retries: in Katalon Studio, any test suite can also retry all executions or failed executions only after the run, which helps identify flaky tests.
- Scheduled runs in TestOps: an automated test run picks test suites and collections, sets an environment per suite, runs suites in sequence or in parallel, and can run now or on a daily or weekly schedule, such as a nightly regression. TestOps can also schedule and run dynamic test suites.
- Command line and CI: Katalon Runtime Engine runs a suite or a collection from the command line, as in the table above, so a CI tool such as Jenkins, GitHub Actions, or GitLab CI can call it.
To try suites, collections, and scheduled runs on your own project, request a free trial.
Putting it together
A test suite turns many separate test cases into one question the team can answer with a single run. Define what each suite is for, build it from reusable cases, decide when it runs, and keep it lean with owners, tags, risk-based priorities, and regular reviews.
Next steps: write better cases with our guide on how to write test cases, decide which suites run in a release with a test plan, and see how suites fit into the bigger picture in our guide to test management.
Frequently asked questions
A test suite collection groups several test suites so they run in one execution, in parallel or in sequence, for example a full regression cycle across browsers.
An automated test suite is a test suite that runs on its own, triggered by a code push, a nightly CI build, or a schedule, instead of someone starting each test by hand. It runs the same steps in the same order on each run, so the team gets comparable results and faster feedback.
It's "test suite", as in a set of things that belong together. "Test suit" is a common misspelling.
A test plan is a document that sets the scope, approach, schedule, people, and exit criteria for testing. A test suite is a group of test cases that runs together. The plan decides which suites run, when, and what result counts as done. See our test plan guide.
A test case is one check with steps, data, and an expected result. A test suite groups many related test cases so they run and report together. One test case can belong to several suites.
An online store's smoke suite could hold 10 cases: the home page loads, sign-in works, search returns results, a product can be added to the cart, and the payment page loads. It runs on every commit and every deploy, and stops the pipeline if any case fails.
By feature, test type, priority, user role, test level, environment, platform, input type, run frequency, or business flow. Pick one system as a team before you build suites, and use tags so one case can belong to several suites without copies.
Usually not. Many tools, Katalon TestOps included, make a suite either manual or automated, so teams keep separate manual and automated suites for the same area.
Give each suite an owner and a review cadence, update or retire cases when features change, move repeated steps into shared helpers, and look for redundant, slow, and flaky tests in every review. A test management tool keeps suites in one place so gaps and duplicates are easier to spot.
Tier suites so only smoke tests run on every commit, remove duplicate cases, run independent cases in parallel, quarantine flaky tests, and prioritize high-risk cases so the most important checks run first.

Test everything. Ship with confidence.
From generating test cases to spotting failures, Katalon's AI works across your entire pipeline, automatically.

