Back to Demo & Discovery Scheduling

Test and QA Plan

How the build is validated before go-live: three sequential test phases, edge cases, and production verification.

4 pagesPDF · Quality
FS-DOC-06Quality

Test and QA Plan

Demo and Discovery Scheduling

[YourCompany.com] · Sales Department · Prepared by FullSpec · [Today's Date]

This document defines the complete test and quality assurance strategy for the Demo and Discovery Scheduling automation. It is written for the FullSpec build team and covers every test case across three sequential phases: unit testing of individual agents in a sandbox environment, integration and edge-case testing of agent handoffs and failure modes, and a final end-to-end production run with process owner sign-off. No phase begins until the previous phase has fully passed. The process owner joins the FullSpec team at Phase 3 only.

01Testing approach

Testing runs in three sequential phases. Each phase must reach a full pass state before the next phase begins. Phase 1 validates each agent in isolation using sandbox credentials and synthetic data. Phase 2 tests the handoffs between agents and exercises edge cases including duplicates, missing data, unavailable tools, and human timeout scenarios. Phase 3 executes a single traced run against production systems with real credentials and process owner review. The test IDs are sequential across all three phases, with edge cases carrying their own E-prefixed series.

1
Phase 1: Unit Testing
Individual agent validation in isolation
Scope
Each agent tested independently: Lead Qualification Agent, Scheduling and Confirmation Agent, Pre-Call Comms Agent
Environment
Sandbox only. No production credentials used at any point in Phase 1.
Credential rule
Use sandbox HubSpot portal, Calendly test webhook, Zoom sandbox app, Gmail test account, and Slack test workspace. No live rep accounts or prospect data.
Pass condition
All cases T01 through T12 return expected outputs with no unhandled errors. Any failure blocks Phase 2.
Who runs it
FullSpec team only. Process owner does not participate in Phase 1.
2
Phase 2: Integration and Edge Case Testing
Agent handoffs, failure modes, and boundary conditions
Scope
Cross-agent handoff sequences, timing logic (48-hour nudge, 24-hour brief, 60-minute reminder), and all edge-case scenarios
Environment
Sandbox for all integration tests. Staging credentials may be used for Zoom and Calendly webhook simulation.
Credential rule
All sandbox. No production HubSpot deals, no real prospect email addresses, no live Zoom meetings created under rep accounts.
Pass condition
All cases T13 through T20 pass and all edge cases E01 through E07 are resolved or formally accepted as known limitations. Any critical failure blocks Phase 3.
Who runs it
FullSpec team only. Process owner does not participate in Phase 2.
3
Phase 3: End-to-End Production Test
Full traced run on live systems with process owner review
Scope
One complete booking journey traced end to end across all six tools in production: HubSpot, Calendly, Gmail, Zoom, Google Calendar, and Slack
Environment
Production. Real credentials, real Zoom meeting creation, real Gmail sends to an internal test address only.
Credential rule
Use production OAuth tokens. Test address must be an internal mailbox (e.g. test-qa@[YourCompany.com]). No external prospect email addresses receive any output during Phase 3.
Pass condition
All cases T21 through T25 pass, including T25 process owner approval. The owner's sign-off is recorded in the FullSpec confirmation record.
Who runs it
FullSpec team runs T21 through T24. Process owner reviews and approves T25.
Test and QA PlanPage 1 of 4
FS-DOC-06Quality

02Phase 1 — unit test cases

Sandbox credentials only throughout Phase 1. Do not connect any production HubSpot portal, live Gmail account, or real Zoom user during these tests. All contact records, deal records, and booking events must use synthetic test data. Any test that touches a live system is invalid and must be re-run in the correct environment.

Lead Qualification Agent — reads HubSpot contact data, scores the lead, and returns the correct Calendly routing URL. Complexity: Moderate. Estimated build time: 5 hours.

ID
Scenario
Input
Expected Output
Pass Criteria
T01
Happy path: high-score lead routed to full demo link
HubSpot contact: role = VP Sales, company size = 200 employees, source = paid campaign
Score above threshold; output = full demo Calendly URL
Routing URL matches the configured full-demo link; no errors in execution log
T02
Happy path: low-score lead routed to discovery call link
HubSpot contact: role = intern, company size = 3 employees, source = organic
Score below threshold; output = discovery call Calendly URL
Routing URL matches the configured discovery-call link; correct branch selected
T03
Ambiguous score: lead flagged for manual rep review
HubSpot contact: role = manager, company size = 15 employees, source = referral
Score within ambiguous band; workflow pauses and creates HubSpot task for rep review
HubSpot task created with correct contact association; no booking URL sent; execution log shows manual-review branch taken
T04
Failure: HubSpot contact record missing required scoring fields
HubSpot contact: role = null, company size = null, source = null
Agent catches missing fields; logs error; does not proceed to routing
Error event recorded in execution log; no URL emitted; workflow does not proceed to Scheduling Agent
T05
Failure: HubSpot API returns 429 rate-limit response
Simulated 429 response from HubSpot sandbox
Agent retries with exponential backoff up to 3 attempts; logs final failure if unresolved
Retry logic fires; after 3 failed attempts, error is logged and workflow halts cleanly without duplicate requests

Scheduling and Confirmation Agent — sends the booking link via Gmail, monitors Calendly for confirmation, fires the 48-hour nudge if needed, then creates the Zoom meeting and Google Calendar invite on booking. Complexity: Moderate. Estimated build time: 7 hours.

ID
Scenario
Input
Expected Output
Pass Criteria
T06
Happy path: booking link email sent successfully
Lead Qualification Agent output: discovery call URL, prospect email = test@sandbox.internal
Gmail sends personalised email containing Calendly URL within 60 seconds of agent trigger
Email delivered to sandbox inbox; subject line and body contain correct first name, company name, and Calendly link; no duplicate sends
T07
Happy path: Calendly booking confirmed, Zoom meeting created
Simulated Calendly booking-confirmed webhook payload: slot = 2025-07-10T10:00:00Z, duration = 30 min
Zoom meeting created; unique join URL generated; Google Calendar invite sent to both prospect and rep
Zoom API returns meeting ID and join URL; Google Calendar event contains correct time, attendees, and Zoom link; invite appears in sandbox calendar
T08
48-hour nudge fires when no booking detected
Booking link sent at T+0; no Calendly booking event received within 48 hours (simulated)
Single follow-up nudge email sent via Gmail at T+48h
Nudge email delivered to sandbox inbox; no second nudge sent; execution log shows correct timer branch
T09
Failure: Gmail SMTP authentication error during booking link send
Simulated 401 response from Gmail OAuth token
Agent logs authentication error; does not retry silently; raises alert in execution log
Error captured in log with status code and timestamp; no email sent; workflow halts at this step
T10
Failure: Zoom API returns 400 on meeting creation
Simulated Zoom API 400 response: invalid user account
Agent logs Zoom creation failure; Google Calendar invite withheld until Zoom link is available
Execution log shows Zoom error; calendar invite not sent; error flagged for manual resolution; no blank Zoom link included in any email

Pre-Call Comms Agent — updates the HubSpot deal stage, sends the 24-hour pre-call brief via Gmail, posts the Slack notification, and fires the 60-minute reminder email. Complexity: Simple. Estimated build time: 4 hours.

ID
Scenario
Input
Expected Output
Pass Criteria
T11
Happy path: HubSpot deal stage updated and pre-call brief sent
Calendly confirmed webhook; HubSpot deal ID present; meeting time = T+24h
Deal stage updated to Demo Booked; meeting date logged as HubSpot property; pre-call brief email sent 24 hours before meeting
HubSpot deal record shows correct stage and meeting date; brief email arrives in sandbox inbox with correct personalisation tokens (first name, company, meeting time)
T12
Happy path: Slack notification posted and 60-minute reminder sent
HubSpot deal updated; meeting time = T+60min
Slack message posted to configured sales channel; reminder email sent to prospect 60 minutes before call with Zoom link
Slack sandbox message contains prospect name, company, meeting time, and assigned rep; reminder email in sandbox inbox contains correct Zoom join URL
Test and QA PlanPage 2 of 4
FS-DOC-06Quality

03Phase 2 — integration and edge case tests

Integration tests validate that data passes correctly between agents across the full handoff chain. All tests remain in the sandbox environment. IDs continue from T12.

ID
Scenario
Input
Expected Output
Pass Criteria
T13
Full handoff: Lead Qualification Agent to Scheduling and Confirmation Agent
Synthetic HubSpot contact triggers qualification; high-score output routed to scheduling
Scheduling Agent receives correct Calendly URL and prospect email from qualification output without data loss
Payload from qualification matches expected schema; no fields dropped in transit; scheduling email contains correct URL
T14
Full handoff: Scheduling and Confirmation Agent to Pre-Call Comms Agent on booking confirmed
Simulated Calendly webhook triggers comms agent; HubSpot deal ID and meeting time passed
Pre-Call Comms Agent receives meeting time, deal ID, and prospect details; updates deal stage and queues brief and reminder
HubSpot deal stage updated within 30 seconds of webhook receipt; brief and reminder timers set correctly relative to meeting time
T15
Manual-review branch: rep completes review and approves booking
Ambiguous score triggers HubSpot task; task marked complete by rep; approval flag set
Workflow resumes from manual-review pause; booking link sent via Gmail
Workflow resumes only after task completion flag is detected; no double-send; correct Calendly URL used based on rep's routing decision
T16
Timing accuracy: 48-hour nudge does not fire if booking is confirmed before deadline
Booking link sent; Calendly booking confirmed at T+36h (before nudge trigger at T+48h)
Nudge timer cancelled; no nudge email sent; workflow proceeds directly to Zoom and calendar creation
Execution log confirms nudge timer was cancelled on booking receipt; no nudge email in sandbox inbox
T17
Timing accuracy: 24-hour brief fires at correct relative time after booking
Meeting booked for a fixed sandbox timestamp; brief timer set on booking confirmation
Brief email sent exactly 24 hours before meeting time, within a two-minute tolerance window
Email timestamp in sandbox inbox falls within the acceptable two-minute window before the 24-hour mark
T18
Personalisation tokens render correctly in all outbound emails
HubSpot contact: first name = Alex, company = Acme Ltd, meeting topic = product demo
All three Gmail sends (booking link, brief, reminder) render tokens correctly with no raw placeholder text visible
Sandbox inbox shows 'Hi Alex', 'Acme Ltd', and the correct meeting topic in each email; no {{token}} strings visible in any send
T19
Slack notification contains all required fields
Booking confirmed; HubSpot deal contains prospect name, company, meeting time, and rep assignment
Slack message in test workspace shows prospect name, company name, meeting datetime, and rep name
All four data fields present in Slack message body; no null or undefined values displayed
T20
Partial failure recovery: Zoom creation fails but rest of workflow completes
Booking confirmed; Zoom API returns 503 service unavailable
Google Calendar invite held pending Zoom link; HubSpot deal stage still updated; Slack notification still posted with note that Zoom link is pending
HubSpot and Slack steps complete successfully; calendar invite withheld; error logged; Slack message flags Zoom link as pending

Edge case tests cover boundary conditions that fall outside the standard booking flow. These use the E-prefix series and all run in the sandbox environment.

ID
Scenario
Input
Expected Output
Pass Criteria
E01
Duplicate demo request: same prospect submits form twice within 10 minutes
Two identical HubSpot form submissions from the same email address within a 10-minute window
Deduplication logic detects second submission; only one booking link email sent; second workflow execution suppressed
Sandbox inbox contains exactly one booking link email; execution log shows second trigger detected and suppressed
E02
Missing prospect email address in HubSpot contact record
HubSpot contact created with no email property set
Workflow halts at Gmail send step; error logged with contact ID; no partial execution proceeds
Execution log records missing email error with HubSpot contact ID; no email attempted; workflow does not continue to Zoom or calendar steps
E03
HubSpot deal not found when Pre-Call Comms Agent attempts update
Calendly booking confirmed but HubSpot deal ID in webhook payload does not match any live deal
Agent logs deal-not-found error; does not create a duplicate deal; raises alert for manual resolution
Error logged with Calendly event ID and attempted HubSpot deal ID; no new deal record created; execution halts cleanly
E04
Calendly webhook payload malformed or missing required fields
Simulated Calendly webhook with missing invitee email and event start time
Webhook validation step rejects payload; error logged; no downstream steps triggered
Execution log shows payload validation failure at webhook receipt step; no email, Zoom, or HubSpot action initiated
E05
Slack API unavailable at time of notification send
Slack API returns 503 at the point the Pre-Call Comms Agent attempts to post
Agent retries Slack post up to 2 times with a 30-second delay; if still failing, logs error and continues with HubSpot and Gmail steps
HubSpot and Gmail steps complete; Slack failure logged with retry count; execution does not halt for a non-critical Slack error
E06
Human timeout: rep does not complete manual review task within 48 hours
Ambiguous lead flagged for rep review; HubSpot task remains incomplete after 48 hours
Workflow sends an internal reminder to the rep via Slack or email; does not auto-proceed without human approval
Internal reminder delivered to configured rep notification channel; workflow remains paused; no booking link sent without approval
E07
Prospect cancels Calendly booking after Zoom meeting is created
Calendly cancellation webhook received after Zoom meeting ID and Google Calendar invite already created
Zoom meeting cancelled via API; Google Calendar invite cancelled; HubSpot deal stage reverted to pre-booking stage; Slack notification posted to sales channel flagging cancellation
Zoom meeting no longer active; calendar invite shows cancellation; HubSpot deal stage matches pre-booking value; Slack channel shows cancellation message with prospect name and original meeting time
Test and QA PlanPage 3 of 4
FS-DOC-06Quality

04Phase 3 — end-to-end production test

Important before running Phase 3: All Gmail sends must target an internal test address only (e.g. test-qa@[YourCompany.com]). Do not use any real prospect email address. The HubSpot deal record created during this test must be voided or deleted immediately after the process owner completes their review. The Zoom meeting created during this test must be cancelled via the Zoom dashboard. The Slack message will be visible to the sales channel — notify the team in advance that a test post will appear.
Production credentials are active during Phase 3. OAuth tokens for HubSpot, Calendly, Gmail, Zoom, Google Calendar, and Slack must all be verified as valid before beginning. Confirm token expiry dates and refresh token availability before the test run starts.
ID
Scenario
Input
Expected Output
Pass Criteria
T21
Full production run: demo request detected and routed to correct booking link
Synthetic HubSpot contact created in production portal with qualifying role and company size; demo-interest lifecycle stage set manually
Lead Qualification Agent fires within 60 seconds; correct Calendly URL determined based on score; personalised booking link email delivered to internal test inbox
Execution log shows trigger receipt timestamp; qualification score and routing decision logged; email in internal test inbox contains correct personalisation and Calendly URL; no real prospect receives any output
T22
Full production run: Calendly booking confirmed, Zoom meeting and calendar invite created
Calendly booking confirmed on the test account using the URL from T21; internal test address used as prospect
Zoom meeting created under the assigned rep's account; unique join URL generated; Google Calendar invite sent to both the internal test address and the rep
Zoom API confirms meeting creation with unique meeting ID; Google Calendar invite visible in rep's calendar with correct time, duration, and Zoom link; invite also delivered to internal test inbox
T23
Full production run: HubSpot deal stage updated and pre-call brief sent at correct time
Booking confirmed from T22; meeting time set 25 hours from test execution time to allow brief timer to fire within the test window (or timer fast-forwarded in the orchestration layer)
HubSpot deal record moved to Demo Booked stage; meeting date logged as property; pre-call brief email sent to internal test inbox with correct tokens rendered
HubSpot deal stage and meeting date property verified in production portal; brief email in internal test inbox shows correct first name, company, meeting time, and agenda; no raw token strings visible
T24
Full production run: Slack notification posted and 60-minute reminder sent
Meeting time set 65 minutes from test execution time (or timer fast-forwarded); Slack production workspace connected
Slack message posted to the configured sales channel with prospect name, company, meeting time, and rep assignment; reminder email sent to internal test inbox with Zoom join URL
Slack message visible in production sales channel with all four required fields; reminder email in internal test inbox contains active Zoom link; execution log shows all steps completed without error
T25
Process owner review and approval: end-to-end verification and sign-off
Process owner (sales lead) reviews the execution log from T21 through T24, inspects all emails in the internal test inbox, confirms the HubSpot deal record, Slack message, and Zoom meeting
Process owner confirms the full workflow operated as specified; approves the automation for go-live; approval recorded in the FullSpec confirmation record
Process owner has reviewed all Phase 3 outputs and provided explicit approval. FullSpec records the approval in the project confirmation log with the reviewer's name, role, and timestamp. No separate signature block is required. The test record (HubSpot deal, Zoom meeting) is voided immediately after approval is recorded.
After T25 is complete and the process owner's approval is recorded, the FullSpec team will void the test HubSpot deal record, cancel the test Zoom meeting, and confirm in writing to the process owner that the production environment is clean and ready for live traffic. Contact the FullSpec team at support@gofullspec.com with any questions about the test results or approval record.
Test and QA PlanPage 4 of 4

More documents for this process

Every document generated for Demo & Discovery Scheduling.

Launch Plan
Operations · Owner
View
ROI and Business Case
Finance · Owner
View
Process Runbook / SOP
Operations · Owner
View
Developer Handover Pack
Technical · Developer
View
Integration and API Spec
Technical · Developer
View