Back to VIP Customer Management

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

VIP Customer Management

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

This document defines the complete quality assurance and testing programme for the VIP Customer Management automation. It is written for the FullSpec build team and covers all scripted test cases across three sequential phases: unit testing of individual agents in sandbox conditions, integration and edge-case testing of agent handoffs and failure scenarios, and a final end-to-end production run confirmed by the process owner. No phase begins until every test case in the previous phase carries a passing result. The process owner joins the FullSpec team for Phase 3 only.

01Testing approach

Testing runs in three sequential phases. Each phase must reach a full pass before the next phase is permitted to begin. Phase 1 validates each agent in isolation using only sandbox credentials and synthetic data. Phase 2 validates the handoffs between agents and probes known edge cases including duplicate contacts, missing Xero identifiers, unavailable downstream tools, and human-approval timeouts. Phase 3 executes a controlled end-to-end run in the live production environment and concludes with formal process-owner sign-off recorded in the FullSpec confirmation log.

1
Phase 1: Unit Testing
Each agent tested in isolation against sandbox environments
Scope
VIP Tier Agent, VIP Outreach Agent, and VIP Support Escalation Agent tested individually. No cross-agent calls.
Environment
Sandbox only. Xero sandbox organisation, HubSpot sandbox portal, Zendesk sandbox instance, Gmail test account, Typeform test workspace, Slack test workspace.
Credential rule
No production API keys or OAuth tokens permitted. All credentials must be sandbox-scoped and stored in the test credential vault only.
Pass condition
All cases T01 through T14 return expected outputs with no unhandled exceptions. Zero production systems contacted.
Who runs it
FullSpec team only.
2
Phase 2: Integration and Edge-Case Testing
Agent handoffs and failure-mode scenarios validated
Scope
End-to-end agent chain handoffs plus isolated edge cases covering duplicate records, missing data fields, tool unavailability, and alert threshold boundary conditions.
Environment
Sandbox for all integration tests. Simulated tool outages achieved via credential revocation or mock error injection in the sandbox environment.
Credential rule
Sandbox credentials only. Production credentials remain locked. Any test requiring a live webhook (e.g. Typeform) uses a dedicated test form pointed at the sandbox HubSpot portal.
Pass condition
All cases T15 through T22 and E01 through E08 resolve without data loss, unintended writes to production, or unhandled exceptions. All error-handling branches route correctly.
Who runs it
FullSpec team only.
3
Phase 3: End-to-End Production Test
Controlled live run confirmed by the process owner
Scope
One complete production run from Xero spend trigger through to Slack alert and Typeform survey dispatch, traced across all three agents using a designated internal test contact.
Environment
Live production systems: Xero production organisation, HubSpot production portal, Gmail production account, Zendesk production instance, Slack production workspace, Typeform production account.
Credential rule
Production OAuth tokens and API keys used. All tokens must carry minimum required scopes only. No additional permissions granted for testing purposes.
Pass condition
All cases T23 through T27 pass, including process owner review-and-approval (T27). Test contact record voided in HubSpot and Zendesk after sign-off.
Who runs it
FullSpec team executes; process owner (Account Manager or Operations Lead) reviews outputs and records approval for T27.
Test and QA PlanPage 1 of 4
FS-DOC-06Quality

02Phase 1 — unit test cases

Sandbox credentials only for all Phase 1 tests. No production API keys, OAuth tokens, or live HubSpot portal connections are permitted at any point during this phase. If a test inadvertently triggers a production system, halt immediately, revoke the credential, and restart the test in a clean sandbox environment. Contact support@gofullspec.com to log the incident.

VIP Tier Agent (connects Xero and HubSpot)

ID
Scenario
Input
Expected output
Pass criteria
T01
Happy path: customer crosses VIP threshold
Xero sandbox transaction pushes cumulative spend to $10,001 for contact email matching HubSpot record.
HubSpot contact updated: vip_tier = 'Gold', vip_qualification_date = today, tier_changed = true.
All three HubSpot properties written correctly. No duplicate contact created. Trigger fires once.
T02
Scheduled weekly review, no tier change
Xero cumulative spend unchanged since last review. HubSpot tier already set to 'Gold'.
HubSpot record read but not written. tier_changed = false. No downstream agents triggered.
Zero write operations to HubSpot. No email or Slack event emitted.
T03
Tier upgrade from Silver to Gold
Customer previously at Silver tier ($5,000 spend). New transaction brings total to $10,200.
HubSpot vip_tier updated from 'Silver' to 'Gold'. tier_changed = true. Previous tier logged in contact note.
Previous tier preserved in notes field. tier_changed flag correctly set to true.
T04
Xero customer identifier not matched in HubSpot
Xero transaction for email address not present in HubSpot contacts.
Agent logs error: 'No matching HubSpot contact for Xero customer ID [id]'. No write attempted. Error routed to FullSpec error log.
No HubSpot write. Error entry present in automation platform log with Xero customer ID and timestamp.
T05
Xero API returns 429 rate limit error
Sandbox Xero API mock returns HTTP 429 on spend data fetch.
Agent pauses, retries after 60 seconds up to three times. If all retries fail, error is logged and run marked as deferred.
Retry count in log equals three. No partial write to HubSpot. Deferred status visible in platform run history.
T06
Customer spend falls below VIP threshold (tier lapse)
Cumulative Xero spend recalculated as $4,800 after a refund. Current HubSpot tier is 'Silver'.
HubSpot vip_tier set to null or 'Standard'. tier_changed = true. Lapse date logged.
vip_tier property cleared or set to 'Standard'. Lapse date written. No welcome email triggered.

VIP Outreach Agent (connects HubSpot, Gmail, and Typeform)

ID
Scenario
Input
Expected output
Pass criteria
T07
Happy path: tier-up email sent to new Gold VIP
HubSpot contact record updated with vip_tier = 'Gold', tier_changed = true, first_name = 'Alex', tier_benefits present.
Personalised tier-up email sent via Gmail sandbox account. HubSpot timeline entry logged. Contact enrolled in Gold check-in sequence.
Email received in sandbox Gmail inbox. Timeline entry created with correct timestamp. Sequence enrolment confirmed in HubSpot.
T08
Typeform survey dispatched at 90-day mark
HubSpot contact vip_enrolment_date is 90 days prior. Sequence step triggers survey dispatch.
Typeform sandbox survey link sent via Gmail. Survey send event logged on HubSpot contact timeline.
Email contains unique Typeform link for the contact. HubSpot timeline shows 'Survey dispatched' activity.
T09
Check-in sequence enrolment at 30-day mark
Contact enrolled in sequence. Sequence step 1 fires at 30 days.
Personalised 30-day check-in email generated and sent via Gmail. Activity logged in HubSpot.
Email content includes customer first name and purchase reference. HubSpot log entry present.
T10
Gmail sandbox send fails (SMTP error)
Gmail sandbox API returns 500 error on send attempt.
Agent logs send failure against contact. Retry attempted once after 5 minutes. If retry fails, error flagged in platform log. No duplicate send on recovery.
Single retry in log. No duplicate email on successful retry. Error entry present if both attempts fail.
T11
Contact unsubscribed from HubSpot email
HubSpot contact has email_opt_out = true when Outreach Agent fires.
Agent detects opt-out flag. No email sent. HubSpot timeline entry: 'Outreach suppressed: contact opted out'.
Zero emails sent. Suppression log entry present. Sequence enrolment skipped.
T12
Typeform form ID not configured for tier
Agent attempts to dispatch survey but no Typeform form ID is mapped to the customer's VIP tier.
Agent logs configuration error: 'No Typeform form ID mapped for tier [value]'. Survey not sent. Error routed to platform log.
No survey link generated. Configuration error visible in log with tier value included.

VIP Support Escalation Agent (connects Zendesk, HubSpot, and Slack)

ID
Scenario
Input
Expected output
Pass criteria
T13
Happy path: VIP ticket receives priority tag and Slack alert
New Zendesk sandbox ticket created. Submitter email matches HubSpot contact with vip_tier = 'Gold'.
Zendesk ticket tagged 'vip-priority'. Slack message sent to sandbox channel with customer name, tier, ticket ID, and HubSpot link.
Zendesk tag present on ticket. Slack message content matches expected template. HubSpot link resolves to correct contact.
T14
Low Typeform survey score triggers Slack alert
Typeform sandbox webhook received with score = 3 (below threshold of 6). Contact email matched in HubSpot as vip_tier = 'Gold'.
Slack alert posted in designated sandbox channel tagging account manager. Alert includes contact name, score, and HubSpot record link.
Slack message present in sandbox channel within 60 seconds of webhook receipt. Score value and contact name accurate.
Test and QA PlanPage 2 of 4
FS-DOC-06Quality

03Phase 2 — integration and edge case tests

Integration tests (T15 through T22) validate the handoffs between all three agents as a chained sequence. Edge-case tests (E01 through E08) probe known failure modes that do not appear in individual agent tests.

ID
Scenario
Input
Expected output
Pass criteria
T15
Full chain: Xero trigger through to Slack alert (tier change path)
Xero sandbox transaction crosses Gold threshold. Contact matched in HubSpot.
VIP Tier Agent updates HubSpot. VIP Outreach Agent sends tier-up email and enrols in sequence. VIP Support Escalation Agent applies Zendesk tag and sends Slack alert in correct order.
All three agents fire in correct sequence. No step skipped. Timestamps in platform log show correct ordering.
T16
Full chain: no tier change, no outreach triggered
Xero weekly review fires. Contact spend unchanged. tier_changed = false.
Only VIP Tier Agent fires. Outreach Agent and Escalation Agent do not execute.
Platform log shows VIP Tier Agent ran and emitted tier_changed = false. Zero downstream agent executions.
T17
Typeform low-score webhook triggers Escalation Agent only
Typeform sandbox webhook with score = 2 received. Contact is Gold VIP in HubSpot.
VIP Support Escalation Agent posts low-score Slack alert. VIP Tier Agent and Outreach Agent do not fire.
Only Escalation Agent executes. Slack alert content correct. No spurious Tier Agent or Outreach Agent runs in log.
T18
New Zendesk ticket from VIP triggers Escalation Agent independently
New Zendesk ticket submitted. Contact email matched as Silver VIP in HubSpot.
Zendesk ticket tagged 'vip-priority'. Slack alert sent to account manager. Tier Agent and Outreach Agent not triggered.
Tag on Zendesk ticket correct. Slack message present. No unintended agent chain execution.
T19
Outreach Agent handoff delayed: HubSpot sequence API response slow
HubSpot sandbox API for sequence enrolment returns HTTP 202 with 8-second delay.
Agent waits up to 15 seconds for confirmation. Enrolment logged on confirmation receipt. No duplicate enrolment.
Single enrolment entry in HubSpot. No timeout error in log for delays under 15 seconds.
T20
Escalation Agent handoff: Slack API temporarily unavailable
Slack sandbox API returns 503 on alert post attempt.
Agent retries Slack post after 30 seconds up to two times. If all retries fail, alert details logged to platform error log and marked for manual review.
Retry count equals two in log. On failure, error log entry includes full alert payload. No silent failure.
T21
Survey dispatched and low-score response received in same run cycle
Typeform survey sent at 90-day mark. Sandbox response submitted immediately with score = 4.
Outreach Agent logs survey send. Escalation Agent independently receives Typeform webhook and posts Slack alert. No interference between the two executions.
Both agent executions present in platform log with distinct run IDs. Slack alert and HubSpot timeline entry both accurate.
T22
Contact tier lapse: downstream agents do not trigger welcome flow
Xero refund reduces spend below Silver threshold. tier_changed = true, new tier = 'Standard'.
Tier Agent updates HubSpot. Outreach Agent does not send tier-up email. Escalation Agent does not send VIP Slack alert. Lapse handling branch executes if configured.
No tier-up email in sandbox inbox. No VIP Slack alert in sandbox channel. Lapse date written to HubSpot contact.

Edge-case tests

ID
Scenario
Input
Expected output
Pass criteria
E01
Duplicate HubSpot contacts sharing the same email address
Xero customer email matches two active HubSpot contacts (one a duplicate created manually).
Agent identifies the conflict, logs a warning: 'Duplicate contact detected for [email]', halts write to both records, and routes to manual review queue.
No write to either contact. Warning in log includes email address and both contact IDs.
E02
Xero transaction record missing customer email field
Xero transaction payload received with customer_email = null.
Agent logs error: 'Missing customer identifier in Xero payload'. Run halted. No HubSpot lookup attempted.
Error entry in platform log with Xero transaction ID. Zero downstream actions executed.
E03
HubSpot contact missing first_name field (personalisation gap)
HubSpot contact matched for outreach but first_name property is blank.
Outreach Agent substitutes fallback salutation ('Hi there') in email body. Email still sent. Warning logged.
Email delivered with fallback salutation. Warning present in log flagging missing first_name for the contact ID.
E04
Zendesk API unavailable for more than three retry attempts
Zendesk sandbox API returns 503 on all three retry attempts for ticket tag write.
Escalation Agent logs critical error. Slack alert still attempted via direct fallback. Error logged with Zendesk ticket ID for manual tag application.
Slack alert sent despite Zendesk failure. Critical error entry in log includes Zendesk ticket ID. No silent skip.
E05
Typeform webhook payload missing score field
Typeform webhook received with response payload that does not contain the mapped score field.
Escalation Agent logs parsing error: 'Score field absent from Typeform payload'. No Slack alert posted. Webhook payload stored in error log for inspection.
No Slack alert. Full raw webhook payload present in error log. Parsing error message includes form ID.
E06
Contact enrolled in VIP sequence twice (duplicate trigger)
VIP Tier Agent fires twice within 60 seconds for the same contact due to two near-simultaneous Xero transactions.
Outreach Agent detects existing active sequence enrolment for the contact and skips re-enrolment. Warning logged.
Single sequence enrolment entry in HubSpot. Warning in platform log referencing duplicate trigger detection.
E07
Slack alert sent to account manager with no assigned owner in HubSpot
VIP contact in HubSpot has no hubspot_owner_id set.
Escalation Agent routes Slack alert to the configured fallback channel (e.g. #vip-escalations) rather than a named user DM. Warning logged noting missing owner.
Slack message present in fallback channel. Warning in log includes contact ID and notes missing owner assignment.
E08
Survey alert threshold set to 0 (misconfiguration)
Typeform response received with score = 5. Alert threshold configured as 0 in the automation platform.
Escalation Agent does not post a Slack alert (score above threshold of 0). No false positive alert generated.
Zero Slack alerts posted for scores above the configured threshold value, regardless of how low that value is set.
Test and QA PlanPage 3 of 4
FS-DOC-06Quality

04Phase 3 — end-to-end production test

Important before running Phase 3: use a designated internal test contact only. Create a test contact record in HubSpot using an internal team email address (e.g. test-vip@[YourCompany.com]) that is clearly labelled 'QA TEST: DO NOT CONTACT'. Ensure the Xero test transaction is created against an internal account or a clearly marked test organisation. After Phase 3 is complete and sign-off is recorded, void the test Zendesk ticket, delete or archive the test HubSpot contact, remove the test from any active sequences, and confirm no real customer has received any communication originating from the test run. FullSpec will confirm each of these cleanup steps before the process is declared live.
ID
Scenario
Input
Expected output
Pass criteria
T23
Production trigger: internal test contact crosses VIP threshold in Xero
Xero production transaction logged against internal test organisation bringing cumulative spend above the Gold threshold. Contact email matches HubSpot production contact tagged 'QA TEST'.
VIP Tier Agent fires in production. HubSpot contact updated: vip_tier = 'Gold', vip_qualification_date = today, tier_changed = true. Platform run log entry created.
HubSpot contact properties written correctly in production portal. Run log entry timestamped and contains correct Xero transaction reference.
T24
Production outreach: tier-up email delivered and timeline logged
tier_changed = true on test contact. VIP Outreach Agent fires.
Personalised tier-up email delivered to internal test inbox via production Gmail account. HubSpot production timeline shows 'Email sent: VIP Gold welcome'. Contact enrolled in Gold sequence.
Email present in internal test inbox with correct personalisation. HubSpot timeline entry exists. Sequence enrolment visible under contact record.
T25
Production escalation: Zendesk ticket tagged and Slack alert delivered
New Zendesk production ticket submitted using internal test email. Contact matched as Gold VIP in HubSpot production.
Zendesk production ticket tagged 'vip-priority'. Slack alert posted in production account manager channel with customer name, tier, ticket ID, and HubSpot link.
Tag visible on Zendesk production ticket. Slack message present in correct channel. HubSpot link resolves to correct test contact record.
T26
Production error log verification
Review platform run logs for T23, T24, and T25 executions.
All three run logs present. No unhandled exceptions. Execution times within acceptable bounds (Tier Agent under 30 seconds, Outreach Agent under 45 seconds, Escalation Agent under 20 seconds).
All run logs accessible. Zero unhandled errors. Execution times within stated bounds for all three agents.
T27
Process owner review and approval
Process owner (Account Manager or Operations Lead) reviews production outputs from T23 through T26: HubSpot contact record, sent email, Zendesk ticket tag, Slack alert, and platform run logs.
Process owner confirms all outputs are correct, data is accurate, and the automation behaves as specified. Approval is recorded in the FullSpec confirmation log with the reviewer's name, role, and timestamp. Test contact record is then voided.
Process owner approval recorded in FullSpec confirmation log. Test contact voided. No separate sign-off block required.
Once T27 is recorded in the FullSpec confirmation log, the VIP Customer Management automation is cleared for go-live. The FullSpec team will notify your team at support@gofullspec.com with the confirmed go-live date and hand over the SOP and Runbook. Any issues identified after go-live should be reported to support@gofullspec.com with the platform run ID for fastest resolution.
Test and QA PlanPage 4 of 4

More documents for this process

Every document generated for VIP Customer Management.

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