Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Regression testing asks whether a change harmed behavior that was supposed to keep working. Integration testing asks whether components or systems interact correctly across a boundary. They are different dimensions, not competing test levels. A database integration test can also be part of a regression suite when it is rerun after a change to protect an established interaction.

The difference in one view

Dimension Regression testing Integration testing
Primary question Did a change create unintended negative effects? Do connected components or systems exchange data and collaborate correctly?
Intent Change-oriented Interaction-oriented
Target Previously working behavior, especially behavior outside the intended change Interfaces, data flows, protocols and dependencies between components or systems
When it starts After code, configuration, dependency, infrastructure or other environment changes When two or more components or systems must work together
Test level Not a separate component boundary; it can be applied at several levels A defined test level focused on interactions
Typical result Evidence that important existing behavior still works Evidence that a particular boundary and collaboration work

ISTQB defines integration testing as “A test level that focuses on interactions between components or systems.” Its official CTFL Sample Exam B explanation states: “Regression testing ensures that changes do not have negative effects on unchanged software.” Those definitions describe different axes. Integration tells you what relationship you are exercising; regression tells you why you are rerunning checks after a change.

What is regression testing?

Regression testing is the deliberate re-execution of tests that protect existing behavior after something changes. The changed item may be source code, a library, a database schema, deployment configuration, an operating-system image or another part of the operational environment. The purpose is to find side effects in behavior that was not intended to change.

What regression testing targets

  • Features adjacent to the modified code
  • Public APIs and contracts consumed by other modules
  • Critical user journeys and business rules
  • Data persistence, migrations and backward compatibility
  • Security, authorization, performance or reliability checks affected by the change
  • Environment-sensitive behavior after infrastructure or configuration updates

Regression is therefore not synonymous with “run every test.” Teams choose a scope based on impact, risk and available time. A focused set may run on every commit, a wider suite on a pull request, and the broadest set at a release gate. ISTQB material discusses continuous regression testing in continuous-integration contexts, but it does not prescribe one universal suite size or runtime.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall

What is integration testing?

Integration testing checks behavior that crosses a component or system boundary. Examples include a service writing to a real database, an order module publishing an event consumed by billing, or an application calling an external payment provider in a controlled test environment.

Component integration testing

This level concentrates on interfaces and interactions among integrated components inside one product. Tests can expose mismatched data types, serialization errors, transaction problems, incorrect sequencing and assumptions about failure handling.

System integration testing

System integration testing focuses on interactions between separate systems. The boundary may be an HTTP API, message broker, file exchange, identity provider or another platform. These tests are useful for contract mismatches, authentication errors, timeouts, retries and incompatible versions.

What integration testing does not prove

A passing integration test proves only what that test exercised under its conditions. It does not demonstrate that unrelated screens, reports, permissions or workflows remain correct after a change. Nor does a unit test or an integration check automatically cover every regression risk.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How the two concepts overlap

Consider a checkout service that changes its tax-calculation code. An integration test that sends an order through the checkout service and verifies the tax service response is interaction-oriented. If the team reruns that established test after the code change to ensure the previously working interaction still behaves correctly, the same test also serves a regression purpose.

This overlap is an explanatory combination of the ISTQB definitions, not a new formal test level. “Integration” identifies the boundary under test. “Regression” identifies the change-related reason for executing the check.

When should you run regression tests?

Run regression checks whenever a change could affect behavior that users, downstream systems or operators depend on.

Common triggers

  • Application code, refactoring or feature work
  • Dependency, runtime or compiler upgrades
  • Database schema changes and data migrations
  • Configuration, infrastructure, container or operating-system changes
  • Security-policy, authentication or authorization changes
  • Bug fixes that touch shared code
  • Changes to external services, SDKs or API versions

A practical selection method

  1. Map the change. Identify modified modules, data stores, interfaces, deployment settings and consumers.
  2. List affected behavior. Include direct functionality and neighboring behavior that shares code, state or contracts.
  3. Exercise changed boundaries. Run focused integration checks for each affected interface or dependency.
  4. Protect important unchanged behavior. Select regression tests for critical workflows and high-risk neighboring areas.
  5. Expand at a release gate. Run the broader suite when the risk and release policy justify its cost.
  6. Investigate failures by evidence. Separate a genuine product regression from a broken environment, flaky dependency or test-data problem.

This sequence is practical risk guidance, not a mandatory ISTQB order. The right scope depends on architecture, impact analysis and the consequences of failure.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How integration tests fit into continuous integration

In a continuous-integration pipeline, a server builds the new content and then invokes testing tools. The ISTQB CT-MBT Foundation Level syllabus explicitly discusses integrating testing tools into CI and continuous regression testing. A useful pipeline separates feedback by cost and confidence:

  1. Run fast unit and static checks for immediate feedback.
  2. Run focused integration tests for boundaries touched by the change.
  3. Run selected regression checks for critical unchanged behavior.
  4. Run broader integration and regression suites on scheduled builds or release candidates.

Do not infer a defect-reduction percentage or guaranteed runtime improvement from this arrangement; the cited ISTQB material provides no such comparative statistic.

Regression testing versus confirmation testing (retesting)

Confirmation testing checks that a previously reported defect no longer occurs after its fix. It answers: Has the original failure been corrected? Regression testing answers: Did the change cause harm elsewhere?

Test activity Question answered Example
Confirmation testing Does the reported bug still reproduce? Submit the malformed date that previously crashed the form and verify the corrected validation message.
Regression testing Did the fix or surrounding change break other behavior? Run account creation, login, exports and unrelated date workflows that share the validation library.

A fix can pass confirmation while introducing a regression. In that case both activities are necessary, although they may reuse some test data or automation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Examples that show the distinction

Changing an API response

An integration test verifies that the order service and warehouse service agree on the revised response schema. Regression tests verify that existing mobile clients, invoices and reporting still work if they were not intended to change.

Replacing a database driver

Integration tests exercise connection, transactions, queries and error handling with the new driver. Regression tests cover established workflows whose behavior must remain stable, including authentication, search and scheduled jobs.

Updating deployment configuration

Integration checks confirm that services can discover one another and communicate in the new environment. Regression checks protect production-critical journeys that may fail because of changed secrets, permissions, time zones or resource limits.

Designing useful suites

Make integration checks realistic but controlled

Use representative contracts and data, isolate or provision dependencies predictably, and assert both successful exchanges and important failure paths. Record which external services are virtualized and which are genuinely exercised; otherwise a green test can hide an untested boundary.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Make regression selection risk-based

Prioritize revenue, safety, security, compliance and high-usage behavior. Include tests for shared libraries and cross-cutting concerns, not only files named in the change. Keep a traceable reason for each tier so the suite can evolve instead of becoming an unexplained collection of historical tests.

Control flakiness and data drift

A flaky test can conceal a real regression. Stabilize clocks, network dependencies, test data and cleanup; capture logs and request identifiers; and quarantine a test only with ownership and a plan to restore it. A test that fails because its environment is unavailable is evidence about the environment, not automatically about the product.

Visual evidence and browser workflows

Some regressions are visual: a CSS change can alter a checkout page while API and integration assertions remain green. Browser-based screenshot checks can complement functional regression tests by capturing stable pages or selected elements at known viewport and device settings. Treat image comparisons as a separate signal: normalize dynamic content, choose an intentional pixel-difference threshold, and investigate font, animation, consent-banner and timing effects before accepting a baseline.

Or skip the browser setup

ScreenshotNeo provides a website screenshot API and MCP server. A single request can capture a clean PNG, JPEG, WebP or PDF; before capture it accepts consent banners and removes more than 60 known consent platforms, newsletter popups and chat widgets. Bot checks, blank pages, timeouts, failed loads and cache hits are not billed, and response headers identify the page verdict and billing status.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Using the documented API endpoint:

Read the ScreenshotNeo API documentation.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Python:

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)

Node.js:

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

For automated regression captures, ScreenshotNeo also supports full-page and element captures, device presets, custom viewports, dark mode, retina scale, waits, custom CSS and JavaScript, selector hiding, request blocking, headers, cookies, user agents, authorization, time zone and geolocation. You can choose image format and size, cache with a selected TTL, submit asynchronous jobs with signed webhooks, capture up to 100 URLs per call and use an MCP server with take_screenshot, get_page_info and capture_pdf for AI-agent workflows. Disable any cleaning step when your test intentionally needs to verify that banner or widget.

The Free plan includes 1,000 screenshots each month with no card. Paid plans start at $5 for 3,000 shots; every feature is available on every plan, and yearly billing provides two months free. Create a free ScreenshotNeo account to begin.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Common failure modes and fixes

“The integration test passes, but users report a regression.”

The test may cover only one contract or data shape. Add regression checks for affected workflows, alternate permissions, error paths and clients, then review the impact map.

“The full regression suite is too slow.”

Keep a fast, risk-based commit tier; run changed-boundary integration checks and critical regression tests first; schedule broader suites at suitable pipeline or release stages. Do not remove high-risk coverage solely to meet an arbitrary duration.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

“A confirmation test passes, but another feature fails.”

The original defect is fixed, but the fix caused a side effect. Retain the confirmation test and add or repair regression coverage for the affected feature.

“The integration test fails only in CI.”

Compare dependency versions, environment variables, clocks, network access, service readiness and test data. Capture logs and identifiers before changing assertions; the cause may be infrastructure rather than application behavior.

“Visual screenshots differ on every run.”

Wait for a deterministic readiness condition, disable animations, mask dynamic selectors, standardize fonts and viewport settings, and avoid treating consent or chat UI as application content unless that is what you intend to test.

Key takeaways

  • Regression testing is about unintended effects of change on behavior that should remain working.
  • Integration testing is about interactions across component or system boundaries.
  • The same integration test can provide regression coverage when rerun after a change.
  • Confirmation testing verifies a specific fix; it does not replace regression testing.
  • Use impact and risk to select focused checks, then expand scope when release risk warrants it.

Frequently Asked Questions

Can a test be both integration and regression testing?

Yes. Integration describes the boundary being exercised; regression describes rerunning the check after a change to detect unintended effects.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Is regression testing always end-to-end testing?

No. Regression purpose can be applied to unit, component, integration, system or end-to-end checks, depending on the behavior at risk.

Should every regression test use real external services?

No. Use controlled doubles where appropriate, and reserve real-service checks for boundaries whose behavior cannot be represented adequately otherwise.

Quick Recap

SaleBestseller No. 1
SaleBestseller No. 2
Bestseller No. 3

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.