What is smoke testing?
Smoke testing is a shallow, fast validation technique that verifies critical functionality works after a code change, deployment, or environment setup. The term originates from hardware testing: plug in the device and check if it smokes. For APIs, it means hitting key endpoints to confirm they respond correctly before running deeper tests.
Unlike comprehensive functional testing, smoke tests don't validate business logic or edge cases. They answer a binary question: Is the system stable enough to proceed? If authentication fails, there's no point running payment tests. If the health check endpoint returns 500, stop the deployment.
Why smoke testing matters in modern development
Continuous deployment pipelines push code multiple times per day. Running a full test suite (which can take 30-60 minutes) on every commit creates bottlenecks. Smoke tests act as a deployment gate: they run in 2-5 minutes and catch showstopper issues immediately.
Industry adoption
- Google: Runs smoke tests on every Kubernetes cluster deployment to verify core services are reachable before routing production traffic.
- Stripe: Payment API smoke tests run every 2 minutes in production to detect outages within seconds of occurrence.
- Shopify: Post-deployment smoke tests verify checkout, cart, and auth endpoints before marking a release as healthy.
- Netflix: Uses smoke tests as pre-chaos validation — if smoke fails, chaos experiments don't run.
When to run smoke tests
| Scenario | Purpose | Frequency |
|---|---|---|
| CI/CD pipeline | Validate build before deployment | Every commit or PR merge |
| Post-deployment | Verify production is healthy | Immediately after deploy |
| Scheduled health checks | Detect runtime failures | Every 5-15 minutes |
| Environment setup | Confirm staging/dev is ready | After infrastructure changes |
| Database migrations | Check API still works after schema changes | After migration scripts |
What to include in a smoke test suite
Smoke tests should be fast, critical, and simple. Focus on endpoints that would halt business operations if broken.
Essential endpoints to test
- Health/readiness endpoints —
GET /health,GET /ready - Authentication —
POST /auth/login, token validation - Core CRUD operations — Create, Read, Update for primary resources
- Payment processing —
POST /payments(if applicable) - Critical integrations — Third-party APIs your system depends on
What NOT to include
- Edge case validations (negative tests, boundary conditions)
- Complex multi-step workflows (save for integration tests)
- Performance benchmarks (use dedicated load tests)
- Comprehensive schema validation (functional tests cover this)
How to run smoke tests in Flasqo
Flasqo's smoke testing module lets you validate critical endpoints in minutes with zero configuration.
-
Navigate to Smoke Testing
Go to Testing Types → Smoke Testing → Launch -
Enter your API base URL
Example:https://api.yourapp.com
Flasqo will auto-detect common health endpoints like/health,/status,/ping -
Add critical endpoints
Click "+ Add Endpoint" and specify:
• Endpoint path:/auth/login
• HTTP method:POST
• Expected status:200or401(if auth required)
• (Optional) Request body for POST/PUT requests -
Configure authentication (if needed)
Select auth type:
• Bearer Token — Paste your API key or JWT
• API Key — Header or query param
• Basic Auth — Username/password
• OAuth 2.0 — Client credentials flow -
Run smoke tests
Click "Run Smoke Tests"
Flasqo executes all endpoints in parallel and reports results in ~30 seconds -
Review results
• ✅ Green: Endpoint responded with expected status
• ❌ Red: Failure (timeout, wrong status, network error)
• Click any failed test to see request/response details -
Export or share report
• Download PDF report for documentation
• Share public link with your team
• Integrate with CI/CD using Flasqo's API
Smoke testing in CI/CD pipelines
Automate smoke tests to run on every deployment:
GitHub Actions example
name: Deploy with Smoke Tests
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Deploy to production
run: ./deploy.sh
- name: Run smoke tests
run: |
curl -X POST https://api.flasqo.com/smoke-tests \
-H "Authorization: Bearer ${{ secrets.FLASQO_API_KEY }}" \
-d '{"base_url": "https://api.yourapp.com"}'
- name: Check smoke test results
run: |
if [ $? -ne 0 ]; then
echo "Smoke tests failed - rolling back deployment"
exit 1
fi
Common smoke testing scenarios
E-commerce API
GET /health— System is runningPOST /auth/login— Users can authenticateGET /products— Product catalog is accessiblePOST /cart/add— Cart functionality worksPOST /checkout— Payment processing is reachable
SaaS application API
GET /status— API is reachablePOST /signup— New user registration worksPOST /login— Existing users can sign inGET /dashboard— Core UI data loadsPOST /api/create— Primary resource creation works
Payment gateway API
GET /ping— Service is onlinePOST /payments— Payment processing endpoint respondsPOST /refunds— Refund capability is functionalGET /transactions/:id— Transaction lookup works
Run smoke tests in 2 minutes
No installation, no configuration. Just paste your API URL and get instant health checks.
Try Flasqo FreeBest practices for smoke testing
1. Keep it fast (under 5 minutes)
If smoke tests take longer than your coffee break, you're testing too much. Move comprehensive validations to functional or integration test suites.
2. Test production-like environments
Smoke tests against localhost prove nothing. Use staging or production URLs to validate real infrastructure, DNS, SSL certificates, and network paths.
3. Fail fast and loudly
Don't retry failed smoke tests automatically. A failure means something is critically broken — investigate immediately, don't mask the issue.
4. Monitor smoke test results over time
Track success rates. If smoke tests that previously passed 100% of the time start failing intermittently, it's an early warning sign of infrastructure issues.
5. Run smoke tests post-deployment AND on a schedule
Deployments can succeed but production can still fail minutes later (database connection pool exhaustion, memory leaks, DNS propagation). Scheduled smoke tests catch runtime failures.
Frequently asked questions
What is the difference between smoke testing and functional testing?
Smoke testing is a quick, shallow check that critical endpoints respond correctly. Functional testing is deep validation of business logic, edge cases, and error handling. Smoke tests run in minutes; functional suites can take hours. Both are necessary.
How many endpoints should be included in a smoke test suite?
Focus on critical paths: authentication, core CRUD operations, payment processing, and any endpoint that would halt business if broken. Typically 5-15 endpoints. If your smoke suite takes more than 5 minutes, it's too large.
Should smoke tests run before or after deployment?
Both. Run them in your CI pipeline before deployment to catch breaking changes. Run them again immediately after deployment to verify the production environment is healthy. Many teams also run smoke tests on a schedule (every 15 minutes) to detect runtime failures.
Can I run smoke tests in production?
Yes, and you should. Smoke tests use safe, idempotent requests (mostly GET calls, or POST requests that create test data). Avoid destructive operations. Many companies run smoke tests in production every few minutes as synthetic monitoring.
What should I do if a smoke test fails?
Stop the deployment pipeline immediately. Investigate the failure — check logs, verify the endpoint manually, confirm infrastructure is healthy. Do not proceed with deployment until smoke tests pass. A failed smoke test means your system is too broken for further testing.