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.
| # | Preview | Product | Price | |
|---|---|---|---|---|
| 1 |
|
Software Testing | $30.44 | Buy on Amazon |
| 2 |
|
Introduction to Software Testing | $61.23 | Buy on Amazon |
| 3 |
|
Testing Computer Software | $21.32 | Buy on Amazon |
| 4 |
|
A Practitioner's Guide to Software Test Design | $24.00 | Buy on Amazon |
| 5 |
|
Clean Code: A Handbook of Agile Software Craftsmanship | $22.88 | Buy on Amazon |
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.
Recommended Free Tools
#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.
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.
Rank #2
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
- Map the change. Identify modified modules, data stores, interfaces, deployment settings and consumers.
- List affected behavior. Include direct functionality and neighboring behavior that shares code, state or contracts.
- Exercise changed boundaries. Run focused integration checks for each affected interface or dependency.
- Protect important unchanged behavior. Select regression tests for critical workflows and high-risk neighboring areas.
- Expand at a release gate. Run the broader suite when the risk and release policy justify its cost.
- 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.
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:
- Run fast unit and static checks for immediate feedback.
- Run focused integration tests for boundaries touched by the change.
- Run selected regression checks for critical unchanged behavior.
- 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.
Rank #3
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.
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.
Rank #4
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.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Make 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.
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.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.
Best Value
“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.
“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.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →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
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.

