Test Levels

A test level is a group of test activities organised and managed together, aimed at the software at one stage of its development: from a single component up to the whole system working with other systems. The ISTQB Foundation syllabus (CTFL v4.0) describes five levels: component testing, component integration testing, system testing, system integration testing and acceptance testing.

In a food delivery app, a developer checks the delivery-fee function (component), the order and restaurant services are tested together (component integration), testers run complete orders in a test environment (system), then with the payment provider’s sandbox, its test environment (system integration), and the business confirms that the app fits how restaurants and customers really work (acceptance).

Why it matters

Testing everything at the end through the user interface makes defects slow to find and hard to locate: a wrong checkout total could come from a rounding function, an interface between services, a configuration or an external provider. Each level looks at a defined object with its own test basis, so a failure points to a smaller area and many defects are found earlier, closer to their cause — the early testing principle in practice.

Levels also expose gaps and duplication: if nobody owns system integration testing, customers are the first to test the payment interface. For a tester, the levels tell you which documents to ask for, which environment you need and which defects to expect.

What a test level is

In the V-model lesson each development level was paired with a test level. ISTQB calls each test level an instance of the test process: the test activities, from planning to completion, happen at every level. In sequential models the exit criteria of one level are often part of the entry criteria for the next. In some iterative models this may not apply: development activities can span several levels, levels can overlap in time, and one sprint can include work at every level.

Levels are not test types. A test type groups test activities by what they check or how the tests are derived: functional and non-functional testing look at different quality characteristics, while black-box testing derives tests from the specification and white-box testing from the internal structure. Most types can be performed at every level: a performance test can measure one database query or the whole checkout. ISTQB separates the levels by these attributes:

  • Test object: what is tested, from a function up to an interface with another system.
  • Test objectives: what the level should show.
  • Test basis: what the tests are derived from, such as a design or user stories.
  • Defects and failures: what the level is best placed to find.
  • Approach and responsibilities: techniques, environment and who does the work.

The five test levels in CTFL v4.0

CTFL v4.0 defines the five levels and the attributes above; the test basis and defects below are the typical ones, as listed in the earlier (2018) syllabus and seen in practice, and your project’s documents decide the real basis. ISTQB also calls component testing unit testing, and component integration testing unit integration testing.

  • Component testing: one function, class or module in isolation, often run with a unit test framework; to isolate it, the parts it depends on can be replaced by test doubles, simple stand-ins such as stubs and mocks. Basis: detailed design, code. Typical defects: wrong logic or calculations.
  • Component integration testing: the interfaces and interactions between components, shaped by the integration strategy: bottom-up (lowest components first), top-down (from the top, with stubs for missing parts) or big-bang (everything at once). Basis: software design, API specifications. Typical defects: interface mismatches, missing or wrongly encoded data, wrong assumptions about the units of data passed between components.
  • System testing: the behaviour of the whole system, including end-to-end tasks and non-functional characteristics, in a representative test environment. Basis: requirements, user stories, use cases. Typical defects: behaviour that contradicts the requirements, tasks that cannot be completed, slow responses.
  • System integration testing: the interfaces with external systems and services, such as a payment gateway or an SMS provider, in an environment close to production. Basis: interface agreements, external API documentation. Typical defects: inconsistent messages, unhandled timeouts, wrong assumptions about exchanged data.
  • Acceptance testing: validation that the system meets the users’ business needs and is ready for deployment. Main forms: user acceptance testing (UAT), operational acceptance testing, contractual and regulatory acceptance testing, alpha testing and beta testing. Basis: business processes, acceptance criteria, contracts, regulations. Typical defects: workflows that do not fit the business, wrong business rules, unmet contractual or regulatory requirements.
The five ISTQB test levels, from one component tested in isolation up to acceptance by the intended users, each with its test object, test basis, typical defects and usual owner.

At the layer “Acceptance testing”: Widest scope: the system in its business settingAt the layer “Component testing”: Smallest scope: one component in isolation

  1. 1Acceptance testingIntended users, product owner, operations staffObject: the system against the users’ business needs. Basis: business processes, acceptance criteria, contracts, regulations

    Finds: workflows that do not fit the business, wrong business rules, unmet contract or regulation terms

  2. 2System integration testingTesters, with owners of the other systemsObject: interfaces with external systems and services. Basis: interface agreements, external API documentation

    Finds: inconsistent messages, unhandled timeouts, wrong assumptions about exchanged data

  3. 3System testingTesters, often an independent teamObject: the whole system in a representative test environment. Basis: requirements, user stories, use cases

    Finds: behaviour that contradicts the requirements, tasks that cannot be completed, slow responses

  4. 4Component integration testingUsually developersObject: interfaces and interactions between components. Basis: software design, API specifications

    Finds: interface mismatches, missing or wrongly encoded data, wrong units of measure

  5. 5Component testingUsually developersObject: one function, class or module in isolation. Basis: detailed design, code

    Finds: wrong logic or calculations

Owners are typical, not fixed rules. In iterative development the levels overlap in time, and the test plan states which levels a project uses.

Try it: API Contract Validator Try it: Mock API Response Generator

Who usually performs each level

These are typical responsibilities, not fixed rules; in agile teams testers and developers often share the work. What should not blur is ownership: every level in the test plan needs a named owner, and a tester still reviews the levels they do not own, for example by asking what the integration tests replace with stubs.

  • Component and component integration testing: usually developers, automated in their own environment and in continuous integration (CI).
  • System testing: testers, often an independent test team or the testers in the delivery team.
  • System integration testing: generally testers, together with the owners of the other systems.
  • Acceptance testing: ideally the intended users — business users, customers, the product owner, or operations staff for operational acceptance. Testers often prepare and record; the business decides.

Try it: Acceptance Criteria Generator

Worked example: promo codes across five levels

An online store in Saudi Arabia adds promo codes. The cart service calls a promotions service, and payment goes through an external gateway. Each bullet takes one level: a test at that level and the defect it finds first. Note that the halalas-versus-riyals defect is invisible to the component tests on either side, and the acceptance gap is invisible to every test derived from the story.

  • Component: 10% off 199.99 SAR should be 20.00, but the function cuts 19.999 to 19.99 instead of rounding it.
  • Component integration: the cart sends 19999 (halalas) while the promotions service expects 199.99 (riyals); each passed its own tests.
  • System: in the full checkout, VAT is calculated before the discount, so the customer pays too much.
  • System integration: through the gateway’s sandbox, the gateway receives the original amount, and a timeout leaves the order "pending" with no message.
  • Acceptance: the marketing team finds that a customer can reuse a code again and again. The story never said "once per customer", so every level passed — a validation finding, as in the lesson on verification and validation.
Story PROMO-12: Promo codes at checkout
As a customer, I want to enter a promo code so that I pay less.

AC1  A valid code gives 10% off the items subtotal.
AC2  VAT (15%) is calculated on the subtotal after the discount.
AC3  The delivery fee is not discounted.
AC4  Amounts are rounded to 2 decimal places (nearest halala).
AC5  An expired or unknown code shows "This code is not valid".

Try it: Requirements → Test Cases Try it: User Story → Test Scenarios

Common mistakes

  • Calling performance or regression testing a test level: performance testing is a test type, regression testing checks for side effects of a change, and both can be done at any level.
  • Testing everything at system level through the user interface, where feedback is slow and failures are hard to locate.
  • Assuming the system works because every component passed: stubs hide interface defects.
  • Testing external services only against mocks and skipping system integration testing.
  • Treating acceptance as a repeat of system testing by the same testers, instead of validation with the intended users.
  • Writing system tests from the code or the developer’s explanation instead of from the requirements.

The QA perspective

Levels first appear in the test strategy and the test plan, which state for each level the objectives, test basis, environment, entry and exit criteria and owner. When you join a project, ask which levels exist, who owns each one, where each runs and what each replaces with stubs; the answers show you the gaps.

Day to day, record in each bug report the level and environment where the failure appeared, and in defect triage, where new defects are reviewed and prioritised, ask "which level should have caught this?" Repeated interface defects in system testing mean component integration testing is thin, and a business-rule defect found through the user interface is a reason to suggest a component test.

Practice exercise

Assign findings to the right test level

Your task

A clinic app books appointments. The booking service uses an internal scheduling component, confirmations go through an external SMS gateway, and reception staff use the app all day.

For each finding below, name the lowest test level that should catch it, the test basis that would reveal it, and who usually performs that level.

Material
Clinic booking: findings

1. toMinutes("09:30") returns 560 instead of 570.
2. The booking service sends the date 2026-03-04; the scheduling component
   reads it as 3 April instead of 4 March.
3. Two patients booking the same slot from two phones at the same moment
   both receive a confirmation. (R3: one patient per slot.)
4. The SMS gateway rejects Arabic messages longer than 70 characters;
   the app shows "Booked" and no SMS is ever sent.
5. Reception needs a waiting list for cancelled slots; no requirement
   mentions one.
6. With 200 users booking at once, confirmation takes 9 seconds.
   (R7: a booking is confirmed within 3 seconds with 200 concurrent users.)
Steps
  1. Decide what was under test: one component, an interface between components, the whole system, an external service, or the business need.
  2. Choose the lowest level that can see the defect.
  3. Name the test basis and who usually performs that level.
Show the model answer
Model answer

1 — Component testing; basis: the function’s design (09:30 is 570 minutes); developers.

2 — Component integration testing; basis: the interface specification, which should fix one date format such as ISO 8601 YYYY-MM-DD; usually developers.

3 — System testing; basis: R3; testers, using two devices at once. Once the cause is known, developers can add a component integration test that books the same slot twice in parallel.

4 — System integration testing; basis: the SMS provider’s API documentation, including its error responses; testers with the integration owner. Also report that the app showed success when sending failed.

5 — Acceptance testing (UAT); basis: the clinic’s business process; reception staff and the clinic manager. It is a requirements gap for the product owner, not a failure against R1–R7.

6 — System testing, non-functional (performance); basis: R7; testers or performance specialists in a production-like environment.

Frequently asked questions

Is unit testing the same as component testing?

Yes. ISTQB uses component testing as the main term, and its glossary lists unit testing and module testing as synonyms. What counts as a "unit" — a function, a class, a module — varies by team and programming language, so agree on it in the test strategy.

Is end-to-end testing a test level?

Not in the CTFL v4.0 list of five. The syllabus places end-to-end tasks inside system testing, and teams often say "end-to-end" for journeys that also cross external systems, which touches system integration testing. The end-to-end testing lesson later in this module covers it.

Does every project need all five levels, in this order?

No. The levels used depend on the product and its risks: a standalone app with no external services has little to test at system integration level, while a product built from bought-in components may focus on integration and acceptance. In iterative development the levels overlap, and one story can pass through several of them in a single sprint. The test plan states which levels apply.

What do SIT and UAT mean?

SIT is the common abbreviation for system integration testing; UAT means user acceptance testing, one form of acceptance testing. Some organisations use "SIT" for any testing in a shared integration environment, so check what your team means before you plan against it.

References

  • ISTQB Certified Tester Foundation Level (CTFL) v4.0ISTQB · 2023The foundation syllabus of software testing: test levels and types, test design techniques, test management and tools.
  • ISTQB GlossaryISTQBThe standard definitions of testing terms — test case, regression testing, severity, priority, boundary value analysis and the rest.

Practise with Mutqan tools

Convert a list of numbered requirements into traceable test cases with a requirement-to-test matrix.

Test Design

Validate that an API request/response pair conforms to its OpenAPI contract: path, method, parameters, body and response schema.

Validation

Generate complete mock API responses (status, headers, JSON body) for success, list, detail, error and empty cases.

Mocking

Go deeper

Your progress on this topic

Part of the QA Roadmap