Back to Job Posting & Applicant 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

Job Posting & Applicant Tracking Automation

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

This document defines the structured quality assurance process for the Job Posting and Applicant Tracking automation, covering all three agents: Job Ad Drafting, Application Intake, and Resume Screening. It is written for the FullSpec team executing the build and test cycles, with the process owner joining Phase 3 to confirm production behaviour before go-live. Tests are executed in strict phase order. No phase begins until every test case in the preceding phase has achieved a passing result and the outcome has been logged.

01Testing approach

Testing is structured across three sequential phases: Unit, Integration, and End-to-end. Each phase must fully pass before the next phase begins. A phase is considered fully passed when every test case in that phase records a confirmed pass result with no outstanding failures or deferred issues. The FullSpec team runs Phases 1 and 2 independently in sandbox environments. The process owner joins Phase 3, which is executed against production systems using a controlled test record that is voided immediately after confirmation.

1
Phase 1: Unit Testing
Estimated time: 1 to 2 business days
Scope
Each agent tested in isolation: Job Ad Drafting Agent (T01-T05), Application Intake Agent (T06-T11), Resume Screening Agent (T12-T17)
Environment
Sandbox only. Greenhouse sandbox org, Gmail test account, Google Sheets test workspace, Slack test channel
Credential rule
No production credentials permitted in Phase 1. All API keys and OAuth tokens must reference sandbox or test-tier accounts exclusively
Pass condition
All cases T01 through T17 achieve expected output with no unhandled errors. Each result logged with timestamp and tester initials
Who runs it
FullSpec team only
2
Phase 2: Integration and Edge Case Testing
Estimated time: 1 to 2 business days
Scope
Agent-to-agent handoffs and cross-tool data flows (T18-T24), plus edge case scenarios including duplicates, missing data, and tool unavailability (E01-E07)
Environment
Sandbox with live API sandbox endpoints for Greenhouse, Gmail, Google Sheets, and Slack. LinkedIn posting tested against a dedicated test company page
Credential rule
Sandbox credentials only. Integration tokens must be scoped to test resources. No write access to production Greenhouse org or live Sheets
Pass condition
All cases T18 through T24 and E01 through E07 achieve expected output or confirmed graceful failure with correct error handling and alerting
Who runs it
FullSpec team only
3
Phase 3: End-to-End Production Test
Estimated time: 1 business day
Scope
Full workflow executed against production systems using a synthetic vacancy and test applicant (T25-T29). Final case is process owner review and sign-off (T29)
Environment
Production Greenhouse org, production Gmail, production Google Sheets tracker, production Slack workspace. Test vacancy marked with a QA prefix and voided after confirmation
Credential rule
Production credentials used for the first time. All tokens confirmed active and correctly scoped before test run begins
Pass condition
All cases T25 through T29 pass. Process owner confirms observed behaviour matches specification and records approval in the FullSpec confirmation log
Who runs it
FullSpec team executes; process owner (HR Coordinator or nominated lead) observes and approves T29
Test and QA PlanPage 1 of 4
FS-DOC-06Quality

02Phase 1 — unit test cases

All Phase 1 tests must be executed using sandbox credentials only. Do not connect production Greenhouse, Gmail, Google Sheets, or Slack accounts at this stage. If a sandbox token expires mid-session, pause testing, rotate the credential, and restart from the last unconfirmed test case.

Job Ad Drafting Agent — tests T01 through T05

ID
Scenario
Input
Expected Output
Pass Criteria
T01
Happy path: vacancy triggers ad draft
Approved vacancy in Greenhouse sandbox: role title 'Marketing Manager', department 'Marketing', hiring manager 'Jordan Walsh', job description template on record
Completed job ad draft generated and delivered to hiring manager Gmail inbox within 60 seconds of trigger
Draft email received; ad body contains role title, department, responsibilities, and apply link; no placeholder text remaining
T02
Hiring manager approves ad via email
Draft email delivered per T01; hiring manager clicks approval link
Approval event registered in the automation platform; workflow advances to posting step; Greenhouse role record updated with 'Ad Approved' status
Greenhouse status field updated; no duplicate approval emails sent; workflow state log shows correct transition
T03
Vacancy missing required field (job description template absent)
Approved vacancy in Greenhouse sandbox with no job description template attached
Agent halts draft generation; error logged; notification sent to HR Coordinator Gmail with details of the missing field
No partial draft sent; error notification received within 90 seconds; Greenhouse record not modified
T04
Greenhouse webhook fires but vacancy status is not 'Approved'
Webhook payload with vacancy status 'Draft'
Agent discards the event; no draft generated; event logged as skipped with reason code
No email sent to hiring manager; skip event visible in platform run log with correct reason
T05
Hiring manager does not approve within 48 hours
Draft email delivered; no approval action taken for 48 hours
Automated reminder email sent to hiring manager at 48-hour mark; HR Coordinator notified via Gmail
Reminder email received by hiring manager sandbox account; coordinator notification received; no duplicate reminders within the same 24-hour window

Application Intake Agent — tests T06 through T11

ID
Scenario
Input
Expected Output
Pass Criteria
T06
Happy path: new application received
Single test application submitted via Greenhouse sandbox for an active sandbox role; includes name, email, phone, and resume PDF
Applicant record created in Greenhouse; new row added to Google Sheets tracker with name, email, role title, source channel, and submission timestamp; acknowledgement email sent via Gmail
All three outputs present and accurate; acknowledgement email received within 5 minutes of submission; Sheets row contains no blank mandatory fields
T07
Acknowledgement email content and timing
Same input as T06
Email subject includes role title; body contains applicant first name, role applied for, next-steps message, and estimated response timeline
No merge fields unpopulated; email delivered within 5 minutes; reply-to address is the configured HR inbox
T08
Application received with no resume attached
Test application submitted with name and email only; resume field empty
Record created in Greenhouse and Sheets with 'Resume Missing' flag; acknowledgement email sent; HR Coordinator alerted via Gmail to follow up
Greenhouse record shows flag; Sheets row marked 'Resume Missing'; coordinator alert received; acknowledgement email still sent to applicant
T09
Application received for a role not active in Greenhouse
Test application payload referencing a role ID that does not exist in the sandbox
Agent logs an error with the unmatched role ID; no Greenhouse record created; error surfaced in the platform run log; HR Coordinator notified
No orphan records in Greenhouse or Sheets; error log entry present with role ID; notification received by coordinator within 2 minutes
T10
Google Sheets write fails mid-run
Valid application received; Sheets API returns a 503 error on write attempt
Agent retries the Sheets write up to three times with exponential backoff; if all retries fail, Greenhouse record is still created and coordinator is alerted
Greenhouse record exists regardless of Sheets outcome; coordinator alert includes the Sheets error detail; retry attempts visible in run log
T11
Gmail acknowledgement send fails
Valid application received; Gmail API returns an authentication error on send attempt
Greenhouse record and Sheets row created normally; failed send logged with error code; HR Coordinator alerted to send the acknowledgement manually
No data loss in Greenhouse or Sheets; coordinator alert received with applicant name and email for manual follow-up; error code in run log

Resume Screening Agent — tests T12 through T17

ID
Scenario
Input
Expected Output
Pass Criteria
T12
Happy path: resume scored and tagged
Complete applicant record confirmed in Greenhouse sandbox; role has defined screening criteria; resume text extractable
Fit score (0-100) assigned; reasoning note (min 30 words) written to Greenhouse record; candidate tagged as 'Shortlist', 'Hold', or 'Reject'; Slack notification sent to hiring manager
All four outputs present; tag matches score band (Shortlist 70+, Hold 40-69, Reject below 40); Slack message includes candidate name, score, and Greenhouse profile link
T13
Slack shortlist notification content
Three sandbox applicants scored and tagged; one Shortlist, one Hold, one Reject
Slack message lists Shortlist candidates only, ranked by score, each with name, fit score, and Greenhouse profile link
Hold and Reject candidates not included in Slack message; links resolve to correct sandbox Greenhouse profiles; message delivered to correct test channel
T14
Resume cannot be parsed (image-only PDF)
Application record with a scanned image PDF attached; no extractable text layer
Agent logs a parse failure; candidate tagged 'Manual Review Required' in Greenhouse; HR Coordinator notified via Gmail with applicant name and reason
No score assigned to unparseable resume; 'Manual Review Required' tag written to Greenhouse; coordinator notification received within 2 minutes
T15
Role has no screening criteria defined in Greenhouse
Application record confirmed; role criteria field in Greenhouse is empty
Agent halts scoring; logs a configuration error; HR Coordinator notified that criteria are missing for the role before scoring can proceed
No score or tag written to Greenhouse record; coordinator notification includes role title and a link to the criteria configuration field
T16
Slack API unavailable at notification time
Scoring completes successfully; Slack API returns 503 on notification attempt
Tags and score written to Greenhouse regardless of Slack failure; Slack send retried twice; on final failure, hiring manager notified via Gmail fallback
Greenhouse record fully updated; Gmail fallback notification received by hiring manager with shortlist details; Slack retry attempts in run log
T17
High volume: 20 applications arrive within 5 minutes
20 simultaneous test application payloads submitted to the sandbox
All 20 records created in Greenhouse and Sheets; all 20 acknowledgement emails sent; all 20 resumes scored and tagged; one consolidated Slack notification sent
No records missing in Greenhouse or Sheets; all 20 acknowledgement emails received; no duplicate records; consolidated Slack message lists all shortlisted candidates from the batch
Test and QA PlanPage 2 of 4
FS-DOC-06Quality

03Phase 2 — integration and edge case tests

Phase 2 validates that data flows correctly across agent handoffs and that every agent-to-tool connection behaves as specified when tested together. Integration test IDs continue the T sequence from Phase 1. Edge case tests use a separate E-prefixed sequence.

ID
Scenario
Input
Expected Output
Pass Criteria
T18
End-to-end ad approval triggers LinkedIn posting
Vacancy approved in Greenhouse sandbox; Job Ad Drafting Agent completes draft; hiring manager approval action sent
On approval, the automation posts the ad to the LinkedIn sandbox test company page; Greenhouse role record updated with post URL and timestamp
LinkedIn post visible on test company page with correct ad content; Greenhouse record updated within 60 seconds of approval; no manual step required
T19
Google Sheets tracking row created on LinkedIn post
LinkedIn post confirmed per T18
New row inserted into the Google Sheets hiring tracker with role title, hiring manager name, post date, LinkedIn post URL, and status 'Active'
Row present in Sheets within 30 seconds of post; all five expected columns populated; no duplicate rows for the same role
T20
Application Intake Agent hands off to Resume Screening Agent
Application record confirmed complete in Greenhouse sandbox (all mandatory fields populated, resume parseable)
Resume Screening Agent triggered automatically; fit score, reasoning note, and tag written to the same Greenhouse record created by the Intake Agent
No manual trigger required; scoring agent run logged within 60 seconds of intake confirmation; Greenhouse record contains both intake and screening data in correct fields
T21
Screening Agent Slack notification links to correct Greenhouse record
Three applicants scored per T20 flow; two tagged Shortlist
Slack message sent to hiring manager Slack test channel; each candidate entry contains a hyperlink; link resolves to the correct Greenhouse candidate profile
Both links verified to resolve correctly in sandbox; Greenhouse profile opened by each link matches the named candidate; no broken links
T22
Approval loop: hiring manager rejects ad and resubmit path activates
Draft email delivered; hiring manager clicks 'Request Changes' rather than 'Approve'
Workflow routes to the manual revision path; HR Coordinator receives a Gmail notification with the manager's change request; vacancy status in Greenhouse updated to 'Revision Required'
Coordinator notification received with change request detail; Greenhouse status updated; no LinkedIn post initiated; resubmission flow restarts from draft generation on coordinator action
T23
Gmail to Greenhouse data mapping accuracy
Applicant submits via Gmail-routed intake path with name containing special characters and an international phone number format
Greenhouse record created with all fields correctly mapped; name special characters preserved; phone number stored in E.164 format
Greenhouse record matches submitted data exactly; no character encoding errors; phone field in correct format
T24
Sheets row update when candidate status changes in Greenhouse
Hiring manager updates candidate tag in Greenhouse from 'Shortlist' to 'Hold' directly in Greenhouse UI
Corresponding Google Sheets row status column updated to 'Hold' within 2 minutes of the Greenhouse change
Sheets row reflects new status without manual update; timestamp of change recorded in Sheets; no other row values overwritten

Edge case tests — E01 through E07

ID
Scenario
Input
Expected Output
Pass Criteria
E01
Duplicate application submitted by same email for same role
Second application submission from the same email address for the same role within 24 hours
Second submission detected as a duplicate; no new Greenhouse record created; duplicate logged; applicant receives a confirmation that their original application is on file
Only one Greenhouse record exists for the applicant-role pair; duplicate log entry present; confirmation email sent to applicant; no duplicate Sheets row
E02
Application payload missing applicant email address
Application submitted with name and resume but no email field
Record created in Greenhouse with 'Email Missing' flag; no acknowledgement email attempted; HR Coordinator alerted with applicant name and submission source
No failed send error generated by Gmail; Greenhouse record flagged correctly; coordinator alert received with actionable detail
E03
Greenhouse API rate limit reached during bulk intake
25 application payloads submitted in rapid succession, causing Greenhouse API to return 429 Too Many Requests
Automation queues remaining payloads and retries with exponential backoff starting at 5 seconds; all 25 records eventually written to Greenhouse; no records dropped
All 25 Greenhouse records confirmed present after retry cycle completes; queue behaviour visible in platform run log; no permanent failures
E04
Greenhouse API completely unavailable for 10 minutes
Greenhouse returns 503 errors for all requests over a 10-minute window
Automation pauses and retries at defined intervals; incoming application data buffered; HR Coordinator notified of the outage via Gmail; all queued records processed once API recovers
No data lost; coordinator outage notification received; all buffered applications processed on recovery; recovery processing confirmed in run log
E05
Resume Screening Agent returns a score outside valid range
Screening agent produces a numeric score of 105 due to a prompt configuration error
Score validation step catches the out-of-range value; candidate tagged 'Manual Review Required'; HR Coordinator notified; invalid score not written to Greenhouse
Greenhouse record does not contain invalid score; coordinator notified with agent output detail for diagnostic; validation failure logged
E06
Hiring manager Slack account inactive or deactivated
Screening agent attempts to send Slack notification to a deactivated user
Slack send fails gracefully; Gmail fallback sends shortlist email to hiring manager's email address on file in Greenhouse; failure logged with Slack user ID
Hiring manager receives shortlist via Gmail; no unhandled exception in platform; Slack error and fallback both logged
E07
No hiring manager response to shortlist after 5 business days
Shortlist notification delivered via Slack; hiring manager takes no action in Greenhouse for 5 business days
Automated follow-up Slack message sent at day 5; HR Coordinator copied via Gmail; escalation logged in platform
Follow-up Slack message received by hiring manager test account; coordinator Gmail copy received; single follow-up only, no repeated messages within the same business day
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 a real candidate inbox) for all applicant-side communications. Create the test vacancy in Greenhouse with a title prefixed 'QA TEST -' so it is clearly distinguishable from live roles. Publish the LinkedIn post to a restricted or draft state only, not a live public post. Immediately after the process owner confirms approval in T29, void the test vacancy in Greenhouse, delete the test Sheets row, and archive the test Slack message. Do not proceed with Phase 3 until Phases 1 and 2 are fully passed and logged.
ID
Scenario
Input
Expected Output
Pass Criteria
T25
Production run: vacancy approval triggers full ad drafting and approval flow
Test vacancy 'QA TEST - HR Operations Coordinator' approved in production Greenhouse by FullSpec team member; hiring manager (process owner or nominated stand-in) on standby
Job Ad Drafting Agent generates a complete ad draft; Gmail delivers approval request to the production hiring manager inbox within 60 seconds; Greenhouse vacancy status updates to 'Pending Approval'
Ad draft received in production Gmail inbox; all role details accurately reflected in the ad body; Greenhouse status field updated; no errors in platform run log
T26
Production run: approval confirmed, LinkedIn restricted post and Sheets row created
Hiring manager clicks approve in the production Gmail approval email from T25
Automation advances; LinkedIn restricted draft post created for the test role; Google Sheets hiring tracker row inserted with all required columns populated
LinkedIn draft post confirmed present in the test company page drafts (not published publicly); Sheets row verified with correct role title, hiring manager name, post date, and status; run log shows clean transition
T27
Production run: test application intake, Greenhouse record, and acknowledgement
Test application submitted via production Greenhouse using an internal test email address; resume is a clearly labelled test PDF
Application Intake Agent creates the Greenhouse applicant record; Google Sheets row updated with applicant entry; acknowledgement email delivered to the test inbox within 5 minutes
Greenhouse record confirmed with correct field mapping; Sheets row contains applicant name, email, role, source, and timestamp; acknowledgement email received at test inbox; email content accurate with no unpopulated fields
T28
Production run: resume scored, Greenhouse tagged, Slack notification delivered
Test applicant record confirmed in production Greenhouse per T27; test resume uses a predefined keyword set matching the role criteria
Resume Screening Agent assigns a fit score and reasoning note; Greenhouse record tagged; Slack notification sent to the production hiring manager channel with candidate details and Greenhouse link
Fit score and tag written to Greenhouse production record; reasoning note present and coherent; Slack message received in production workspace with correct candidate name, score, and a working Greenhouse link; end-to-end elapsed time from T25 trigger to T28 Slack delivery logged and under 10 minutes
T29
Process owner review and approval: observed behaviour confirmed against specification
Process owner (or nominated HR lead) reviews all outputs from T25 through T28 against the specification: ad draft quality, approval flow, Sheets accuracy, acknowledgement email, Greenhouse record completeness, scoring rationale, and Slack notification
Process owner confirms all outputs are correct and match the agreed specification; approval recorded in the FullSpec confirmation log with the reviewer's name, date, and any notes; test vacancy and all associated test records voided and archived immediately after confirmation
FullSpec confirmation log entry present with reviewer name and date; no outstanding issues flagged by the process owner; all test data voided in Greenhouse, Sheets, and Slack within 30 minutes of confirmation; automation cleared for go-live
Once T29 is recorded in the FullSpec confirmation log, the automation is cleared for go-live. The FullSpec team will notify the process owner at support@gofullspec.com and provide the final SOP runbook for the HR coordinator. No separate sign-off block is required: the T29 log entry is the formal record of acceptance.
Test and QA PlanPage 4 of 4

More documents for this process

Every document generated for Job Posting & Applicant 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