QA · Read 8 min

The four test levels and why their order matters

Unit, integration, system and acceptance are not the same test in different sizes: each level answers a different risk. Skipping one does not save time, it defers it.

The four test levels are unit, integration, system and acceptance, and each one answers a different question: does the part work? do the parts fit together? does the whole product work? is this what the business asked for? They are not the same test in four sizes. They are four questions you cannot answer in the same place, and that is why the order in which you ask them changes how much each error costs you.

The ISTQB, the body of knowledge most widely used to certify testers, defines these levels as a deliberate sequence, not as a menu of options [1]. Each level assumes the previous one already gave its answer. When you skip one, you do not remove its question: you push it upward, where answering it costs more and arrives later.

01 · the four questionsWhat each level examines and why they differ

A test level is defined by the object it examines and by who does the examining. Moving up a level is not doing "the same thing but bigger": it is changing the question, the environment and, often, the person who judges the result.

Unit. It examines the smallest piece that makes sense to test in isolation, almost always a single function or method. The developer writes it, it runs in milliseconds and it touches neither the database nor the network. Its question is simple: given this input, does the function return the correct output? We cover this level in depth in the article on unit testing; here it is enough to remember that it is the foundation and the cheapest of them all.

Integration. It examines what happens when two or more units work together. Each part can be flawless on its own and the whole still fails: a date format one side sends and the other does not understand, an error swallowed in silence, a contract wrongly assumed between modules. Unit testing never sees that error because, by definition, it looks at a single part. The detail of when this level pays off is in the article on integration testing.

System. It examines the complete product, already assembled, running as a single thing in an environment close to the real one. Here you test the whole end to end flow and also what no individual part guarantees: that the system is fast, secure and holds up under load. It is the first level where the object under test is "the software", not "a piece of software".

Acceptance. It examines whether the system serves what the business or the user asked for. It changes the question at its root: it is no longer "is it well built?" but "did we build the right thing?". The customer, the product owner or the end user judges it, not the technical team. A system can pass the three previous levels without a single defect and still fail here, because it solved the wrong problem.

The first three levels ask whether the software is well built. The fourth asks whether it was the right software. It is not the same question.

Figure 1 · the four questions, from the part to the purpose
Unit does the part work? · the developer writes it Integration do the parts fit together? · contracts and formats System does the whole product work? · flow, load, security Acceptance is it what the business asked for? · the customer judges it
From bottom to top, the object under test grows: from a function to the whole product, and from a technical question to a business one. Who judges the result also changes with the level.

02 · why the order mattersEvery error has a level where catching it costs less

There is a rule that has echoed through software engineering since the seventies: the cost of fixing a defect grows as it moves through the phases of development. An error caught by a unit test is corrected in minutes, often before it even leaves the editor. The same error caught in acceptance, or worse, in production, can cost orders of magnitude more, because you have to trace it through all the assembled parts and sometimes redo decisions already made.

The order of the levels is not bureaucracy: it is a strategy for placing each net as low as possible. Unit testing catches logic errors inside a function. Integration catches misunderstandings between modules. System testing catches failures that only appear once everything is assembled. Acceptance catches the costliest error of all: having built the wrong thing. Each net catches what the one below cannot see, and lets through as little as possible to the next.

That is why skipping a level does not save time. If you skip integration, contract errors between modules do not vanish: they resurface in system testing, mixed with twenty other problems and far harder to isolate. The work you did not do below you pay for above, with interest.

Levels are not the same as types

A common mistake is to confuse test levels with test types. The level says which object you test: a part, an assembly, the system, the purpose. The type says which characteristic you examine: functional, performance, security, usability. They are distinct axes that cross each other. You can run a performance test at the system level, or a functional test at the unit level. ISO/IEC 25010, the standard that defines software quality characteristics, lives on that second axis: it describes what to measure, not at which level to measure it [2].

The work you do not do at the level below does not disappear. It climbs a level and becomes more expensive to find.

03 · how they fit into your suiteFrom the model to practice without turning dogmatic

The four levels describe questions that must be answered, but they do not dictate how many tests of each you should have. That proportion is governed by another figure: the test pyramid, which recommends many cheap and fast tests at the bottom and few expensive and slow ones at the top. If the levels are the questions, the pyramid is the budget with which you answer them. We treat it separately in the article on the test pyramid.

In practice, the levels do not always run in strict sequence, nor does the same team execute them. In a modern flow, unit tests and many integration tests run automatically on every code change; system tests, in a preproduction environment; and acceptance tests, with the business involved before giving the green light. What matters is not the ceremony, but that none of the four questions goes unanswered before the user answers it for you.

Figure 2 · where catching each error costs less
Unit Integration System Acceptance Production cost
The same defect costs little if a unit test catches it and a lot if it reaches production. Each level is a chance to catch it before it turns expensive. The heights illustrate the trend, not exact figures.

Seen this way, the four levels stop looking like a bureaucratic hierarchy and become what they are: four filters ordered from small to large and from technical to human. Unit for the part, integration for the fit, system for the whole, acceptance for the purpose. Skipping one does not erase its question. It only decides who will answer it, when and for how much money. And almost always, the one who ends up answering it is the user, at the worst possible moment.

Sources

  1. International Software Testing Qualifications Board (ISTQB). Certified Tester Foundation Level (CTFL) Syllabus, v4.0 (2023). Section on test levels: component, integration, system and acceptance. istqb.org.
  2. ISO/IEC 25010:2011. Systems and software engineering. Systems and software Quality Requirements and Evaluation (SQuaRE). System and software quality models. International Organization for Standardization. Defines the quality characteristics, an axis distinct from that of the test levels.
  3. Spillner, A., Linz, T. & Schaefer, H. (2014). Software Testing Foundations: A Study Guide for the Certified Tester Exam, 4th ed. Rocky Nook. Chapter on test levels and the V model.

Learn more about AI

See all Learn AI