View all services
Talk to QA Advisor
Browse the Knowledge Hub56 resources
/Test Cases/CRM lead management test cases

Test cases

CRM lead test cases, where the lead quietly disappears

Twenty eight cases covering duplicate detection and merge, routing rules and the unrouted fallback, round robin under concurrency, territory visibility, stage transitions, conversion, bulk import with partial failures, consent and funnel reporting.

28cases/8coverage types/6concurrency cases/FreeCSV download

All 28 test cases, ready to copy

Free to use and adapt, no sign-up. Download as CSV or Markdown, or copy it straight into your own tooling.

Last updated

28 worked examples

CRM-01

Capture a lead from the web form with full attribution

TypeFunctionalPriorityHigh
Test data
A complete submission carrying campaign source, medium and landing page
Expected result
Lead is created with every field and every attribution parameter stored, and the created timestamp reflects submission rather than processing.
CRM-02

Detect a duplicate lead on repeat submission

TypeFunctionalPriorityHigh
Test data
Same email submitted twice, once with a differently cased address and once with a plus alias
Expected result
Matched as the same person under the documented rule. Email comparison is case insensitive on the domain and the rule for aliases is applied consistently.
CRM-03

Match a duplicate on company rather than only on email

TypeFunctionalPriorityMedium
Test data
Two contacts from the same company with different email addresses and the same phone number
Expected result
Related as one account with two contacts rather than two unconnected leads, and the account is not created twice.
CRM-04

Merge duplicate leads without losing activity

TypeStatePriorityHigh
Test data
Two leads each carrying notes, emails, calls and a different owner
Expected result
Merged record keeps every activity from both, ownership resolves by the documented rule, and the retired identifier resolves to the survivor.
CRM-05

Prevent two submissions from creating two leads concurrently

TypeBoundaryPriorityHigh
Test data
Submit the same form twice within 200 milliseconds from two tabs
Expected result
Exactly one lead exists. Deduplication that runs after insert rather than as a constraint will create both and reconcile neither.
CRM-06

Assign a lead by the routing rule

TypeFunctionalPriorityHigh
Test data
Territory, company size and product interest each matching a different rule
Expected result
Rules are evaluated in the documented priority order, one owner is assigned, and the rule that fired is recorded on the lead.
CRM-07

Assign a lead that matches no routing rule

TypeNegativePriorityHigh
Test data
A submission from an unmapped country with no product interest selected
Expected result
Lead lands in a defined fallback queue with an owner. A lead assigned to nobody is invisible in every pipeline view and is simply lost.
CRM-08

Distribute round robin without skipping or doubling

TypeBoundaryPriorityHigh
Test data
Twenty leads created simultaneously across a team of four
Expected result
Each rep receives five. A counter read and written without a lock hands the same position to two requests and skips the next.
CRM-09

Skip an unavailable owner during assignment

TypeStatePriorityMedium
Test data
A rep marked out of office and a deactivated user in the rotation
Expected result
Both are skipped and the lead goes to the next eligible owner rather than to an account nobody is monitoring.
CRM-10

Reassign a lead and preserve its history

TypeStatePriorityMedium
Test data
Reassign an engaged lead from one rep to another
Expected result
Every activity remains attached, the previous owner is recorded, and open tasks are transferred or explicitly closed rather than orphaned.
CRM-11

Restrict lead visibility to the owning team

TypeSecurityPriorityHigh
Test data
A rep requesting a lead owned by another territory, by direct identifier and through search
Expected result
Refused on both paths. A record hidden from a list view but returned by search or by identifier is not access control.
CRM-12

Grant a manager visibility across the hierarchy

TypeSecurityPriorityMedium
Test data
A manager viewing leads owned by direct and indirect reports
Expected result
The full subtree is visible, peers are not, and the rule is enforced on the server rather than by filtering the response in the client.
CRM-13

Move a lead through valid stage transitions only

TypeStatePriorityHigh
Test data
Attempt to move a new lead straight to closed won, and a disqualified lead back to working
Expected result
Invalid transitions are refused, the reopen path is explicit rather than incidental, and every transition records actor and timestamp.
CRM-14

Require a reason when disqualifying

TypeFunctionalPriorityMedium
Test data
Disqualify with no reason, then with a reason
Expected result
Blocked without a reason. Disqualification without a captured reason makes the funnel unanalysable at exactly the point it matters.
CRM-15

Convert a lead to an account, contact and opportunity

TypeFunctionalPriorityHigh
Test data
A qualified lead with activity history and custom field values
Expected result
All three records are created, mapped fields carry across, activity history follows the contact, and the lead cannot be converted twice.
CRM-16

Prevent a second conversion from a repeated request

TypeSecurityPriorityHigh
Test data
Replay the conversion request and press convert repeatedly
Expected result
Exactly one opportunity is created. A duplicate opportunity inflates the forecast and is rarely spotted before the pipeline review.
CRM-17

Convert into an existing account rather than creating a new one

TypeFunctionalPriorityHigh
Test data
A lead from a company that already exists with a slightly different legal name
Expected result
Existing account is offered and selected, and the duplicate account is not created silently under the alternative spelling.
CRM-18

Validate and normalise contact details on entry

TypeNegativePriorityMedium
Test data
A malformed email, an international phone number without a country code, and a free text country name
Expected result
Each is rejected or normalised to a documented format. Storing them unvalidated moves the failure to the first outbound campaign.
CRM-19

Import leads in bulk with partial failures

TypeNegativePriorityHigh
Test data
A file of 1,000 rows where 40 fail validation and 12 duplicate existing records
Expected result
Valid rows import, failures are reported by row number with a reason, and rerunning the corrected file does not duplicate the rows that succeeded.
CRM-20

Handle separators and encoding in an imported file

TypeCompatibilityPriorityMedium
Test data
Commas inside quoted fields, line breaks inside a notes column, accented characters and a byte order mark
Expected result
Every row parses to the correct column count, characters survive intact, and no row is silently dropped for a parsing failure.
CRM-21

Record activity against the correct lead

TypeStatePriorityHigh
Test data
Log a call from a list view while a different record is open in another tab
Expected result
Activity attaches to the intended lead. Context leaking between tabs is the common cause of activity landing on the wrong record.
CRM-22

Order the activity timeline correctly across timezones

TypeBoundaryPriorityMedium
Test data
Activities logged by users in three timezones, including two either side of a daylight saving change
Expected result
Chronological order is correct and each entry displays in the viewer local timezone with the timezone shown.
CRM-23

Enforce required fields per stage rather than at creation

TypeFunctionalPriorityMedium
Test data
Advance a lead to a stage that requires budget and timeline, with both blank
Expected result
Advance is blocked and names the missing fields. Demanding them at capture instead suppresses the lead entirely.
CRM-24

Honour consent and communication preferences

TypeSecurityPriorityHigh
Test data
A lead who has opted out, then is re-imported through a bulk file
Expected result
Opt out survives the import and the record is excluded from outbound campaigns. An import that resets consent is a regulatory finding.
CRM-25

Delete or anonymise a lead on request

TypeSecurityPriorityHigh
Test data
An erasure request for a lead with activity history and an associated opportunity
Expected result
Personal data is removed or anonymised across the record, its activities and exports, while aggregate reporting counts remain intact.
CRM-26

Keep reporting figures consistent with the underlying records

TypeStatePriorityHigh
Test data
Create, convert, disqualify and merge leads, then run the funnel report for the same period
Expected result
Counts reconcile exactly with the records. Merged leads are counted once and conversions are attributed to the period they occurred in.
CRM-27

Recover from a failed integration without losing the lead

TypeStatePriorityHigh
Test data
Take the enrichment or marketing automation integration offline during capture
Expected result
Lead is still created and the enrichment is retried. A capture that depends on a third party being available drops leads during every outage.
CRM-28

Operate lead capture and conversion with a keyboard and a screen reader

TypeAccessibilityPriorityMedium
Test data
Keyboard only navigation through the form, the owner picker and the conversion dialogue
Expected result
Every control is reachable and labelled, validation errors are announced and linked to their field, and the dialogue traps and restores focus correctly.

What goes in each field

ID

Required

Stable identifier, prefixed by module.

Test case

Required

What is being verified, in one line.

Type

Functional, negative, boundary, security, state, performance, accessibility or compatibility. Use it to check coverage is spread rather than clustered on the happy path.

Priority

Risk based, weighted by revenue and trust. Anything that loses a lead, duplicates one, assigns it to nobody, or exposes one team pipeline to another is High. Reporting accuracy is High because it drives forecasting.

Test data

The specific values, including the invalid and boundary ones.

Expected result

Required

The precise observable outcome, including message text where the wording itself is the requirement.

How To Use This

Submit the same form twice quickly

A lead that captures cleanly once proves nothing about the system under real traffic. These four conditions are where leads duplicate or vanish.

Submit twice within a fraction of a second

Deduplication that runs after insert rather than as a constraint will create both records and reconcile neither. Two tabs and 200 milliseconds is the whole test.

Send a lead that matches no rule

An unmapped country with no product interest. If there is no fallback queue, the lead has no owner, appears in no pipeline view, and is lost without an error.

Create twenty leads at once

Round robin across four reps should give five each. A counter read and written without a lock hands the same position to two requests and skips the next.

Reconcile the funnel report

Create, convert, disqualify and merge, then run the report. Merged leads counted twice inflate the forecast, and nobody questions a number that looks plausible.

What Most Sets Miss

Why lead defects reach the forecast

Duplicates are the defining problem of lead management, and they are a concurrency problem more often than a matching problem. Two form submissions arriving within the same moment both check for an existing record, both find none, and both insert. Any deduplication that runs as a step after insert will simply create two records and leave them. The fix is a uniqueness constraint at the storage layer, and the test is to fire the submissions simultaneously rather than one after another. The matching rule itself then needs its own cases for case differences, plus aliases and shared phone numbers across a company.

Assignment is the second failure, and its worst form is silent. A lead that matches no routing rule and lands with no owner is not visible in any pipeline view, so nobody knows it exists. It generates no error and no alert, and it is discovered weeks later if at all. Every routing configuration needs a defined fallback queue, and that queue needs a test. Round robin adds a concurrency case of its own: a position counter read and written without a lock will hand the same rep two leads and skip the next entirely.

Visibility is routinely implemented in the wrong layer. Territory and hierarchy rules that filter a list view but return the record on direct identifier lookup or through search are not access control, they are presentation. Any rep who learns a record identifier reads a competing pipeline. The manager case is the mirror image: the rule has to walk the whole reporting subtree without exposing peers, and it has to do so on the server.

Finally, imports and consent interact badly. A bulk file that resets an opt out flag turns a compliant database into a regulatory problem, and the record then enters the next campaign legitimately as far as the system is concerned. The related case is partial failure: an import of a thousand rows where forty fail needs per row reporting and needs to be safely rerunnable, because the corrected file will be uploaded again and it must not duplicate the rows that already succeeded.

Suggest an improvement

Testing a CRM or sales platform?

QAble tests CRM implementations end to end, including deduplication, routing under concurrency, visibility rules, integrations and reconciliation between records and reporting.

CRM testing services

More test case sets

View all

Test cases for a login page

Test cases
25 cases across functional, negative, boundary, security, session and accessibility paths, including account enumeration and lockout.

Test cases for a registration form

Test cases
28 cases covering validation, duplicate accounts, email verification, password rules and the enumeration leak most signup forms ship with.

Test cases for search functionality

Test cases
28 cases across relevance, partial and fuzzy matching, filters, pagination, empty states, injection attempts and performance under load.

Test cases for a shopping cart

Test cases
27 cases on quantity limits, price recalculation, stock changes, coupon stacking, guest to account merge and cart persistence.

Test cases for checkout and payment

Test cases
30 cases including 3D Secure, declines, timeouts, duplicate charges, idempotency, refunds and partial captures.

Test cases for file upload

Test cases
28 cases on size and type limits, spoofed content types, malicious filenames, progress, resume, virus scanning and storage limits.

Test cases for forgot password

Test cases
26 cases on reset token expiry, single use enforcement, session invalidation and the enumeration and rate limit gaps that are routine here.

Test cases for OTP verification

Test cases
26 cases on expiry, resend throttling, attempt limits, code reuse, delivery failure and the brute force window teams forget to close.

Test cases for user roles and permissions

Test cases
26 cases on horizontal and vertical privilege checks, direct object access, role changes mid-session and permission inheritance.

Test cases for form validation

Test cases
27 rules-based cases on required fields, length and numeric boundaries, client and server parity, hidden field tampering and error accessibility.

Test cases for a date picker

Test cases
26 cases on timezone shifts, ambiguous day and month order, impossible dates, min and max limits, leap years and keyboard operation.

Test cases for pagination

Test cases
24 cases on ordering stability, records changing mid-session, page size caps, deep offset cost, permission-filtered totals and state restore.

Test cases for push notifications

Test cases
26 cases on app states, deep link routing, token release on sign out, lock screen privacy, preferences, provider failures and platform differences.

Test cases for reports and data export

Test cases
25 cases on permission filtering in the file, spreadsheet formula injection, encoding, typed numbers and dates, row limits and audit logging.

Test cases for a chatbot

Test cases
28 cases on paraphrased intents, context, fallback loops, human handoff, policy grounding, prompt injection and data scoping.

Test cases for net banking transactions

Test cases
28 cases on duplicate debits from a retried request, concurrent transfers against one balance, daily limits across channels, beneficiary cooling periods, second factor binding and reconciliation.

Test cases for wallet and UPI payments

Test cases
28 cases on payments that time out with no response, idempotency on retry, racing balances, caps across devices, collect request fraud, mandates and refunds.

Test cases for insurance claim submission

Test cases
28 cases on coverage at the date of loss, waiting periods, deductibles and sub limits, exclusions and riders, duplicate claims and settlement reconciliation.

Test cases for patient records in an EHR

Test cases
28 cases on duplicate detection and merge, wrong patient entry, units of measure, allergy and interaction alerting, break glass access and audit of reads.

Test cases for an ERP purchase order

Test cases
28 cases on approval thresholds, amendments that must reset approval, budget commitment races, over receipt tolerance, three-way match and duplicate invoices.

Test cases for OTT video playback

Test cases
28 cases on bitrate recovery after a dip, DRM renewal mid stream, concurrent stream limits and leaked slots, resume conflicts, ad cue points and offline expiry.

Test cases for game level progression

Test cases
28 cases on save corruption during a crash write, cloud save conflicts, offline queue replay, unlock gating, currency exploits and purchase restore.

Test cases for a REST API

Test cases
28 cases on status code correctness, cross tenant resource access, mass assignment, idempotent retries, cursor pagination, rate limits and contract drift.

Test cases for SSO and social login

Test cases
28 cases on linking an account on an unverified email, state and code replay, redirect allow lists, token signature and issuer, deprovisioning and session rotation.

Test cases for subscription and billing

Test cases
28 cases on mid cycle proration, duplicate and out of order webhooks, renewal double charges, dunning and grace, trials, coupons, metered usage and tax.

Test cases for data tables, filters and sorting

Test cases
28 cases on unstable sorts across pages, filters that must reset pagination, selection surviving a filter change, bulk action scope and export fidelity.

Test cases for session timeout and concurrent login

Test cases
28 cases on tokens that survive sign out, refresh token reuse, idle against absolute lifetime, multi tab expiry, session limits and remote revocation.

Test cases for a multi step form wizard

Test cases
28 cases on values lost to back navigation, refresh and session expiry, step skipping, server side revalidation, duplicate submission and conditional branches.

Test cases for email verification

Test cases
28 cases on token reuse and expiry, invalidating earlier links, account enumeration, header injection, safe address change and mail scanner prefetching.

Test cases for dashboards and analytics widgets

Test cases
28 cases on reconciling against source rows, widgets that disagree, timezone aggregation, zero baselines, no data shown as zero and permission leaks in aggregates.

Test cases for booking and reservation

Test cases
28 cases on concurrent bookings for the last slot, inventory holds that leak, payment without a booking, cancellation boundaries and channel sync.

Test cases for mobile app install and update

Test cases
28 cases on migration chains across skipped versions, crashes during post upgrade migration, forced update lockouts, deep links and clean reinstall.

Test cases for accessibility (WCAG 2.2 AA)

Test cases
28 cases on keyboard only completion, focus management, live region announcements, contrast, reflow at 320 pixels, target size and screen reader verification.

Test cases for performance and load

Test cases
28 cases on spikes with no ramp, recovery after peak, soak and leak detection, pool exhaustion, cold caches, retry storms and data correctness under load.

Test cases for the OWASP Top 10

Test cases
28 cases on broken access control, mass assignment, injection across every input surface, credential stuffing, session invalidation, SSRF and exposed secrets.

Test cases for cross browser compatibility

Test cases
28 cases on storage that throws in private mode, blocked third party cookies, engine date parsing, mobile viewport units, in app browsers and ad blockers.

Test cases for database and data integrity

Test cases
28 cases on uniqueness under concurrency, lost updates, counter races, orphaned rows, migration and backfill safety, replica lag and verified restores.

Test cases for localisation and multi language support

Test cases
28 cases on text expansion, concatenated sentences, plural rules, locale date parsing, decimal separators, right to left layout, collation and encoding.

Want your pipeline data proven, not assumed?

QAble covers functional, boundary and security paths with ISTQB-certified engineers. Start with a free QA audit of your platform.

Talk to QA Advisor