FS-DOC-06Quality
Test and QA Plan
Sales Pipeline Management
[YourCompany.com] · Sales Department · Prepared by FullSpec · [Today's Date]
This document defines the complete testing strategy for the Sales Pipeline Management automation, covering all three agents: Pipeline Admin Agent, Deal Health Monitor, and Pipeline Reporting Agent. Testing runs in three sequential phases: unit tests in a sandbox environment, integration and edge-case tests against connected sandboxes, and a final end-to-end production run. The FullSpec team executes Phases 1 and 2 independently; the process owner joins Phase 3 to confirm real-world behaviour and record approval. No phase begins until the previous phase has fully passed with zero outstanding failures.
01Testing approach
Testing is structured across three phases that must be completed in sequence. Each phase has a defined scope, environment rule, credential policy, and a named pass condition tied to the test-case IDs in this document. A phase is considered passed only when every test case in that phase has a recorded Pass result and no blocker or critical issues remain open. The FullSpec team runs Phases 1 and 2 in full. The process owner joins the FullSpec team for Phase 3 to validate production behaviour and record sign-off.
1Phase 1: Unit Testing
Each agent tested in isolation before any cross-agent handoff is attempted
Scope
Individual agent logic: trigger conditions, field validation, conditional branching, and single-tool outputs for Pipeline Admin Agent, Deal Health Monitor, and Pipeline Reporting Agent.
Environment
HubSpot sandbox account; Gmail test account; Slack test workspace; Google Sheets test spreadsheet. No production credentials or live deal data.
Credential rule
Sandbox credentials only. Production API keys, OAuth tokens, and rep Gmail accounts must not be loaded at this phase.
Pass condition
All cases T01 through T15 return an explicit Pass result. No blocker-severity failures remain open.
Who runs it
FullSpec team only.
2Phase 2: Integration and Edge-Case Testing
Agent handoffs and failure modes tested across connected sandbox tools
Scope
Cross-agent data handoffs, tool-to-tool message passing, and a full suite of edge-case scenarios including duplicate records, missing required fields, tool unavailability, and human-timeout paths.
Environment
All sandbox tools connected in the automation platform's staging workspace. Data flows end-to-end through the sandbox stack only.
Credential rule
Sandbox credentials only. Integration tokens scoped to sandbox workspaces. No production Slack channels, Gmail accounts, or HubSpot pipelines.
Pass condition
All cases T16 through T22 and E01 through E07 return an explicit Pass result. Edge-case error handling routes correctly in every scenario.
Who runs it
FullSpec team only.
3Phase 3: End-to-End Production Test
Full live-environment run with process owner present
Scope
Complete production pipeline traced from deal creation through stall detection, email send, and daily report refresh. Error log verification and owner approval recorded.
Environment
Production HubSpot pipeline, live rep Gmail accounts (send-on-behalf), production Slack channels, and live Google Sheets pipeline report. A dedicated internal test deal is used throughout.
Credential rule
Production credentials used only for Phase 3 test cases. The internal test deal must be voided in HubSpot immediately after the phase completes.
Pass condition
All cases T23 through T27 return an explicit Pass result, including T27 process owner review and approval recorded in the FullSpec confirmation log.
Who runs it
FullSpec team, with the process owner present and actively reviewing outputs for T25 through T27.
Test and QA PlanPage 1 of 4
FS-DOC-06Quality
02Phase 1 — unit test cases
Sandbox credentials only. Before running any Phase 1 test case, confirm that the automation platform workspace is pointed at the HubSpot sandbox, the Gmail test account, the Slack test workspace, and the Google Sheets test spreadsheet. Do not load production API keys or OAuth tokens at this stage. Any test that inadvertently touches a production system must be voided immediately and the credential breach logged.
Pipeline Admin Agent — unit tests (T01 to T06)
ID
Scenario
Input
Expected Output
Pass Criteria
T01
Happy path: new deal created via HubSpot form
Deal record with all required fields: owner unset, stage = New, value = $8,000, close date present
Owner auto-assigned per territory rules; stage confirmed as New; follow-up task created with correct due date; intro email sent from rep Gmail
HubSpot deal record shows correct owner and stage; task visible in rep task queue; Gmail sandbox shows sent email with correct template and merged prospect name
T02
Deal created via Calendly booking trigger
Calendly webhook payload with invitee email, meeting time, and event type matching a configured pipeline stage
New HubSpot deal created; owner assigned; stage-appropriate email sent; follow-up task created
Deal record created in HubSpot sandbox within 60 seconds of webhook receipt; all four output conditions met
T03
Stage change triggers correct email template
Existing deal moved from Proposal to Negotiation stage in HubSpot
Negotiation-stage email sent from rep Gmail using the correct template; deal record updated with stage change timestamp
Email subject and body match the Negotiation template; no Intro or Proposal template is sent; HubSpot activity log shows stage change event
T04
Missing required field: deal value absent
Deal created with no value field populated
Agent flags the record; deal is not auto-assigned; error logged; no email sent; alert raised for manual review
Automation platform error log contains a field-validation entry for the deal ID; no outbound email appears in Gmail sandbox; HubSpot deal remains unassigned
T05
Missing required field: close date absent
Deal created with value and owner set but no close date
Agent flags missing close date; follow-up task is not created; error entry written to log
Error log contains close-date-missing entry; no task appears in HubSpot for this deal; deal owner receives no email
T06
No matching territory rule for deal owner assignment
Deal created with a contact whose region does not match any configured territory rule
Agent cannot auto-assign; deal flagged for manual assignment; error logged with deal ID and unmatched region value
HubSpot deal remains unassigned; error log entry present with region field value; no email sent; no task created
Deal Health Monitor — unit tests (T07 to T11)
ID
Scenario
Input
Expected Output
Pass Criteria
T07
Happy path: deal inactive for exactly 5 business days
HubSpot sandbox deal with last activity timestamp = 5 business days ago; no notes, calls, or meetings logged since
Slack alert sent to deal owner and manager in test workspace; alert includes deal name, days stalled (5), and a direct HubSpot sandbox deal link
Slack test workspace shows alert message with correct deal name, stall count, and clickable deal URL; message appears within the scheduled daily run window
T08
Deal active at 4 business days: no alert expected
HubSpot sandbox deal with last activity = 4 business days ago
No Slack alert sent; deal remains in monitored queue
Slack test workspace shows no new message for this deal; automation platform run log shows deal evaluated and skipped
T09
Immediate alert fires when inactivity threshold crossed mid-day
A deal that was last active exactly 5 business days ago, evaluated on an event-driven check rather than the scheduled daily run
Slack alert fires within 15 minutes of threshold being crossed
Slack test workspace message timestamp is within 15 minutes of the simulated activity-expiry time
T10
Stall alert fires but Slack workspace is unreachable
Deal meets 5-day inactivity threshold; Slack API returns a 503 error on first attempt
Agent retries up to 3 times with exponential backoff; if all retries fail, error is logged and a fallback email notification is written to the error log
Automation platform log shows 3 retry attempts; error entry present; no unhandled exception; fallback log entry visible
T11
Deal owner field is empty when stall condition is met
HubSpot sandbox deal meets 5-day threshold but owner field is blank
Alert is routed to the sales manager only; error log notes missing owner; alert includes a prompt to assign the deal
Slack test workspace shows alert addressed to manager only; message body contains missing-owner flag; no null-address error thrown
Pipeline Reporting Agent — unit tests (T12 to T15)
ID
Scenario
Input
Expected Output
Pass Criteria
T12
Happy path: daily scheduled report refresh
HubSpot sandbox contains 10 open deals across 4 pipeline stages with varied values and activity dates
Google Sheets test spreadsheet row updated for each deal: stage, value, days in stage, last activity date all written correctly
Sheets test file shows 10 rows updated; values match HubSpot sandbox data exactly; timestamp column reflects the run time
T13
Deal marked Won triggers immediate close-reason log
HubSpot sandbox deal status changed to Won with close reason = 'Price and fit'
Google Sheets close-reason log tab receives a new entry: deal name, outcome = Won, close reason, deal value, and date
Sheets test file close-reason tab contains the new row within 60 seconds of the HubSpot status change; all five fields populated correctly
T14
Deal marked Lost with blank close reason
HubSpot sandbox deal marked Lost; close reason field left empty
Sheets close-reason log entry written with outcome = Lost and close reason = 'Not provided'; error flag column set to True
Sheets entry present; close-reason cell reads 'Not provided'; error flag = True; no workflow exception thrown
T15
HubSpot API returns empty deal list on scheduled run
Scheduled daily run fires but HubSpot sandbox returns an empty deals array (simulated by temporarily clearing sandbox data)
Agent detects empty response; skips Sheets write; logs a warning entry; does not overwrite or clear existing Sheets rows
Automation platform log shows empty-response warning; Sheets test file is unchanged; no rows deleted or blanked
Test and QA PlanPage 2 of 4
FS-DOC-06Quality
03Phase 2 — integration and edge case tests
Integration test cases — agent handoffs (T16 to T22)
ID
Scenario
Agents / Tools Involved
Expected Behaviour
Pass Criteria
T16
Pipeline Admin Agent completes and Deal Health Monitor begins monitoring the new deal
Pipeline Admin Agent to Deal Health Monitor via HubSpot
After Pipeline Admin Agent writes the deal record with owner and stage, Deal Health Monitor picks up the deal in its next evaluation cycle and begins tracking inactivity from the creation timestamp
Deal Health Monitor evaluation log shows the deal ID entered the monitoring queue within one scheduled cycle of Pipeline Admin Agent completion
T17
Stage change by Pipeline Admin Agent resets Deal Health Monitor inactivity clock
Pipeline Admin Agent to Deal Health Monitor via HubSpot activity log
When Pipeline Admin Agent updates a deal's stage, the activity timestamp in HubSpot is refreshed, causing Deal Health Monitor to reset its stall counter for that deal
After a stage update, Deal Health Monitor evaluation log shows stall counter reset to 0 for the affected deal; no false alert is sent
T18
Deal Health Monitor stall alert fires and Pipeline Reporting Agent reflects the stall in the same day's report
Deal Health Monitor to Slack; Pipeline Reporting Agent to Google Sheets
Stall alert sent to Slack; on the same daily reporting cycle, the Google Sheets report shows the deal's 'days in stage' value has exceeded the stall threshold
Slack test workspace contains the alert; Sheets test file for the same deal shows days-in-stage value equal to or greater than 5
T19
Won deal: Pipeline Admin Agent stage update triggers Pipeline Reporting Agent close log
Pipeline Admin Agent to HubSpot; Pipeline Reporting Agent from HubSpot to Google Sheets
Pipeline Admin Agent updates deal stage to Won; Pipeline Reporting Agent detects the status change and writes the close-reason log entry immediately rather than waiting for the daily schedule
Sheets close-reason log entry appears within 60 seconds of deal being marked Won; entry contains all required fields
T20
Calendly booking creates deal and full Pipeline Admin Agent flow executes end to end in sandbox
Calendly webhook to Pipeline Admin Agent to HubSpot, Gmail, HubSpot tasks
Calendly sandbox webhook fires; Pipeline Admin Agent creates the deal, assigns owner, sends email, and creates task in sequence without manual input
All four Pipeline Admin Agent outputs present in sandbox tools within 90 seconds of webhook receipt; no steps skipped
T21
Daily report run executes correctly when multiple deals change stage on the same day
Pipeline Reporting Agent to HubSpot (multiple deals) to Google Sheets
Five sandbox deals have their stages changed on the same day; daily report run updates all five rows in Sheets correctly without overwriting unrelated rows
Sheets test file shows exactly five updated rows matching the five changed deals; all other rows unchanged; no duplicate rows created
T22
Gmail send-on-behalf routes email from correct rep account based on deal owner
Pipeline Admin Agent to Gmail (two different rep sandbox accounts)
Two deals are assigned to different owners; Pipeline Admin Agent sends stage emails from each owner's sandbox Gmail account respectively
Gmail sandbox for Rep A shows the email for Rep A's deal; Gmail sandbox for Rep B shows the email for Rep B's deal; no cross-routing occurs
Edge-case test cases (E01 to E07)
ID
Scenario
Condition
Expected Handling
Pass Criteria
E01
Duplicate deal record created for the same contact within 10 minutes
Two HubSpot sandbox deal records with identical contact email and deal name submitted within a 10-minute window
Agent detects duplicate on the second submission using contact email and deal name match; second record is flagged and held; error log entry created; first record continues through the flow normally
Only one deal proceeds to owner assignment and email send; second deal shows a 'possible duplicate' flag in HubSpot; error log contains both deal IDs
E02
Required HubSpot deal fields missing on a Calendly-originated deal
Calendly webhook payload arrives with invitee email present but no deal value or close date mappable from the payload
Pipeline Admin Agent creates the deal record with available fields; missing fields are flagged; a task is created in HubSpot prompting the rep to complete the record; no email is sent until fields are present
HubSpot sandbox deal created in an 'incomplete' state; task visible in rep queue; no outbound email in Gmail sandbox; error log entry present
E03
HubSpot API rate limit reached during a bulk stage-update event
25 deals change stage simultaneously, exceeding the HubSpot sandbox API rate limit of 10 requests per second
Orchestration layer queues requests, applies rate-limit-compliant pacing, and processes all 25 deals in batches; no deal is dropped; all are processed within 3 minutes
All 25 deals updated in HubSpot sandbox; Sheets test file reflects all 25; automation platform log shows batched execution with no 429 errors surfacing as failures
E04
Slack API unavailable during scheduled stall alert run
Deal Health Monitor fires with 3 stalled deals; Slack sandbox returns a 503 on all attempts
Agent retries each alert up to 3 times; after exhausting retries, all 3 alerts are written to the error log with deal IDs; no unhandled exception; alerts re-queued for next evaluation cycle
Error log contains entries for all 3 deal IDs; no Slack messages appear; automation platform shows a handled failure state, not a crash; re-queue flag set
E05
Google Sheets write fails due to permission error during daily report run
Pipeline Reporting Agent attempts to write to Sheets test file but the service account token has expired
Agent detects 401 auth error; halts write; logs the error with token expiry detail; sends an internal alert to the FullSpec monitoring webhook; does not overwrite or corrupt existing Sheets data
Sheets test file unchanged; error log contains 401 entry with timestamp; FullSpec monitoring webhook receives the alert; existing report data intact
E06
Deal stage moved backward in HubSpot (regression scenario)
A deal is manually moved from Negotiation back to Proposal stage by the rep
Pipeline Admin Agent detects the backward stage move; sends the Proposal-stage email rather than re-sending the Negotiation email; logs the regression event; does not create a duplicate follow-up task if one already exists for this stage
Gmail sandbox shows Proposal-stage email sent; no Negotiation email re-sent; HubSpot task list shows no duplicate tasks; event log entry present flagging the regression
E07
Human timeout on manual note-logging step: notes not entered within 48 hours
A deal progresses through automated steps but the rep does not log call notes in HubSpot within 48 hours of the follow-up task due date
Deal Health Monitor detects the overdue task alongside inactivity; stall alert includes an additional note indicating an overdue activity-logging task; no automated action taken beyond the alert
Slack test workspace alert message body contains both the stall-day count and a reference to the overdue task; no automated note is fabricated or inserted; error log entry present
Test and QA PlanPage 3 of 4
FS-DOC-06Quality
04Phase 3 — end-to-end production test
Important before running Phase 3: use a dedicated internal test address (e.g. test-deal-qa@[YourCompany.com]) as the contact email for all Phase 3 deal records. Ensure the test deal name is prefixed with '[QA TEST]' so it is immediately identifiable in HubSpot. All Gmail emails will be sent to the internal test address only. The test deal record, associated tasks, Sheets rows, Slack alerts, and close-reason log entries must be voided and deleted in HubSpot and Google Sheets immediately after Phase 3 is signed off. The FullSpec team will confirm deletion in the QA log. Do not use a real prospect's contact details for any Phase 3 test.
ID
Scenario
Steps Traced
Expected Production Outcome
Pass Criteria
T23
Full production run: new deal created via HubSpot form and all Pipeline Admin Agent outputs confirmed in live tools
Deal creation in production HubSpot, owner auto-assignment, Gmail send-on-behalf, follow-up task creation
Deal record created with correct owner and stage; stage-appropriate intro email arrives at internal test address from the assigned rep's Gmail account within 5 minutes; follow-up task appears in the rep's live HubSpot task queue with the correct due date
Production HubSpot shows deal with assigned owner and stage; rep Gmail sent-items contains the email; task visible in live HubSpot; email received at internal test address with correct merged fields
T24
Deal Health Monitor fires in production: stall alert delivered to live Slack channel
5-business-day inactivity threshold met on the QA test deal; Slack alert sent to production deal-owner channel
Slack alert appears in the designated production sales channel (or a QA-specific channel agreed before the test); alert contains deal name '[QA TEST]', days stalled, and a live HubSpot deal link
Slack production workspace shows the alert message within the scheduled daily run window; all three alert fields correct; deal link resolves to the correct HubSpot record
T25
Pipeline Reporting Agent: daily report row and close-reason log written to live Google Sheets
Scheduled daily run and immediate close-trigger on QA test deal marked Won
Google Sheets live pipeline report contains a row for the QA test deal with correct stage, value, days in stage, and last activity; close-reason log tab contains a new entry with outcome = Won and close reason entered during the test
Live Sheets pipeline report row present and accurate; close-reason log entry present with all required fields; no existing report rows modified; timestamp reflects the production run time
T26
Error log verification: all three agents write structured error entries under simulated fault conditions
FullSpec team triggers a controlled API timeout on HubSpot during a scheduled run; verifies error log output
Automation platform error log contains a structured entry for each agent that attempted a call during the fault window: agent name, timestamp, error code, deal or record ID, and retry count
Error log accessible in the automation platform dashboard; entries present for at least the Pipeline Admin Agent and Pipeline Reporting Agent; log format is structured (JSON or equivalent); no silent failures
T27
Process owner review and approval: final Phase 3 sign-off recorded in FullSpec confirmation log
Process owner reviews outputs from T23 through T26 with the FullSpec team present; confirms all outputs match expected behaviour; approves the automation for live operation
Process owner verbally and digitally confirms that the deal record, Gmail email, Slack alert, Google Sheets entries, and error log all match the documented expected outcomes. Approval is recorded by the FullSpec team in the QA confirmation log at support@gofullspec.com.
FullSpec QA confirmation log contains a timestamped entry recording the process owner's name, the date of approval, and a pass status for T23 through T27. The QA test deal record, tasks, Sheets rows, and Slack messages are voided and deletion is confirmed in the same log entry.
Once T27 is recorded as passed and deletion of all test data is confirmed, the automation is cleared for live operation. The FullSpec team will notify the process owner at the contact email on file and update the project status to Live. For any post-launch issues, contact support@gofullspec.com.
Test and QA PlanPage 4 of 4