Next-Gen App & Browser Testing Cloud
Trusted by 2 Mn+ QAs & Devs to accelerate their release cycles

Integration testing in manual testing is the practice of combining two or more unit-tested modules and verifying, by hand, that they work together correctly. Instead of writing automated scripts, a tester drives real scenarios through the user interface or APIs and confirms that data passes accurately from one module to the next, that interfaces behave as agreed, and that errors are handled cleanly across module boundaries. It sits after unit testing and before system testing, and its whole purpose is to expose defects that only appear when independent pieces of an application start talking to each other.
A module can pass every unit test and still break the moment it is wired to its neighbours. Unit testing proves that a piece of code is internally correct; it says nothing about whether the data one module sends is the data another module expects. Integration testing fills exactly that gap. It is the bridge between unit testing, which looks inward at a single component, and system testing, which looks at the application as a whole.
Doing this manually gives a tester direct, observational control. You can follow a value as it leaves one screen, lands in a backend service, and reappears on another screen, and you can stop the instant something looks wrong. That hands-on visibility is why integration defects, mismatched data formats, broken API contracts, missing error messages, are so often caught first during manual integration testing, well before they reach end users.
Integration testing is about the seams between modules, not the inside of any one module. When testing manually, you focus your attention on the points where components hand work to one another.
The order in which you combine modules is your integration strategy. The same strategies apply whether you test manually or with automation, the difference is simply that a tester executes the scenarios and inspects the results by hand.
| Approach | How It Works | Stubs / Drivers |
|---|---|---|
| Big-bang | All modules combined at once and tested together | Neither needed |
| Top-down | High-level modules first, descending the hierarchy | Stubs for missing lower modules |
| Bottom-up | Low-level modules first, ascending toward the UI | Drivers for missing higher modules |
| Sandwich (hybrid) | Top-down and bottom-up run together, meeting in the middle | Both stubs and drivers |
In incremental integration you rarely have every module finished at the same time. Stubs and drivers are temporary, throwaway pieces that stand in for the parts that are not ready yet, so testing can begin sooner.
Neither is part of the shipped product. They exist only to satisfy a missing connection during testing and are removed once the real module is integrated.
Consider an e-commerce checkout built from three modules: a Cart module, a Payment module, and an Order module. Each has passed its own unit tests. A manual integration test confirms they cooperate end to end.
Every step exercises the data passing and error handling between modules, which is exactly what unit testing cannot reach and what integration testing exists to catch.
Manual integration testing is flexible and needs no scripting, which makes it ideal for new or frequently changing interfaces, exploratory checks, and UI-driven flows that are awkward to automate. Its weaknesses are speed and repeatability: re-running a large manual suite every build is slow and error-prone. Automated integration testing reverses that trade-off, it is fast, consistent, and slots into a CI/CD pipeline, which is what you want for stable, high-frequency regression paths.
Manual integration testing makes the most sense early, when interfaces are still settling, when a flow runs only occasionally, or when the cost of building and maintaining automation outweighs the benefit. As the integration points stabilize, teams typically automate the repetitive paths and reserve manual effort for new and exploratory scenarios. When those automated checks need to run across many browsers, devices, and operating systems, a cloud testing platform such as lets you scale the same integration scenarios across real environments and wire them into CI/CD without managing local infrastructure.
It is when a tester manually combines two or more unit-tested modules and checks, by hand, that they work together correctly. The tester drives real scenarios through the UI or APIs and verifies that data passes accurately between modules, interfaces behave as expected, and errors are handled across module boundaries, all without an automation framework.
Unit testing checks a single module in isolation to confirm its internal logic is correct. Integration testing checks the connections between modules, verifying that data, calls, and responses flow correctly when those modules are combined. A module can pass unit testing yet still fail integration testing if its interface does not match what another module expects.
A stub is a dummy lower-level module that returns canned responses so a higher module can be tested before the real one is ready; stubs are used in top-down integration. A driver is a dummy higher-level module that calls a lower module and feeds it inputs so the lower module can be tested before its real caller exists; drivers are used in bottom-up integration.
Use big-bang for small systems where every module is ready at once. Use top-down when the high-level control flow is built first and you want to validate the main workflow early. Use bottom-up when foundational modules such as data access are ready first. Use sandwich (hybrid) on large systems to combine top-down and bottom-up so middle layers are exercised from both directions.
Manual integration testing fits early or one-off integrations, exploratory checks, UI-driven flows that are hard to script, and interfaces that are still changing frequently. In these cases the flexibility of testing by hand outweighs the cost of building and maintaining automation.
Both have a place. Manual integration testing is flexible and needs no scripting, which suits new or volatile interfaces and exploratory work. Automated integration testing is fast, repeatable, and fits CI/CD, which suits stable, high-frequency, and large regression suites. Most teams start manual and automate the stable, repetitive paths over time.
KaneAI - Testing Assistant
World’s first AI-Native E2E testing agent.

TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance