Smoke testing is a software testing technique that checks whether an application's critical functions work after a new build or deployment. Also called Build Verification Testing (BVT), it helps teams determine whether the build is stable enough for further testing.
Smoke testing checks whether the most critical functions of a software application work after a new build or deployment. It helps QA teams identify unstable builds early, before spending time on detailed functional or regression testing.
A well-designed smoke test suite provides quick feedback on application readiness and helps teams decide whether further testing can begin.
What Is Smoke Testing?
Smoke testing is a software testing technique used to verify that an application’s essential features work as expected before more detailed testing begins. It is commonly called Build Verification Testing (BVT).
The approach is often described as broad but shallow. Rather than testing every possible scenario, smoke testing covers a small set of critical functions across important areas of the application.
For example, when an e-commerce website receives a new build, a QA engineer might check whether the website loads, users can log in, products can be searched, and the shopping cart works.
If the login functionality fails, there may be little value in proceeding with tests that require an authenticated user.
Smoke testing helps teams:
- Identify critical defects early in the testing cycle.
- Avoid spending time testing unstable builds.
- Receive faster feedback after code changes.
- Reduce the risk of progressing with a broken release.
However, passing smoke tests does not guarantee that an application is free from defects. It only confirms that the selected critical checks have passed. Other software testing techniques are still needed to evaluate functionality, integrations, performance, and security in greater depth.
Smoke vs. Sanity vs. Regression Testing
Smoke, sanity, and regression testing serve different purposes, although teams may use them together during software development.
Smoke testing checks basic build stability, sanity testing verifies specific changes, and regression testing examines whether recent changes have negatively affected existing functionality.
| Criteria | Smoke Testing | Sanity Testing | Regression Testing |
| Purpose | Verify critical functionality | Validate targeted changes | Detect defects introduced by changes |
| Scope | Broad but shallow | Narrow and focused | Broader, with deeper coverage |
| When performed | After a new build or deployment | After a specific fix or change | After changes that may affect existing behavior |
| Test coverage | Essential workflows | Affected functionality | Existing functionality and related dependencies |
| Example | Check login and checkout availability | Verify a fixed password-reset issue | Check that authentication changes have not broken other features |
How do they work together?
Consider an application receiving an authentication update. Smoke testing first checks whether users can still access the application.
Sanity testing may verify the specific authentication fix, while regression testing checks related workflows, such as account recovery, session handling, and role-based access.
These activities can overlap, and their exact sequence depends on the team’s testing strategy.
When Should You Run Smoke Tests?
Smoke tests should run whenever a change could affect the application’s basic functionality or readiness for further testing.
Common situations include:
- After a new software build: Verify that essential functionality works before starting detailed testing.
- After code integration: Check that newly merged code has not disrupted critical workflows.
- After staging deployment: Confirm that the deployed application works in its target environment.
- After major feature updates: Validate essential workflows that could be affected by new functionality.
- After infrastructure changes: Check application availability and critical integrations following configuration, database, or hosting changes.
- After production deployment: Perform carefully controlled checks to identify critical problems before expanding a rollout.
For teams using continuous integration and continuous delivery (CI/CD), automated smoke tests can run as part of the deployment pipeline.
Not every minor code change requires a complete smoke suite. The decision should depend on the change’s risk, the application architecture, and the team’s release process.
Manual, Automated, and Hybrid Smoke Testing
Smoke testing can be performed manually, automatically, or through a combination of both approaches.
Manual smoke testing involves QA engineers executing selected test cases without automation scripts. It is useful for applications with frequently changing interfaces, early-stage products, and scenarios requiring human judgment. However, repeated manual execution can be time-consuming.
Automated smoke testing uses testing tools to execute predefined checks and compare actual results with expected outcomes. It is suitable for stable, repetitive workflows such as authentication, navigation, and API availability. Automated smoke tests are especially useful in CI/CD environments where builds are released frequently.
Hybrid smoke testing combines automated checks with targeted manual verification. For example, a team might automate login and API checks while manually reviewing a newly introduced interface.
The right approach depends on application complexity, release frequency, available resources, and the reliability of the selected test cases.
How to Perform Smoke Testing Step by Step
Smoke testing follows a straightforward process that begins with selecting critical features and ends with a decision about build readiness.
Step 1: Identify Critical Functionalities
Select the workflows that must work for users to access the application’s primary functions.
For an e-commerce application, these might include login, product search, shopping cart, and checkout.
Prioritize features based on business impact, user dependency, and the risk of failure.
Step 2: Prepare the Test Environment
Confirm that the application build is deployed correctly and the required services are available.
Prepare test accounts, sample data, API credentials, and any dependencies needed to execute the tests.
Step 3: Create Smoke Test Cases
Write short test cases with clear expected results.
Each case should validate a meaningful function without exploring every possible input or edge condition.
Step 4: Execute the Smoke Tests
Run the selected tests manually or through an automation framework.
Record failed assertions, unavailable services, blocked scenarios, and other issues that prevent successful execution.
Step 5: Evaluate Results and Report Build Status
Compare actual results with expected outcomes.
If all required critical checks pass, the build can proceed to the next testing stage. If a critical check fails, investigate the issue and determine whether further testing should be blocked.
Smoke testing workflow:
New Build → Environment Check → Execute Smoke Tests → Evaluate Results → Proceed or Reject Build
A failed smoke test should produce actionable information, including the affected functionality, failure evidence, and steps needed to investigate the problem.
Smoke Testing Examples
The specific smoke tests depend on the application and its most important user journeys.
Here are three practical examples covering web applications, SaaS products, and APIs.
Smoke Testing Example for an E-commerce Website
An e-commerce application depends on several connected functions to allow customers to purchase products.
A basic smoke test suite might verify that:
- The homepage loads successfully.
- Customers can log in using a valid account.
- Product search returns relevant results.
- Products can be added to the shopping cart.
- The checkout workflow can be accessed and completed using safe test transactions.
Suppose a new deployment introduces a defect that prevents customers from adding products to their carts.
The smoke suite should identify this critical failure before more detailed testing continues.
Smoke Testing Example for a SaaS Application
SaaS applications often rely on authentication, dashboards, account permissions, and integrations.
For a project management SaaS product, smoke tests might check whether:
- Users can sign in successfully.
- The main dashboard loads.
- Users can create a project.
- Existing projects can be opened.
- A critical API integration responds correctly.
If users can authenticate but cannot access their projects, the build may not be ready for release.
Smoke Testing Example for an API
API smoke testing verifies that essential endpoints are available and behave correctly for a small set of valid requests.
For example, an order management API might require these checks:
- The health endpoint responds successfully.
- Authentication works with valid credentials.
- A valid request returns the expected HTTP status.
- The response contains required fields.
- A critical order retrieval operation returns the expected test record.
An HTTP 200 response alone does not necessarily indicate that an API is functioning correctly.
A useful smoke test should also validate critical response data and relevant business behavior.
How to Write Smoke Test Cases
Smoke test cases should be simple, repeatable, and focused on essential application functionality.
Each test case should have a defined objective, the required input or action, and a clear expected result.
The following example shows a basic smoke test suite for an e-commerce application.
| Test ID | Test Scenario | Test Steps | Expected Result |
| ST-01 | Verify homepage | Open the application URL | Homepage loads successfully |
| ST-02 | Verify user login | Enter valid credentials and submit | User reaches the dashboard |
| ST-03 | Verify product search | Search for a known product | Relevant product appears |
| ST-04 | Verify shopping cart | Add an available product | Product appears in the cart |
| ST-05 | Verify checkout | Complete checkout using a test payment method | Test order is confirmed |
All five cases are examples of planned checks, not actual execution results. A real test report should also include status, execution date, environment, and defect references when applicable.
Smoke testing checklist
- Identify essential business workflows.
- Confirm the build and environment are ready.
- Prepare valid test accounts and data.
- Execute all mandatory smoke test cases.
- Records failed, passed, and blocked results.
- Report critical defects with supporting evidence.
- Confirm whether the build can proceed.
Keep the checklist focused. A smoke suite that attempts to validate every feature and edge case will gradually become a regression suite.
Smoke Testing Tools
Several testing tools can support automated smoke testing. The appropriate choice depends on the technology stack, application type, and team’s existing automation infrastructure.
Playwright: An end-to-end testing framework for modern web applications. It supports browser automation, assertions, test tagging, reporting, and parallel execution.
Selenium: A browser automation framework commonly used for web application testing. It supports multiple programming languages and major browsers.
Cypress: A web testing framework that provides browser-based test execution, debugging, and assertions for supported application workflows.
Postman: An API development and testing platform that can execute request collections and validate responses. It is useful for smoke checks involving essential API endpoints.
Ranorex Studio: A commercial test automation tool supporting desktop, web, and mobile application testing, with visual test creation and reusable automation components.
These tools do not automatically determine which business workflows belong in a smoke suite. Test selection, expected results, and release acceptance criteria still need to be defined.
How to Automate Smoke Tests with Playwright
Playwright can automate critical browser checks and execute them whenever a new build is deployed.
For example, the following TypeScript test verifies that a webpage loads and displays its expected main heading.
import { test, expect } from '@playwright/test';
test('homepage smoke test', {
tag: '@smoke'
}, async ({ page }) => {
await page.goto('https://example.com/');
await expect(page).toHaveTitle('Example Domain');
await expect(
page.getByRole('heading', {
name: 'Example Domain'
})
).toBeVisible();
});
Save the test in a Playwright project as homepage.spec.ts.
The @smoke tag identifies the test as part of the smoke suite.
To execute only tests with this tag, run:
npx playwright test --grep "@smoke"
Playwright selects the tagged tests and executes their assertions. If an expected condition is not satisfied within the configured timeout, the test fails.
This example validates basic page availability and visible content. In a real application, teams should add checks for meaningful business workflows such as authentication or creating a record.
Use stable locators, clear assertions, and isolated test data to reduce unnecessary failures.
Smoke Testing in CI/CD and Production
Smoke testing can be integrated into CI/CD pipelines to validate application readiness after important build and deployment stages.
A typical pipeline may follow this sequence:
Build → Unit Tests → Deploy to Staging → Smoke Tests → Release Approval → Production Deployment
If a critical smoke test fails, the pipeline can stop before the application reaches the next deployment stage.
For example, a GitHub Actions workflow can configure a deployment job to depend on the successful completion of a smoke testing job.
This helps teams identify critical problems before promoting a build.
Production smoke testing
Smoke testing may also be performed after deployment to verify that essential functionality works in the production environment.
However, production checks require additional precautions.
Use dedicated test accounts, avoid modifying real customer data, and ensure test transactions cannot trigger unintended financial or business operations.
For applications using canary releases or feature flags, smoke test results can help determine whether to expand the rollout.
If critical checks fail, the release process may stop or initiate an appropriately configured rollback.
A smoke testing tool does not automatically roll back a deployment. Rollback behavior must be implemented through the deployment platform or release management process.
Smoke Testing for AI Applications
AI technologies introduce two important considerations for smoke testing: using AI to assist with test automation and validating applications that contain AI-powered functionality.
AI-assisted smoke test generation
AI-powered testing tools can help generate test cases, suggest automation scripts, analyze failures, and identify possible changes to broken locators.
For example, an AI-assisted tool might generate smoke checks for login, dashboard navigation, and form submission based on a description of the application.
However, generated tests can contain incorrect assertions, unreliable selectors, or assumptions about expected behavior.
QA engineers should review these tests before adding them to a release pipeline. Automatically repairing a failing test must not hide a genuine application defect.
Smoke testing AI applications
Applications using large language models (LLMs), retrieval-augmented generation (RAG), or AI agents need checks tailored to their essential functions.
Consider a customer support chatbot connected to a company knowledge base.
A basic smoke test might verify that:
- The chatbot interface loads.
- Users can submit a question.
- The application returns a response within an acceptable timeout.
- A known documentation question retrieves the expected source.
- A restricted tool operation is not executed without authorization.
Unlike traditional applications, AI-generated text may vary between executions.
Therefore, smoke tests should focus on essential, measurable outcomes rather than requiring exact wording for every response.
Detailed hallucination testing, prompt injection assessments, and broader model quality evaluations require separate testing strategies.
Challenges and Best Practices
Smoke testing is most effective when teams keep the suite focused, reliable, and aligned with business-critical functionality.
Several common challenges can reduce its usefulness.
1. Limited test coverage
Smoke tests validate only selected functionality, which means defects outside those workflows can remain undetected.
Best practice: Prioritize critical user journeys and use regression, integration, and other testing techniques for broader coverage.
2. Flaky test results
Tests may fail intermittently because of timing issues, unstable dependencies, or unreliable selectors.
Best practice: Use stable locators, appropriate assertions, controlled environments, and execution traces to investigate failures. Do not treat repeated retries as a substitute for fixing flaky tests.
3. Poor test data management
Missing accounts, expired credentials, and inconsistent test records can cause failures unrelated to application functionality.
Best practice: Maintain dedicated test data, automate setup where practical, and ensure tests clean up any data they create.
4. Increasing execution time
A growing smoke suite can become too slow to provide fast build feedback.
Best practice: Keep only essential checks in the smoke suite and move detailed scenarios into functional or regression suites. Review test selection as the application evolves.
5. Unclear acceptance criteria
Teams may disagree about whether a build is acceptable when some tests pass and others fail.
Best practice: Define mandatory checks, failure severity, and build acceptance rules before execution. Record blocked scenarios separately from successful results.
6. Insufficient maintenance
Application changes can make existing smoke tests outdated or irrelevant.
Best practice: Review the suite after major feature releases, architecture changes, and updates to critical business workflows.
A successful smoke testing strategy balances speed, coverage of essential functionality, and confidence in test results.
Final thoughts
Smoke testing helps software teams determine whether an application build is ready for further testing or release progression. By checking essential functionality early, teams can identify critical issues and avoid spending effort on unstable builds.
A focused smoke suite, supported by appropriate automation, reliable test data, and CI/CD integration, provides faster feedback without replacing comprehensive testing.
As applications adopt AI-powered features and more frequent deployments, carefully designed smoke tests remain an important part of software quality assurance.
FAQs
Is smoke testing functional or non-functional testing?
Smoke testing primarily verifies essential functional behavior. However, a smoke suite can also include basic non-functional checks, such as service availability or response-time thresholds, when they are necessary to determine application readiness.
Who performs smoke testing?
Smoke testing may be performed by QA engineers, developers, software development engineers in test (SDETs), or automation engineers. Responsibility depends on the team’s workflow, testing strategy, and deployment process.
What happens when smoke testing fails?
The team investigates the failure, records relevant evidence, and determines whether the issue is caused by the application, test environment, or test script. Critical failures generally block further testing or release progression until resolved.
Can smoke testing be fully automated?
Yes, many applications can automate their entire smoke test suite when the selected workflows have reliable, measurable outcomes. Manual checks may still be appropriate for new features, unstable interfaces, or scenarios requiring human evaluation.
Related guides
Stay in the loop
Get new batch dates on WhatsApp. One message when a batch opens, nothing else.
By subscribing you agree to receive WhatsApp messages from Tester Academy. Read our Privacy policy.

