Back to Compliance Deadline Tracking

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

Compliance Deadline Tracking

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

This document defines the full quality assurance programme for the Compliance Deadline Tracking automation. It covers every test case across three sequential phases: unit testing of individual agents, integration and edge-case testing of agent handoffs and failure modes, and a final end-to-end production run. The FullSpec team runs Phases 1 and 2 entirely in sandbox environments. The process owner joins Phase 3. No phase begins until the previous phase has fully passed. Every test case carries a unique ID that is referenced in the FullSpec delivery confirmation.

01Testing approach

Testing is structured in three phases that run in strict sequence. No phase begins until all test cases in the previous phase have achieved a passing status. This sequencing ensures that agent-level defects are resolved before cross-agent handoffs are validated, and that integration issues are resolved before production data is touched. The FullSpec team owns execution for Phases 1 and 2. The process owner joins the FullSpec team for Phase 3 to confirm that outputs match business expectations and to provide formal sign-off.

1
Phase 1: Unit Testing
Each agent tested in isolation against sandbox credentials
Scope
Individual agent logic: Deadline Monitor Agent, Escalation Agent, Completion and Reporting Agent. No cross-agent handoffs tested in this phase.
Environment
Sandbox only. All tool connections use sandbox or test accounts. No production data, no live Slack channels, no real Gmail recipients.
Credential rule
Sandbox Google Sheets workbook, sandbox Gmail account (e.g. qa-test@[YourCompany.com]), sandbox Slack workspace, sandbox Notion workspace. No production credentials permitted.
Pass condition
All test cases T01 through T15 return the expected output with no unhandled errors. Any failure blocks progression to Phase 2.
Who runs it
FullSpec team only.
2
Phase 2: Integration and Edge Case Testing
Agent handoffs and failure scenarios validated in sandbox
Scope
End-to-end agent handoff sequences, acknowledgement link behaviour, Slack escalation routing, Notion evidence logging, and weekly digest generation. Plus a dedicated edge-case suite covering duplicates, missing data, tool unavailability, and human timeout scenarios.
Environment
Sandbox only. Full stack of sandbox-connected tools as per Phase 1. The acknowledgement endpoint is tested using a staging URL.
Credential rule
Same sandbox credential set as Phase 1. Production Slack webhook and Gmail SMTP must not be activated until Phase 3 is formally approved.
Pass condition
All integration test cases T16 through T24 and all edge cases E01 through E08 pass. Any failure is logged, fixed, and re-tested before Phase 3 begins.
Who runs it
FullSpec team only.
3
Phase 3: End-to-End Production Test
Live environment, process owner participates and approves
Scope
One full production cycle: intake submission, reminder dispatch at each trigger window, escalation via live Slack, completion confirmation, Notion evidence logging, and Monday digest email. Error log verification is included.
Environment
Production. Live Google Sheets compliance register, live Gmail send account, live Slack workspace (test channel only), live Notion workspace. All test records voided after sign-off.
Credential rule
Production credentials active. Test record must use an internal test email address. The register row created during Phase 3 must be deleted or clearly flagged as TEST after the process owner approves.
Pass condition
All production test cases T25 through T29 pass, error logs are clean, and the process owner formally approves the run. Owner approval is recorded in the FullSpec delivery confirmation (test case T29).
Who runs it
FullSpec team executes; process owner reviews outputs and records approval for T29.
Test and QA PlanPage 1 of 4
FS-DOC-06Quality

02Phase 1 — unit test cases

Sandbox credentials only. Do not connect any production Google account, Gmail send address, Slack workspace, or Notion database during Phase 1. All test data is synthetic. If a credential error causes a production tool to be contacted inadvertently, halt testing immediately and notify the FullSpec team at support@gofullspec.com.

Deadline Monitor Agent — complexity: Moderate. Estimated build time: 14 hours. Test cases T01 through T06 cover the intake-to-reminder dispatch path, including data validation and reminder date calculation.

ID
Scenario
Input
Expected output
Pass criteria
T01
Happy path: valid new obligation submitted
Google Form payload: obligation name, deadline date (45 days ahead), owner email, category = Licence Renewal, action description populated
Row written to sandbox Google Sheets with status Open; reminder dates calculated as deadline minus 30, minus 14, minus 3 days; Google Calendar event created; 30-day reminder email queued in sandbox Gmail
All four outputs present; reminder dates arithmetically correct; no errors in execution log
T02
Missing owner email field
Form payload as T01 but owner_email field is blank
Agent halts; row written to Sheets with status Validation Error; no calendar event or email created; error logged with field reference
Sheets row shows Validation Error; execution log contains field-level error message; no downstream actions triggered
T03
Deadline date in the past
Form payload with deadline date set to yesterday
Agent halts; row written to Sheets with status Invalid Date; no calendar event or email; error logged
Row status is Invalid Date; no calendar event exists in sandbox; error log entry present
T04
Deadline within 3-day window only
Form payload with deadline date 2 days ahead
Only the 3-day reminder is queued (30-day and 14-day windows already passed); calendar event created for deadline date; row status Open
Exactly one reminder queued; reminder subject line references 3-day window; no errors
T05
Daily scheduled check surfaces item entering 14-day window
Existing Sheets row with deadline 14 days away, status Open, 30-day reminder already sent flag true
14-day reminder email queued to owner; Sheets row updated with 14-day reminder sent timestamp
Email queued with correct template; timestamp field populated; 30-day reminder not re-sent
T06
Google Sheets write failure (simulated 503)
Valid form payload; Sheets API returns 503 on write attempt
Agent retries up to 3 times with exponential backoff; if all retries fail, error is logged and no downstream actions triggered
Retry attempts visible in execution log; final error entry present; no calendar event or email created

Escalation Agent — complexity: Moderate. Estimated build time: 12 hours. Test cases T07 through T11 cover the acknowledgement monitoring and Slack escalation path.

ID
Scenario
Input
Expected output
Pass criteria
T07
Happy path: 48 hours elapsed, no acknowledgement
Sheets row with reminder sent timestamp 49 hours ago, acknowledged flag false
Slack DM sent to owner in sandbox workspace; channel notification posted to #compliance-test; Sheets row status updated to Escalated
Both Slack messages delivered; row status is Escalated; escalation timestamp populated
T08
Acknowledgement received before 48-hour window
Sheets row with reminder sent 20 hours ago, acknowledged flag true (set by acknowledgement link click)
No Slack message sent; agent takes no action; row remains with acknowledged flag true
No Slack message appears in sandbox; execution log shows skip condition met
T09
Slack API unavailable (simulated timeout)
Valid escalation trigger; Slack API returns timeout on both DM and channel post attempts
Agent logs Slack delivery failure; fallback Gmail alert sent to compliance manager sandbox address; row status set to Escalation Failed
Fallback email present in sandbox Gmail inbox; row status is Escalation Failed; error logged
T10
Second escalation: first Slack alert already sent, still no acknowledgement after further 24 hours
Sheets row status Escalated, escalation timestamp 25 hours ago, acknowledged flag still false
Second Slack DM sent with elevated urgency label; compliance channel re-notified; row updated with second escalation timestamp
Second DM present; message body differs from first (urgency label present); second escalation timestamp recorded
T11
Owner not found in Slack (invalid Slack user ID)
Sheets row with escalation trigger; owner Slack user ID field empty or invalid
DM attempt fails gracefully; channel notification still sent; error logged with owner identifier; row status Escalation Partial
Channel message delivered; DM absent; error log references missing Slack user ID; row status is Escalation Partial

Completion and Reporting Agent — complexity: Moderate. Estimated build time: 12 hours. Test cases T12 through T15 cover completion confirmation, Notion logging, and the weekly digest.

ID
Scenario
Input
Expected output
Pass criteria
T12
Happy path: owner submits completion confirmation via acknowledgement link
Acknowledgement link clicked; form payload includes obligation ID, completion date, and optional attached evidence filename
Sheets row status updated to Complete; Notion evidence log entry created with timestamped record; no further reminders queued
Sheets row status is Complete; Notion entry exists with correct obligation ID, completion date, and evidence reference; no additional reminder emails queued
T13
Completion confirmation with no evidence attachment
Acknowledgement link payload has obligation ID and completion date but evidence filename is null
Sheets row marked Complete; Notion entry created noting no evidence attached; no error raised
Row status Complete; Notion note field reads 'No evidence provided'; no error in execution log
T14
Notion API write failure on evidence log (simulated 429 rate limit)
Valid completion payload; Notion API returns 429 on first write attempt
Agent retries after 60 seconds; if retry succeeds, Notion entry created; Sheets row still updated to Complete regardless of Notion retry outcome; error logged if Notion write ultimately fails
Sheets row status is Complete in all cases; Notion retry behaviour visible in log; if retry succeeds, entry present; if not, error logged with obligation ID for manual follow-up
T15
Weekly Monday digest generation
Monday 07:00 scheduled trigger fires; sandbox Sheets register contains 3 Open, 1 Overdue, 2 Complete rows
Digest email sent to compliance manager sandbox address; email body lists correct item counts per status; subject line includes current date
Email delivered to sandbox inbox; item counts match register state; date in subject line is correct; no formatting errors in email body
Test and QA PlanPage 2 of 4
FS-DOC-06Quality

03Phase 2 — integration and edge case tests

Integration tests validate that data flows correctly across agent boundaries and that the full reminder-to-completion cycle operates without manual intervention. IDs continue from Phase 1.

ID
Scenario
Input
Expected output
Pass criteria
T16
Full handoff: Deadline Monitor to Escalation Agent (no acknowledgement path)
New form submission processed by Deadline Monitor Agent; 30-day reminder sent; 48 hours simulated with no acknowledgement
Escalation Agent picks up the unacknowledged row automatically; Slack DM and channel alert sent; row status transitions Open to Escalated without manual intervention
Status transitions traceable in Sheets audit column; both Slack messages present; no manual trigger required
T17
Full handoff: Escalation Agent to Completion and Reporting Agent (acknowledged after escalation)
Row in Escalated status; owner clicks acknowledgement link post-escalation
Completion and Reporting Agent processes confirmation; Sheets row updated to Complete; Notion entry created; no further Slack alerts sent
No additional Slack messages after acknowledgement; row status is Complete; Notion entry timestamped after escalation event
T18
Tiered reminder sequence: all three windows fire in order
Single register row with deadline 35 days ahead; scheduled triggers advance through 30-day, 14-day, and 3-day windows
Three distinct reminder emails sent to owner sandbox address at correct intervals; each email references the correct window in subject and body; row updated after each send
Three emails in sandbox inbox; timestamps reflect correct intervals; email subject lines reference 30-day, 14-day, and 3-day respectively
T19
Google Calendar event creation verified against Sheets record
Valid intake submission processed by Deadline Monitor Agent
Calendar event title matches obligation name in Sheets; event date matches deadline date; event description contains link to Sheets row
Calendar event exists in sandbox calendar; title, date, and description verified against Sheets row data
T20
Acknowledgement link token validated and rejected for replay
Owner clicks acknowledgement link once successfully; same URL clicked again five minutes later
First click: acknowledgement recorded, row updated. Second click: token rejected with already-used response; no duplicate Sheets update
Second click returns error or already-acknowledged message; Sheets row shows single acknowledgement timestamp; no duplicate Notion entry created
T21
Legal manager manual review step triggered for high-risk item
Escalated row with category = Regulatory Filing (high-risk category); escalation alert sent
Alert to compliance channel includes high-risk flag; register row is not auto-closed; Completion and Reporting Agent waits for manager confirmation before updating status
Channel message contains high-risk label; row status remains Escalated until manager input is recorded; auto-completion is blocked
T22
Weekly digest includes overdue item count correctly
Digest trigger fires; register contains 1 item with deadline passed and status still Open
Digest email body includes overdue section; item listed with days overdue count; compliance manager sandbox address receives the email
Overdue item present in digest; days overdue count arithmetically correct; no items missing from digest across all status categories
T23
Multiple obligations processed simultaneously without collision
Five form submissions arrive within a 60-second window, each with different deadlines and owners
All five rows written to Sheets correctly; no row overwrites another; five distinct calendar events created; five reminder schedules queued independently
Sheets contains exactly five new rows with unique IDs; five calendar events with distinct titles; five reminder queues with no cross-contamination
T24
Completion and Reporting Agent: Notion entry links back to correct Sheets row
Completion confirmation received for obligation ID 00042
Notion entry contains obligation ID 00042 and a hyperlink to the corresponding Sheets row
Notion entry obligation_id field equals 00042; hyperlink in Notion resolves to correct Sheets row in sandbox

Edge case tests cover the failure modes and boundary conditions most likely to occur in production. These run in the same sandbox environment as the integration tests above.

ID
Scenario
Input
Expected output
Pass criteria
E01
Duplicate submission: same obligation ID submitted twice
Identical form payload submitted twice within 10 minutes (same obligation name, deadline, and owner)
Second submission detected as duplicate; second row not written to Sheets; duplicate flag logged; submitter receives a duplicate notice in sandbox email
Sheets contains only one row for the obligation; duplicate log entry present; duplicate notice email in sandbox inbox
E02
Missing deadline date field entirely
Form payload with deadline_date field absent (not blank, fully missing)
Deadline Monitor Agent raises a schema validation error; row not written; error logged with field reference
No Sheets row created; error log references missing deadline_date field; no calendar event or email queued
E03
Owner email address is malformed
Form payload with owner_email = 'not-an-email'
Validation step rejects the entry; row written to Sheets with status Validation Error; no Gmail send attempted
Row status is Validation Error; execution log records email format rejection; no email delivery attempted
E04
Gmail API unavailable during reminder dispatch (simulated outage)
Reminder trigger fires; Gmail API returns 503 on send attempt
Agent retries 3 times with backoff; if all fail, reminder is queued for retry in 1 hour; Sheets row updated with Reminder Failed status and retry timestamp
Row shows Reminder Failed; retry timestamp present; no email in sandbox inbox; retry attempt succeeds on next scheduled check
E05
Human timeout: owner never acknowledges and never completes, deadline passes
Register row with deadline now passed, status still Escalated, acknowledged flag false
Overdue alert escalated to compliance manager; row status updated to Overdue; item included in next Monday digest under overdue section with days overdue count
Row status is Overdue; manager sandbox inbox receives overdue alert; item appears correctly in next digest run
E06
Slack workspace unavailable for full 24-hour period
Escalation Agent triggers during Slack outage; all Slack API calls return 503
All Slack attempts fail gracefully after retry; fallback Gmail alert sent to compliance manager; row status set to Escalation Failed; FullSpec error log entry created
No unhandled exceptions; fallback email present in sandbox inbox; row status is Escalation Failed; error log details Slack unavailability
E07
Notion workspace at capacity or API key revoked
Completion confirmation triggers Notion write; Notion API returns 401 Unauthorized
Agent logs Notion authentication error; Sheets row still updated to Complete; error surfaced in FullSpec monitoring dashboard with obligation ID for manual evidence filing
Sheets row is Complete; Notion entry absent; error log references 401 and obligation ID; no crash or unhandled exception
E08
Obligation category not in approved list (free-text entry)
Form payload with category = 'Random Text' (not in the predefined category picklist)
Validation step flags unknown category; row written to Sheets with status Needs Review; compliance manager sandbox address receives a notification to correct the category
Row status is Needs Review; notification email in sandbox inbox; no reminders dispatched until category is corrected and row is re-validated
Test and QA PlanPage 3 of 4
FS-DOC-06Quality

04Phase 3 — end-to-end production test

Important before running Phase 3: Use an internal test email address (for example qa-live@[YourCompany.com]) as the responsible owner for all production test records. Do not use the name or email of a real compliance obligation. After the process owner provides approval in T29, the FullSpec team will delete or clearly mark as TEST every row, calendar event, Slack message, Notion entry, and digest email created during this phase. Do not proceed with Phase 3 until Phase 2 has fully passed and the FullSpec team has confirmed readiness in writing to support@gofullspec.com.

The following test cases cover a single complete production cycle traced from intake to digest, plus error log verification and the formal process owner approval. Test IDs continue from Phase 2.

ID
Scenario
Input
Expected output
Pass criteria
T25
Production intake: new obligation submitted and register updated
Live Google Form submission with obligation name 'QA Test Licence Renewal', deadline 35 days ahead, owner = qa-live@[YourCompany.com], category = Licence Renewal
Row appears in live Google Sheets compliance register with status Open; reminder dates calculated correctly; Google Calendar event created in production calendar assigned to qa-live@; 30-day reminder email delivered to qa-live@ inbox
Sheets row present with correct data; calendar event confirmed in production calendar; reminder email received at qa-live@ within 5 minutes of form submission; execution log clean
T26
Production escalation: 48-hour window simulated, Slack alert delivered
FullSpec team manually advances the reminder sent timestamp on the T25 row to simulate 49 hours elapsed; acknowledged flag remains false
Escalation Agent triggers; live Slack DM sent to the designated test user; #compliance-test channel receives channel notification; Sheets row status updated to Escalated
Both Slack messages appear in the live workspace within 3 minutes; row status is Escalated; escalation timestamp recorded; no errors in execution log
T27
Production completion: acknowledgement link clicked, Notion evidence log created
qa-live@ clicks the acknowledgement link in the 30-day reminder email; completion form submitted with completion date and a test PDF filename
Sheets row status updated to Complete; Notion production workspace receives a new evidence log entry with obligation ID, completion date, and evidence filename; no further reminders or Slack messages sent
Row status is Complete in live register; Notion entry exists with correct fields and timestamp; no subsequent reminder emails or Slack alerts triggered; execution log clean
T28
Production error log verification
FullSpec team reviews the automation platform execution log and any connected monitoring dashboard after T25 through T27 complete
Zero unhandled exceptions; all retry events (if any) show resolved status; no orphaned rows in Sheets; all tool API calls return 2xx status codes in final attempts
Execution log exported and reviewed; no open error entries; FullSpec team documents log review outcome in the delivery confirmation
T29
Process owner review and approval
Process owner reviews the live Google Sheets register row, the live Notion evidence entry, the Slack messages in the test channel, and the next Monday digest email (or a manually triggered test digest)
Process owner confirms that all outputs match the expected business outcomes described in the SOP, that the register reflects the correct status, and that the Notion audit trail is complete. Approval is recorded by the process owner in the FullSpec delivery confirmation document.
Process owner approval recorded in the FullSpec delivery confirmation. This constitutes formal go-live sign-off. No separate signature block is required.
After T29 approval: the FullSpec team will void all test records created during Phase 3 (Sheets row deleted, calendar event removed, Notion entry deleted, Slack messages noted as TEST in channel), and will provide the process owner with a copy of the completed test log at support@gofullspec.com.
Test and QA PlanPage 4 of 4

More documents for this process

Every document generated for Compliance Deadline Tracking.

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