Back to Contractor 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

Contractor Management Automation

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

This document defines the complete test and quality assurance plan for the Contractor Management automation, covering all three agents: Contractor Onboarding Agent, Invoice Approval and Payment Agent, and Compliance Monitor Agent. Testing runs in three sequential phases: unit, integration, and end-to-end production. No phase begins until every test case in the previous phase has achieved a passing result. The FullSpec team runs Phases 1 and 2 in full; the process owner joins Phase 3 for production validation and final sign-off.

01Testing approach

All testing follows three phases in strict sequence. No phase begins until the previous phase fully passes. Each phase targets a different layer of the system: isolated agent behaviour in Phase 1, cross-agent and tool handoff integrity in Phase 2, and full production verification in Phase 3. Phase 3 is the only phase run against live credentials and real records.

1
Phase 1: Unit Testing
Test each agent in isolation against sandbox data
Scope
Each agent tested independently: trigger parsing, field mapping, conditional logic, and output generation. No cross-agent calls.
Environment
Sandbox only. Airtable test base, Xero demo company, Slack test workspace, Google Drive test folder, Google Forms test form.
Credential rule
Sandbox credentials exclusively. No production API keys, OAuth tokens, or live Xero accounts may be used at any point in Phase 1.
Pass condition
All test cases T01 through T15 return expected outputs with no unhandled errors. Every failure mode triggers the correct exception path.
Who runs it
FullSpec team only. Process owner is not required during Phase 1.
2
Phase 2: Integration and Edge Case Testing
Test agent handoffs, tool connectivity, and exception scenarios
Scope
End-to-end agent handoffs, data passing between tools, conditional routing (approve vs. discrepancy), and edge cases including missing fields, duplicate records, and tool unavailability.
Environment
Sandbox only. All integrations connected to test instances. No production data read or written.
Credential rule
Sandbox credentials only. Integration tokens must be scoped to test workspaces and demo accounts.
Pass condition
All integration test cases T16 through T23 and edge case tests E01 through E07 pass without data loss, duplicate record creation, or unhandled errors.
Who runs it
FullSpec team only. Process owner may observe but does not validate at this stage.
3
Phase 3: End-to-End Production Test
Full production run with live credentials, traced and signed off
Scope
Complete production flow from Google Form submission through Airtable, Google Drive, Xero, and Slack. Includes invoice approval path, discrepancy flag, and a compliance expiry alert trigger.
Environment
Production. Live Airtable base, live Xero account, live Slack workspace, live Google Drive. Test records must be voided or deleted after the run.
Credential rule
Production credentials authorised by the Finance Manager (Xero OAuth) and Operations Manager (Airtable, Google Drive). FullSpec does not retain credentials after go-live.
Pass condition
All production test cases T24 through T28 pass. Process owner confirms the run and records sign-off within the FullSpec confirmation workflow.
Who runs it
FullSpec team executes; process owner (Operations Manager) reviews outputs and signs off. Finance Manager validates the Xero bill record.
Test and QA PlanPage 1 of 4
FS-DOC-06Quality

02Phase 1 — unit test cases

All Phase 1 tests must be run against sandbox credentials only. Do not connect a live Xero account, production Airtable base, or real Slack workspace at any point during this phase. If a test inadvertently writes to a production system, halt testing immediately and notify the FullSpec team at support@gofullspec.com.

Contractor Onboarding Agent (Estimated build time: 10 hours, Complexity: Moderate)

ID
Scenario
Input
Expected Output
Pass Criteria
T01
Happy path: complete form submission
Google Form submitted with all required fields: name, email, ABN/tax ID, bank details, agreed rate, start date, and all compliance documents attached
Airtable record created; Drive folder created and documents filed; Xero supplier created; Slack notification posted to #contractors channel
All four outputs confirmed within 60 seconds of form submission. No fields null or mismatched.
T02
Airtable field mapping: rate stored correctly
Form submission with agreed rate of $750/week
Airtable field 'Agreed Rate' = $750; Xero supplier contact note includes $750/week
Rate value exact match in both Airtable and Xero. No rounding or type conversion errors.
T03
Google Drive folder naming convention
Form submission with contractor name 'Alex Rivera' and start date '2024-05-06'
Drive folder named 'Alex Rivera - 2024-05-06' created in the /Contractors/ parent directory
Folder name matches template exactly. Documents filed inside the correct folder.
T04
Missing compliance document: no insurance certificate attached
Form submitted with all fields complete but insurance certificate field empty
Airtable record created with document status 'Pending - Insurance'; Slack alert posted to ops channel flagging missing document; Xero and Drive steps proceed
Automation does not halt. Partial record created. Missing document flag is visible in Airtable and Slack.
T05
Form submitted with blank bank details
All fields complete except bank account number left blank
Airtable record created; Xero supplier created without bank details; Slack alert flags 'Bank details missing for [contractor name]'
Xero supplier record created in incomplete state. Slack warning posted. No automation crash.
T06
Duplicate form submission: same contractor name and email
Second Google Form submission for a contractor whose email already exists in Airtable
Automation detects duplicate by email match; skips Airtable record creation; posts Slack warning 'Duplicate onboarding detected for [email]'; does not create second Xero supplier
No duplicate Airtable row. No duplicate Xero supplier. Slack warning posted.
T07
Xero API unavailable during supplier creation
Valid form submission; Xero sandbox API returns 503 for the supplier creation call
Automation logs the Xero error; marks Airtable record with status 'Xero Setup Pending'; posts Slack alert 'Xero supplier creation failed - manual action required for [name]'
Error logged. Airtable status updated. Slack alert sent. No unhandled exception in workflow.

Invoice Approval and Payment Agent (Estimated build time: 10 hours, Complexity: Moderate)

ID
Scenario
Input
Expected Output
Pass Criteria
T08
Happy path: invoice matches agreed rate, approved via Slack
Invoice received for contractor with agreed rate $750/week; invoice amount = $750; approver clicks Approve in Slack
Xero bill created against existing supplier record for $750; scheduled for next payment run; Airtable payment status updated to 'Approved'
Xero bill ID returned. Airtable status = 'Approved'. Payment run date populated. All within 90 seconds of Slack approval.
T09
Invoice detected via email matching known contractor
Incoming email to monitored inbox with subject containing contractor name and PDF attachment
Invoice parsed; amount extracted from PDF; approval request sent to hiring manager via Slack with invoice summary and one-click Approve/Query buttons
Slack message received by correct approver. Invoice amount displayed accurately. Both Approve and Query buttons functional.
T10
Invoice amount does not match agreed rate
Invoice amount = $950; agreed rate in Airtable = $750
Invoice not auto-approved; Slack message sent to Finance Manager flagging discrepancy with both amounts shown; Airtable status set to 'Discrepancy - Review'
No Xero bill created. Finance Manager receives Slack alert. Airtable status = 'Discrepancy - Review'.
T11
Approver does not respond to Slack approval request within 48 hours
Approval Slack message sent at T=0; no response after 48 hours
Reminder Slack message sent to approver; if no response after 72 hours total, escalation alert sent to Operations Manager
Reminder sent at 48h mark. Escalation sent at 72h mark. No Xero bill created without approval.
T12
Invoice received for contractor not found in Airtable
Email invoice received; contractor name does not match any Airtable record
Automation flags unknown contractor; posts Slack alert to ops channel 'Unknown contractor invoice received - manual review required'; does not create Xero bill
No Xero bill created. Slack alert sent. Invoice details preserved in error log.
T13
Xero bill creation fails after approval
Approval confirmed via Slack; Xero API returns 422 on bill creation
Error logged; Airtable status set to 'Xero Bill Failed'; Slack alert to Finance Manager 'Bill creation failed for [contractor] - manual entry required'
Error captured in workflow log. Airtable updated. Finance Manager notified.

Compliance Monitor Agent (Estimated build time: 8 hours, Complexity: Simple)

ID
Scenario
Input
Expected Output
Pass Criteria
T14
Happy path: document expiry within 30 days
Airtable record with insurance certificate expiry date = today + 28 days; daily schedule check runs
Slack alert sent to contractor and Operations Manager with document name, expiry date, and re-upload link; Airtable field 'Alert Sent' set to true
Both contractor and Operations Manager receive Slack messages. Re-upload link functional. Airtable updated.
T15
No expiring documents found during daily check
All Airtable compliance expiry dates are more than 30 days from today
No alerts sent; workflow run logged as 'No action required' in the automation platform log
Zero Slack messages sent. Workflow completes cleanly. Log entry created.
Test and QA PlanPage 2 of 4
FS-DOC-06Quality

03Phase 2 — integration and edge case tests

Integration tests verify that data passes correctly between agents and tools at handoff points. All tests in this phase remain in the sandbox environment. Test IDs continue the sequence from Phase 1.

ID
Scenario
Agents / Tools Involved
Expected Output
Pass Criteria
T16
Onboarding Agent to Invoice Agent: contractor ID passes correctly on first invoice
Contractor Onboarding Agent creates Airtable record; Invoice Approval Agent receives first invoice email for same contractor
Invoice Agent retrieves correct Airtable record by email match; agreed rate read accurately; approval Slack sent to correct hiring manager
No manual lookup required. Rate match confirmed. Correct approver targeted.
T17
Invoice approved via Slack: Xero bill created and Airtable updated in sequence
Hiring manager clicks Approve in Slack; Xero bill creation call made; Airtable write follows
Xero bill created first; then Airtable 'Payment Status' = 'Approved' and 'Xero Bill ID' field populated
Xero bill ID present in Airtable record. Status updated. Sequence order correct (Xero before Airtable write).
T18
Onboarding Agent expiry dates written to Airtable and picked up by Compliance Agent
Form submission includes insurance expiry date 25 days from today; Compliance Agent daily run executes
Expiry date from form stored in Airtable 'Insurance Expiry' field; Compliance Agent reads the field and triggers alert on daily run
Alert sent within the next scheduled daily run cycle. Correct expiry date in alert message.
T19
Slack approval routing: message delivered to correct channel and user
Invoice received for contractor whose Airtable record lists hiring manager as 'priya.shetty@yourcompany.com'
Slack direct message sent to Priya Shetty with invoice details and Approve/Query buttons; not posted to a public channel
DM received by correct user. No public channel post. Button payload includes contractor ID and invoice amount.
T20
Google Drive document filed in correct subfolder after onboarding
Form submission with two attachments: tax form and insurance certificate
Each file saved to correct named subfolder within the contractor's Drive folder: /Contractors/Alex Rivera - 2024-05-06/Tax/ and /Contractors/Alex Rivera - 2024-05-06/Insurance/
Both files present in correct subfolders. File names preserved from original upload.
T21
Xero supplier already exists: onboarding agent deduplication
Contractor submits onboarding form; a Xero contact with the same email already exists in the sandbox Xero account
Agent detects existing Xero contact by email; skips supplier creation; links existing Xero contact ID to Airtable record; posts Slack note 'Existing Xero supplier linked for [name]'
No duplicate Xero supplier. Airtable Xero ID field populated with existing contact ID.
T22
Invoice discrepancy routed to Finance Manager: human step confirmed
Invoice amount $1,100 vs agreed rate $750; Finance Manager receives Slack discrepancy alert
Finance Manager can mark as 'Approved with variance' or 'Reject' via Slack; choice recorded in Airtable; if approved with variance, Xero bill created for $1,100
Both options functional. Airtable records the Finance Manager's decision and timestamp. Xero bill only created after explicit approval.
T23
Compliance alert includes correct re-upload link
Airtable record with document expiry within 30 days; re-upload link field contains a Google Forms pre-filled URL
Slack alert to contractor contains a clickable re-upload link that opens the correct pre-filled Google Form
Link opens correct form in test environment. Contractor email pre-populated in form.

Edge Case Tests

ID
Edge Case Scenario
Condition
Expected Behaviour
Pass Criteria
E01
Duplicate onboarding form submission within 10 minutes
Contractor submits the same Google Form twice due to a browser refresh
Second submission detected by email deduplication check; second workflow run aborted; Slack warning sent to Operations Manager
Only one Airtable record created. Only one Xero supplier. Slack warning received.
E02
Form submission with missing contractor name field
Google Form submitted with name field blank (field not marked required at form level)
Automation catches missing name at parse step; workflow halted; Slack alert to Operations Manager 'Onboarding form received with missing name field - review required'
No records created in any tool. Alert sent. Submission data preserved in error log.
E03
Airtable API rate limit exceeded during batch onboarding
Five contractor form submissions received within 60 seconds
Automation queues requests with exponential back-off; all five records created within 5 minutes; no records lost
All five Airtable records created. No 429 errors propagated to final output. All Xero suppliers created.
E04
Slack workspace unavailable when approval message is due
Invoice approval Slack DM cannot be delivered; Slack API returns 503
Automation falls back to email notification to the approver's registered email address; Airtable status set to 'Approval Pending - Slack Failed'
Fallback email sent. Airtable status updated. Workflow does not stall indefinitely.
E05
Invoice PDF cannot be parsed: amount not extractable
Contractor submits a scanned invoice image as PDF with no machine-readable text
Parse step fails; Slack alert sent to Operations Manager 'Invoice received but amount could not be read - manual review required'; Airtable status set to 'Invoice Unreadable'
No Xero bill created. No approval request sent. Alert received by Operations Manager.
E06
Compliance document expiry date field blank in Airtable
Contractor onboarded but expiry date field left empty; daily Compliance Agent run executes
Agent skips blank expiry records; logs a warning in the run summary; Slack message sent to Operations Manager listing contractors with missing expiry dates
No false alerts sent. Operations Manager notified of incomplete records.
E07
Human timeout: invoice approval not responded to within 72 hours
Approval Slack message sent at T=0; no response at 48 hours (reminder sent); still no response at 72 hours
Escalation alert sent to Operations Manager listing the invoice, contractor name, and elapsed time; invoice held; Airtable status = 'Approval Overdue'
Escalation message sent at 72h. Invoice not paid. Airtable status reflects overdue state.
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 (not an active contractor's address) for all form submissions and approval routing. After each production test run, void the Xero bill created, delete or archive the Airtable test record, remove the Drive folder, and confirm the Slack messages are clearly marked as test communications. Do not use a real contractor's bank details or tax information in any test submission. The FullSpec team will coordinate the cleanup checklist with the Operations Manager and Finance Manager before Phase 3 begins.
ID
Scenario
Steps Traced
Expected Output
Pass Criteria
T24
Full onboarding production run: form to Airtable, Drive, Xero, and Slack
1. Internal test contractor submits live Google Form. 2. Automation parses submission. 3. Airtable record created in live base. 4. Drive folder created in live /Contractors/ directory. 5. Xero supplier created in live Xero account. 6. Slack notification posted to #contractors in live workspace.
All four outputs confirmed in production systems. Airtable record complete. Drive folder accessible. Xero supplier visible. Slack message received.
All four production outputs verified within 90 seconds. Zero null fields. FullSpec team and Operations Manager both confirm outputs.
T25
Production invoice approval: matched rate, approved via Slack, Xero bill created
1. Test invoice email sent to monitored production inbox for the T24 test contractor. 2. Agent parses invoice. 3. Approval Slack DM sent to Operations Manager. 4. Operations Manager clicks Approve. 5. Xero bill created. 6. Airtable status updated.
Xero bill created for the correct supplier and amount. Airtable 'Payment Status' = 'Approved'. Xero bill scheduled for next payment run.
Xero bill ID confirmed in Airtable. Finance Manager verifies bill visible in Xero. Payment run date set.
T26
Production invoice discrepancy: mismatched amount routed to Finance Manager
1. Test invoice submitted with amount that does not match the agreed rate in Airtable. 2. Automation detects discrepancy. 3. Slack alert sent to Finance Manager in live workspace. 4. Finance Manager reviews and takes action.
No Xero bill auto-created. Finance Manager receives Slack discrepancy alert with both amounts shown. Airtable status = 'Discrepancy - Review'.
Finance Manager confirms receipt of alert. Airtable status correct. No Xero bill exists for this invoice before manual approval.
T27
Production compliance alert: expiry within 30 days detected by Compliance Agent
1. Airtable test record for T24 contractor has insurance expiry date set to today + 25 days. 2. Compliance Agent daily run executes in production. 3. Alert sent to test email address and Operations Manager.
Slack alert received by Operations Manager in live workspace. Alert contains contractor name, document type, expiry date, and re-upload link. Airtable 'Alert Sent' = true.
Alert received within the scheduled daily run window. Link opens correct Google Form. Airtable field updated.
T28
Error log verification: all Phase 3 run logs reviewed
1. FullSpec team exports workflow run logs from the automation platform for all Phase 3 test runs. 2. Logs reviewed for unhandled exceptions, missing field warnings, and retry events.
All runs completed with status 'Success' or 'Success with warning'. No unhandled exceptions. Any retry events documented with cause and resolution.
Log review completed and signed off by FullSpec team. No critical errors present. All warnings documented.
T29
Process owner review and approval: final Phase 3 sign-off
1. Operations Manager reviews all Phase 3 outputs: Airtable records, Xero bills, Slack messages, Drive folders, and error logs. 2. Finance Manager confirms Xero bill accuracy. 3. Process owner records approval in the FullSpec confirmation workflow.
Process owner confirms all outputs match expected behaviour across all Phase 3 test cases. Any outstanding issues logged in the FullSpec confirmation workflow for resolution before go-live.
Process owner approval recorded in the FullSpec confirmation workflow. Finance Manager sign-off on Xero bill accuracy confirmed. No blocking issues outstanding. FullSpec team notified of approval at support@gofullspec.com. Go-live authorised.
Once T29 is recorded as passed in the FullSpec confirmation workflow, the automation is cleared for go-live. The FullSpec team will initiate the go-live sequence and confirm activation via support@gofullspec.com. Post-launch monitoring runs for the first two weeks to catch any edge cases not covered in testing.
Test and QA PlanPage 4 of 4

More documents for this process

Every document generated for Contractor 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