QA interview guide

How would you test push notifications?

Push notifications are a mobile, backend, and provider workflow at the same time. A strong answer shows you understand OS permissions, device tokens, app lifecycle states, delivery failures, privacy, and whether notifications drive users to the right place.

Write your own answer and compare it with senior QA coverage.

What interviewers expect

What interviewers expect

Interviewers expect permission prompt states, opt-in and opt-out, token registration and refresh, foreground/background/killed app behavior, deep links, duplicate prevention, quiet hours, localization, timezone, retry logic, delivery failures, and analytics.

Checklist

Checklist

Use these practical prompts to build a complete answer. Strong interview responses usually include functional behavior, negative cases, security, backend/data risks, UX, accessibility, and reliability.

Permissions, tokens, and preferences

  • Permission prompt, permission granted, denied, revoked, provisional, and not-now states are handled.
  • Opt-in, opt-out, notification preferences, muted content, quiet hours, and do-not-disturb rules are respected.
  • Push token registration, device token refresh, old token invalidation, logout token removal, and account switch work.
  • Multiple devices, app reinstall, app upgrade, and OS notification settings behave according to requirements.
  • Correct recipient receives the push and wrong user, wrong tenant, or unauthorized recipient does not.

Delivery behavior and app lifecycle

  • Foreground, background, killed app, locked screen, and notification center behavior are verified.
  • Deep links open the correct screen and handle login required, deleted target, or permission revoked states.
  • Notification title, body, icon, image, payload schema, payload size, localization, and timezone are correct.
  • Badge count, read/unread sync, notification grouping, and clear notification behavior work.
  • iOS, Android, APNs, FCM, simulator/device differences, and platform-specific behavior are covered.

Failures, retry logic, and duplicates

  • Provider timeout, provider error, provider outage, invalid token, and delivery latency are handled.
  • Queue retry, retry backoff, worker restart, queue restart, malformed payload, and partial send failure are tested.
  • Duplicate notifications are prevented across duplicate events, retries, webhook retries, and app reconnects.
  • Unauthorized notification API requests are rejected with correct status codes and response schema.
  • High-volume sends do not overload providers, workers, or users.

Security, UX, analytics, and observability

  • Sensitive data is not exposed in payload, notification preview, lock screen, logs, analytics, or URLs.
  • Open redirects are blocked and XSS in notification content is escaped.
  • Screen reader behavior, mobile layout, loading state, error state, and preference UX are usable.
  • Delivery status, open rate, click tracking, conversion analytics, and unsubscribe metrics are accurate without leaking private data.
  • Audit logs, metrics, alerts, and support diagnostics help investigate delivery issues.

Complete interview coverage checklist

Aim to mention 20-40 concrete checks. This expanded list helps you turn a short answer into a structured senior-style response.

Permission prompt, permission granted, denied, revoked, provisional, and not-now states are handled.
Opt-in, opt-out, notification preferences, muted content, quiet hours, and do-not-disturb rules are respected.
Push token registration, device token refresh, old token invalidation, logout token removal, and account switch work.
Multiple devices, app reinstall, app upgrade, and OS notification settings behave according to requirements.
Correct recipient receives the push and wrong user, wrong tenant, or unauthorized recipient does not.
Foreground, background, killed app, locked screen, and notification center behavior are verified.
Deep links open the correct screen and handle login required, deleted target, or permission revoked states.
Notification title, body, icon, image, payload schema, payload size, localization, and timezone are correct.
Badge count, read/unread sync, notification grouping, and clear notification behavior work.
iOS, Android, APNs, FCM, simulator/device differences, and platform-specific behavior are covered.
Provider timeout, provider error, provider outage, invalid token, and delivery latency are handled.
Queue retry, retry backoff, worker restart, queue restart, malformed payload, and partial send failure are tested.
Duplicate notifications are prevented across duplicate events, retries, webhook retries, and app reconnects.
Unauthorized notification API requests are rejected with correct status codes and response schema.
High-volume sends do not overload providers, workers, or users.
Sensitive data is not exposed in payload, notification preview, lock screen, logs, analytics, or URLs.
Open redirects are blocked and XSS in notification content is escaped.
Screen reader behavior, mobile layout, loading state, error state, and preference UX are usable.
Delivery status, open rate, click tracking, conversion analytics, and unsubscribe metrics are accurate without leaking private data.
Audit logs, metrics, alerts, and support diagnostics help investigate delivery issues.
Structure your answer: Start with permission prompt states, opt-in/out, token registration, and correct recipient delivery.
Structure your answer: Add app lifecycle behavior: foreground, background, killed app, lock screen, badge count, and notification center.
Structure your answer: Add content and navigation: payload, localization, timezone, quiet hours, deep links, login required, and deleted targets.
Structure your answer: Close with provider failures, retry logic, duplicate prevention, privacy, analytics, accessibility, and observability.
Do not miss: Device token refresh and logout token removal.
Do not miss: Foreground, background, killed app, and lock screen differences.
Do not miss: Quiet hours, timezone, localization, and preference rules.
Do not miss: Duplicate notifications caused by retries or duplicate events.

Ready to practice?

Practice this scenario interactively

Write your own answer and compare it with senior QA coverage.

Practice this scenario

Answer structure

Strong answer structure

  1. Start with permission prompt states, opt-in/out, token registration, and correct recipient delivery.
  2. Add app lifecycle behavior: foreground, background, killed app, lock screen, badge count, and notification center.
  3. Add content and navigation: payload, localization, timezone, quiet hours, deep links, login required, and deleted targets.
  4. Close with provider failures, retry logic, duplicate prevention, privacy, analytics, accessibility, and observability.

Common missed areas

Common missed risks

Device token refresh and logout token removal.
Foreground, background, killed app, and lock screen differences.
Quiet hours, timezone, localization, and preference rules.
Duplicate notifications caused by retries or duplicate events.

Answer template

Use this interview answer template

I would start with permission prompts and token registration, then cover opt-in and opt-out, device token refresh, foreground/background/killed app behavior, deep links, delivery failures, duplicate notifications, quiet hours, localization, timezone, retry logic, analytics, and privacy.

Use it as a structure, then replace the examples with specific checks for the feature you are discussing.

Common weak answer

“I would test valid and invalid cases.”

This is too generic because it does not show risk thinking. A stronger answer names the happy path, negative cases, security risks, backend/data behavior, UX/accessibility, and reliability concerns that matter for this exact scenario.

Examples

Weak answer vs stronger answer

Weak answer
I would test that the push notification arrives.

Arrival is only one small part of the flow. It misses permission states, token lifecycle, app lifecycle behavior, deep links, retries, duplicates, quiet hours, privacy, analytics, and platform differences.

Stronger answer
I would test permission prompt states, opt-in and opt-out, notification preferences, quiet hours, device token registration, token refresh, old token invalidation, logout token removal, multiple devices, correct recipient, wrong user not notified, tenant isolation, APNs and FCM configuration, foreground/background/killed app delivery, lock screen privacy, notification center, badge count, read/unread sync, title/body/icon, payload schema and size, localization, timezone, deep links, login required, deleted target, provider timeout, provider outage, invalid token removal, queue retry, duplicate notifications prevented, unauthorized API rejected, XSS escaped, open redirect blocked, delivery analytics, metrics, alerts, audit logs, screen reader support, and iOS/Android behavior.

FAQ

Frequently asked questions

What should I mention first when answering "How would you test push notifications?"

Start with permission prompt states, opt-in/out, token registration, and correct recipient delivery.

Should I include negative and edge cases?

Provider timeout, provider error, provider outage, invalid token, and delivery latency are handled. Queue retry, retry backoff, worker restart, queue restart, malformed payload, and partial send failure are tested.

Should I include security, API, or backend risks?

Sensitive data is not exposed in payload, notification preview, lock screen, logs, analytics, or URLs. Open redirects are blocked and XSS in notification content is escaped.

What are common missed risks?

Device token refresh and logout token removal. Foreground, background, killed app, and lock screen differences. Quiet hours, timezone, localization, and preference rules. Duplicate notifications caused by retries or duplicate events.

How can I practice this answer?

Use the interactive how would you test push notifications? challenge to write your own answer, get checklist-based feedback, and compare your coverage with stronger QA thinking.

Practice

Practice this scenario interactively

Write your own answer and compare it with senior QA coverage.

Practice this scenario