Back to Training & Certification 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

Training & Certification Tracking

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

This document defines the full quality assurance process for the Training and Certification Tracking automation. It is written for the FullSpec engineering team and covers every test case across three sequential phases: unit testing of individual agents, integration and edge-case testing of agent handoffs and failure paths, and a final end-to-end production run confirmed by the process owner. No phase begins until the previous phase has fully passed. All test IDs are sequential across the document so that defects can be referenced precisely during triage.

01Testing approach

Testing is structured in three phases that must be completed in sequence. Phase 1 (Unit) validates each agent in isolation against a sandbox environment. Phase 2 (Integration) validates agent handoffs, tool connections, and edge-case failure modes. Phase 3 (End-to-end) runs a complete production trace with live credentials and is the final gate before go-live. A phase may not begin until every test case in the preceding phase carries a passing result recorded in the FullSpec build log.

1
Phase 1: Unit Testing
Each agent tested in isolation against sandbox data
Scope
Individual agent logic: Certification Monitor Agent and Renewal Intake and Filing Agent tested separately, with mocked or sandboxed tool responses
Environment
Sandbox only. No production BambooHR employees, no live Gmail sends, no real Drive folders written
Credential rule
Sandbox API keys for BambooHR test subdomain; test Gmail account; staging Typeform form; test Google Drive folder; no production credentials permitted
Pass condition
All cases T01 through T14 return expected output with no unhandled errors
Who runs it
FullSpec team only
2
Phase 2: Integration and Edge Case Testing
Agent handoffs and failure paths validated end-to-end in sandbox
Scope
Cross-agent handoffs, tool-to-tool data passing, duplicate submission handling, missing fields, and human escalation timeout scenarios
Environment
Sandbox with simulated tool failures and injected bad data; no production credentials
Credential rule
Same sandbox credentials as Phase 1; Slack test workspace used for manager notification tests
Pass condition
All integration cases T15 through T22 and all edge cases E01 through E06 pass without data loss or silent failure
Who runs it
FullSpec team only
3
Phase 3: End-to-End Production Test
Live credentials, real tools, process owner sign-off required
Scope
Full production workflow traced from daily expiry scan trigger through to BambooHR update and Sheets log entry, using a controlled internal test record
Environment
Production. Live BambooHR account, live Gmail, live Slack workspace, live Typeform form, live Google Drive
Credential rule
Production OAuth tokens and API keys used; the test employee record must be clearly labelled TEST and voided after the run
Pass condition
All cases T23 through T27 pass; process owner completes T27 review and approval recorded in the FullSpec confirmation log
Who runs it
FullSpec team executes; process owner joins for T27 review and sign-off
Test and QA PlanPage 1 of 4
FS-DOC-06Quality

02Phase 1 — unit test cases

Sandbox credentials only for all Phase 1 tests. The BambooHR test subdomain, a dedicated test Gmail account, the staging Typeform form, and a test Google Drive folder must be used throughout. Do not point any Phase 1 test at a production API key or a live employee record. Confirm sandbox configuration before executing T01.

Certification Monitor Agent — estimated build time: 14 hours, complexity: Moderate

ID
Scenario
Input
Expected Output
Pass Criteria
T01
Happy path: 90-day reminder tier
Sandbox employee record with expiry date 90 days from today; employee active in BambooHR
Gmail reminder email sent with correct tier copy; Slack DM sent to mapped manager; Google Sheets row updated with '90-day' tier and today's timestamp
All three outputs confirmed; no error in execution log; Sheets entry matches employee ID and tier
T02
Happy path: 60-day reminder tier
Sandbox employee record with expiry date 60 days from today
60-day tier email sent via Gmail; Slack notification sent; Sheets log updated
Email subject line and body reference '60 days'; Sheets tier column reads '60-day'; Slack message received in test workspace
T03
Happy path: 30-day reminder tier
Sandbox employee record with expiry date 30 days from today
30-day tier email sent; Slack notification sent; Sheets log updated with '30-day'
Correct tier reflected in all three outputs; timestamp within 60 seconds of run time
T04
Happy path: overdue record
Sandbox employee record with expiry date 5 days in the past
Overdue flag written to Sheets; escalation payload prepared; no standard reminder email sent
Sheets row status column reads 'OVERDUE'; no Gmail send triggered for this record; escalation log entry created
T05
Employee record inactive in BambooHR
Sandbox employee with status 'Inactive' and expiry within 30 days
Record skipped; no email or Slack sent; skip event logged
Execution log shows 'skipped: inactive employee'; Sheets row not modified; no outbound messages
T06
Missing expiry date field in BambooHR
Sandbox employee with certification record but expiry date field blank
Record skipped with error flag; alert written to Sheets error tab
Error tab in Sheets contains employee ID and reason 'missing expiry date'; no crash or unhandled exception
T07
Multiple certifications due for same employee
Sandbox employee with two certifications both falling in the 60-day tier
Two separate reminder emails sent (one per certification); two Slack messages or one combined DM depending on config; two Sheets rows logged
Each certification handled as an independent record; no data from one certification bleeds into the other; Sheets shows two distinct rows
T08
BambooHR API returns 401 Unauthorised
Invalid or expired sandbox API key injected
Agent halts; error logged to execution log; no partial sends
No Gmail or Slack messages sent; error entry includes HTTP status code 401 and timestamp; FullSpec alert channel notified
T09
Google Sheets write failure (permission error)
Sheets test token revoked mid-run after BambooHR read succeeds
Gmail and Slack sends still complete; Sheets write fails gracefully; retry queued
Execution log shows Sheets write error with retry flag; email and Slack outputs confirmed received; no data loss on reminder payloads

Renewal Intake and Filing Agent — estimated build time: 14 hours, complexity: Moderate

ID
Scenario
Input
Expected Output
Pass Criteria
T10
Happy path: valid Typeform submission with file upload
Sandbox Typeform submission containing employee ID, certification name, completion date, new expiry date, and a PDF certificate upload
PDF filed to correct Google Drive folder with correct naming convention; BambooHR sandbox employee profile updated with new completion and expiry dates; Sheets row status updated to 'Complete'
Drive file name matches format [EmployeeName]_[CertType]_[ExpiryDate].pdf; BambooHR field values match Typeform input; Sheets status column reads 'Complete'; execution log shows no errors
T11
Certificate filed to correct subfolder for role-specific cert
Typeform submission where certification type maps to a specific Drive subfolder (e.g., 'First Aid' subfolder)
File routed to the correct subfolder rather than the generic root
Drive path confirmed correct; no file placed in wrong folder; Sheets filing path column matches expected subfolder
T12
Typeform submission missing file upload
Sandbox submission with all text fields completed but no file attached
Submission rejected; HR coordinator notified via Gmail that the submission is incomplete; Sheets row flagged 'Incomplete Submission'
No Drive file created; BambooHR not updated; Gmail notification to HR test address received within 2 minutes; Sheets status reads 'Incomplete Submission'
T13
Typeform submission with unrecognised employee ID
Sandbox submission where employee ID does not match any record in BambooHR or Sheets
Submission quarantined; HR coordinator alerted with submission details for manual review
No Drive file created; no BambooHR write; alert email contains raw submission data; quarantine log entry created
T14
BambooHR write-back returns 403 Forbidden during HRIS update
Valid Typeform submission; BambooHR sandbox returns 403 on PATCH request
Drive filing completes successfully; BambooHR update fails and is logged; retry queued; HR coordinator notified of partial completion
Drive file confirmed present; Sheets row flagged 'BambooHR update pending'; retry entry in error log; no silent failure
Test and QA PlanPage 2 of 4
FS-DOC-06Quality

03Phase 2 — integration and edge case tests

Phase 2 validates the connections between agents and between agents and their dependent tools. All tests run in the sandbox environment with the same credential set as Phase 1. IDs continue from T15.

ID
Scenario
Input
Expected Output
Pass Criteria
T15
Certification Monitor Agent triggers and Typeform submission arrives on the same day for same employee
Sandbox employee in 30-day tier; Typeform submission received before the daily scan completes
Monitor Agent sends reminder; Renewal Intake Agent files the certificate and updates status to 'Complete'; Sheets log shows reminder sent then immediately superseded by completion
Both agents execute independently without collision; final Sheets status is 'Complete'; no duplicate BambooHR write; execution logs show correct sequencing
T16
Renewal Intake Agent updates Sheets and BambooHR; Monitor Agent next run skips the now-complete record
Sandbox employee marked 'Complete' in Sheets after T15 run; Monitor Agent daily scan fires again
Monitor Agent reads 'Complete' status and skips the record; no reminder sent
No outbound email or Slack for the completed employee; Sheets row not modified; execution log confirms 'skipped: already complete'
T17
Slack manager notification delivery confirmed
Sandbox employee in 60-day tier with manager Slack handle mapped
Slack DM delivered to test workspace user
Test workspace user receives DM within 90 seconds of run; message contains correct employee name, certification, and expiry date; no generic or empty message delivered
T18
Google Drive OAuth token refresh mid-filing
Filing in progress when access token expires; refresh token present
Token refreshed silently; filing completes without interruption
Drive file present in correct folder; no error in execution log; token refresh event logged at info level
T19
Slack API unavailable during manager notification step
Sandbox run with Slack endpoint returning 503 Service Unavailable
Gmail reminder sends successfully; Slack notification retried up to 3 times then logged as failed; HR coordinator notified of Slack failure
Gmail confirmed sent; Sheets log shows 'Slack notification failed'; alert to HR coordinator email received; agent does not crash
T20
Gmail send rate limit reached mid-batch
Sandbox batch of 25 reminder records where Gmail sandbox throttle is hit after record 20
First 20 records processed and sent; remaining 5 queued and retried after cooldown; Sheets log reflects accurate sent and queued states
No duplicate sends for records 1 to 20; records 21 to 25 confirmed sent after retry; Sheets status columns accurate for all 25 rows
T21
Typeform webhook delivery delayed by 10 minutes
Submission made in Typeform sandbox; webhook delivery artificially delayed
Renewal Intake Agent triggers on receipt of delayed webhook; filing and HRIS update complete correctly
Drive file created; BambooHR updated; Sheets status 'Complete'; timestamp in Sheets reflects actual processing time, not submission time
T22
Both BambooHR and Google Sheets unavailable simultaneously during Monitor Agent run
BambooHR sandbox returns 503; Sheets API also returning errors
Agent halts cleanly; no partial state written; full retry scheduled for next run; FullSpec alert triggered
Execution log captures both failure codes; no orphaned Sheets rows or partial BambooHR writes; alert sent to monitoring channel; next scheduled run proceeds normally once services recover

Edge case tests are run in sandbox using injected bad data and simulated failure conditions. These cases are separate from the integration handoff tests above.

ID
Scenario
Input
Expected Output
Pass Criteria
E01
Duplicate Typeform submission for the same employee and certification within 24 hours
Two identical sandbox submissions 30 minutes apart
First submission processed and filed; second submission detected as duplicate and rejected; HR coordinator alerted
Drive contains exactly one file for the record; BambooHR updated once; Sheets shows one 'Complete' row and one 'Duplicate rejected' entry; no double-write
E02
Certification name in Typeform does not match any known certification type in Sheets
Submission with free-text certification name that has no match in the master list
Submission quarantined; HR coordinator receives alert with the unrecognised certification name and raw submission data
No Drive file created under an unrecognised folder; no BambooHR update; alert email received by HR test address with full submission detail
E03
Employee submits a certificate file type that is not accepted (e.g., a .exe file)
Typeform submission with a non-PDF, non-image file attached
File type validation fails; submission rejected with user-facing error; HR coordinator notified
No file written to Drive; rejection reason logged in Sheets error tab; HR coordinator email received describing the invalid file type
E04
Employee with no manager Slack handle mapped attempts to trigger notification
Sandbox employee record with manager field blank in BambooHR
Slack notification skipped; warning logged; Gmail reminder to employee still sends
Gmail confirmed sent; Slack step skipped without crash; execution log shows 'skipped Slack: no manager handle'; Sheets reminder log entry still written
E05
Human escalation timeout: employee never responds after 30-day reminder cycle completes
Sandbox record where all three reminder tiers have fired and no Typeform submission received
Record flagged 'OVERDUE' in Sheets; escalation event logged; HR coordinator receives escalation email; no further automated reminders sent
Sheets status reads 'OVERDUE'; escalation email received by HR test address; Monitor Agent does not re-send standard reminder tiers; log entry includes full reminder history
E06
Certification expiry date in BambooHR is set in the past by more than 365 days
Sandbox employee with expiry date over a year ago and no prior reminder log entries
Record flagged as critically overdue; escalation triggered immediately without standard reminder tiers; HR coordinator alerted
No 90, 60, or 30-day emails sent; Sheets status immediately set to 'OVERDUE - Critical'; HR escalation email received; BambooHR not modified by the agent
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 (e.g., hr-test@[YourCompany.com]) for all Gmail and Slack sends. Create a clearly labelled TEST employee record in BambooHR (e.g., employee name 'Test User QA') before the run. After all Phase 3 cases pass, void the test record in BambooHR, delete the test Drive file, and remove the test row from the Google Sheets log. Do not leave any test artefacts in the production system. Confirm with the process owner that these cleanup steps have been completed before go-live is declared.
Phase 3 uses live production credentials. Confirm that BambooHR production OAuth scopes include read access to employee records and write access to custom certification fields. Confirm that the production Gmail account has Send permission granted to the automation platform service account. Confirm that the Typeform production form is connected to the live webhook endpoint before executing T23.
ID
Scenario
Input
Expected Output
Pass Criteria
T23
Full production run: 30-day reminder tier triggered for test employee
TEST employee record in production BambooHR with expiry date set to 30 days from today; Monitor Agent scheduled run fired manually for the test
Personalised 30-day reminder email delivered to hr-test@[YourCompany.com]; Slack DM delivered to test manager handle in live workspace; Google Sheets production log updated with '30-day' tier, timestamp, and employee ID
Email received at test address with correct certification name and expiry date in body; Slack DM received within 90 seconds; Sheets row confirms correct tier; no other employees' records modified
T24
Full production run: Typeform certificate submission filed to Drive and BambooHR updated
Typeform production form submitted using test employee credentials; PDF test certificate uploaded; all required fields completed
PDF filed to correct production Drive folder with correct naming convention; BambooHR TEST employee profile updated with new completion date and expiry date; Sheets row status updated to 'Complete'
Drive file name and folder path confirmed correct; BambooHR fields verified by FullSpec team directly in the production interface; Sheets status 'Complete'; submission-to-completion time under 3 minutes
T25
Error log verification: confirm logging is active in production
Run T23 with a deliberately malformed Sheets write token injected for 5 seconds, then restored
Execution log captures the Sheets write failure with timestamp and error code; retry succeeds once token restored; no data loss
Error log entry present in FullSpec monitoring dashboard with correct error code and timestamp; Sheets row eventually written correctly on retry; no duplicate or orphaned entries
T26
Monitor Agent skips TEST record after 'Complete' status set in T24
Monitor Agent production run fired again after T24 marks the TEST employee as 'Complete'
TEST employee record skipped; no outbound email or Slack sent for the test record
Execution log shows 'skipped: already complete' for the test employee ID; no email sent to test address; no Slack message sent; all other real employees processed normally
T27
Process owner end-to-end review and approval
Process owner (HR Coordinator or HR Manager) reviews the outputs of T23 through T26: the received test emails, the Slack notifications, the Drive filing, the BambooHR record, and the Sheets log entries
Process owner confirms all outputs are accurate, naming conventions are correct, email content is appropriate for employees, and the Sheets log is readable and complete. Process owner declares Phase 3 passed and authorises go-live. FullSpec records this confirmation in the project log.
Written confirmation from process owner received by FullSpec team at support@gofullspec.com or captured in the FullSpec project confirmation log. All cleanup steps (TEST record voided, test Drive file deleted, Sheets test row removed) confirmed complete. Go-live authorised.
Once T27 is confirmed, FullSpec will archive this QA plan with the pass results recorded against each test ID. The archived plan is retained as part of the project handover record. Any test case that did not pass on first execution must have a defect note recorded (test ID, failure description, fix applied, retest result) before the phase is considered complete. Contact the FullSpec team at support@gofullspec.com with any questions during testing.
Test and QA PlanPage 4 of 4

More documents for this process

Every document generated for Training & Certification 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