Back to OKR & Goal 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

OKR and Goal Tracking Automation

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

This document defines the complete testing and quality assurance programme for the OKR and Goal Tracking automation. It covers all test cases across three sequential phases: unit testing of individual agents, integration and edge-case testing of agent handoffs and failure scenarios, and a final end-to-end production run. The FullSpec team runs Phases 1 and 2 in isolation; the process owner joins Phase 3 to review and formally approve the live system. No phase begins until the previous phase fully passes.

01Testing approach

Testing is structured across three phases that must be completed in strict sequence. No phase begins until every test case in the previous phase has reached a pass status. This sequencing ensures that integration faults are not masked by unresolved unit-level failures, and that the process owner only reviews a system that has already passed full automated validation.

1
Phase 1: Unit Testing
Each agent tested in isolation against sandbox credentials
Scope
Each agent (OKR Collection Agent, OKR Analysis and Reporting Agent) tested independently with mocked or sandbox inputs and outputs.
Environment
Sandbox only. No production Slack channels, Google Sheets, or Notion workspaces are touched.
Credential rule
All connections use sandbox or test credentials. Production API tokens must not be present in the environment during Phase 1.
Pass condition
All test cases T01 through T12 return the expected output with zero critical failures. Any failure blocks progression to Phase 2.
Who runs it
FullSpec team only. Process owner is not required.
2
Phase 2: Integration and Edge Case Testing
Agent handoffs, boundary conditions, and failure modes validated
Scope
End-to-end agent handoffs (Collection Agent passing data to Analysis Agent), plus structured edge-case scenarios covering missing data, duplicate submissions, unavailable tools, and human timeout.
Environment
Sandbox environment with controlled test data sets. Tool sandbox accounts (Slack test workspace, staging Google Sheet, Notion test page) used throughout.
Credential rule
Sandbox credentials only. Integration test credentials must be scoped to test workspaces and revoked after Phase 2 completes.
Pass condition
All integration cases T13 through T19 and all edge cases E01 through E06 pass. No unhandled exceptions. Error paths return the correct fallback behaviour.
Who runs it
FullSpec team only. Process owner is not required.
3
Phase 3: End-to-End Production Test
Full live cycle run with process owner sign-off
Scope
One complete OKR cycle run against the live production environment: real Slack workspace (test channel), live Google Sheet (test tab), and live Notion page (marked as test). Every automated node is exercised.
Environment
Production environment. All connections use live credentials scoped to designated test channels and pages. Test records are voided after sign-off.
Credential rule
Production API tokens active. Slack messages directed to an internal test channel only. Notion page tagged as TEST and removed post-approval. Google Sheet test tab archived.
Pass condition
All cases T20 through T23 pass, including process owner review and explicit approval recorded in the FullSpec confirmation log.
Who runs it
FullSpec team executes; process owner reviews outputs and approves at T23.
Test and QA PlanPage 1 of 4
FS-DOC-06Quality

02Phase 1 — unit test cases

Sandbox credentials only during Phase 1. Do not connect production Slack tokens, live Google Sheet IDs, or real Notion workspace credentials at any point in this phase. All Slack messages must target a dedicated test channel (e.g. #okr-test-sandbox). All Sheet writes must target a clearly labelled staging workbook. Mixing sandbox and production credentials will invalidate Phase 1 results.

Agent 1: OKR Collection Agent

ID
Scenario
Input
Expected Output
Pass Criteria
T01
Happy path: scheduled trigger fires and Slack form sent to all team leads
Cron trigger fires at configured weekday and time; team lead list has 5 valid Slack user IDs
Structured Slack message with key result fields delivered to each of the 5 team leads within 60 seconds of trigger
All 5 Slack messages confirmed delivered; message payload contains objective title, KR name, current-value input field, and submission deadline
T02
Happy path: team lead submits a valid response
Team lead submits form with a numeric current value (e.g. 72) within the submission window
Row written to the master OKR Google Sheet with correct objective, KR, owner, submitted value, and timestamp columns populated
Sheet row exists; all columns match submitted payload; no duplicate rows created; submission timestamp within 10 seconds of form submit
T03
Happy path: 24-hour reminder fires for non-responders
Team lead has not submitted 24 hours after initial form send
Follow-up Slack reminder sent to non-responding team lead referencing the open KRs
Reminder message delivered to correct user only; responders do not receive the reminder; message references submission deadline
T04
Happy path: 48-hour reminder fires if still no response
Team lead has not responded after 24-hour reminder
Second follow-up Slack reminder sent at 48-hour mark
Second reminder delivered to the same non-responding user only; no third automatic reminder beyond 48 hours
T05
Failure: Slack API unavailable at trigger time
Cron trigger fires; Slack API returns a 503 error
Error logged to the automation platform error log; retry attempted after 5 minutes; alert raised if retry also fails
No silent failure; error log entry created with timestamp and status code; retry behaviour confirmed via log
T06
Failure: team lead Slack user ID not found (deactivated user)
Form send attempted to a user ID that no longer exists in the workspace
Error flagged in the run log; message skipped for that user; remaining team leads receive their forms
Deactivated user does not block the batch send; error entry in log identifies the invalid user ID; all other messages delivered
T07
Failure: Google Sheets write fails after successful form submission
Team lead submits valid response; Google Sheets API returns a 403 or timeout
Write retry attempted up to 3 times; if all retries fail, error logged and ops manager notified via Slack
Run log shows retry attempts; ops manager test-channel notification received if write ultimately fails; no data silently lost

Agent 2: OKR Analysis and Reporting Agent

ID
Scenario
Input
Expected Output
Pass Criteria
T08
Happy path: all responses in, progress percentages calculated correctly
Google Sheet contains 12 submitted KR rows with numeric current values and targets
Each row gains a calculated progress percentage column (current / target * 100) and a RAG status (Green >= 70%, Amber 50-69%, Red < 50%)
All 12 rows show correct percentage values; RAG status matches threshold rules; no formula errors in sheet
T09
Happy path: at-risk KRs correctly identified and flagged
Sheet contains 3 KRs below 50% progress threshold
Those 3 KRs assigned Red RAG status; flagged in the at-risk list passed to the reporting step
At-risk list contains exactly the 3 below-threshold KRs; no false positives; flag field populated in sheet
T10
Happy path: Notion cycle summary page created correctly
Analysis output for a full cycle (12 KRs, 3 at-risk, 2 on-track objectives flagged as Amber)
New Notion page created under the configured parent page; page contains progress table, at-risk section, and cycle date header
Notion page exists with correct parent; progress table has one row per KR; at-risk section lists the 3 Red KRs; page title includes cycle date
T11
Happy path: Slack leadership digest posted with correct formatting
Notion page URL available; at-risk list and overall OKR health summary available
Formatted Slack message posted to the designated leadership test channel; message includes overall status, at-risk count, and link to Notion page
Message appears in leadership test channel; at-risk count matches Phase 1 T09 output; Notion link is valid and resolves
T12
Failure: Notion API unavailable when attempting to create cycle page
Analysis complete; Notion API returns 503 on page creation attempt
Error logged; retry attempted twice; if all retries fail, digest still posted to Slack with a note that the Notion page could not be created
Slack digest is posted regardless of Notion failure; error entry in run log references Notion 503; ops manager test channel receives alert
Test and QA PlanPage 2 of 4
FS-DOC-06Quality

03Phase 2 — integration and edge case tests

Integration tests verify that the two agents hand off data correctly and that the full automated flow from Slack form submission through to Slack digest operates as a connected pipeline. All tests run in the sandbox environment using the same test credentials established in Phase 1.

ID
Scenario
Input
Expected Output
Pass Criteria
T13
Agent handoff: Collection Agent writes all responses; Analysis Agent triggered immediately
All 5 team leads submit within the window; submission window closes
Collection Agent marks the cycle complete in the sheet; Analysis Agent trigger fires within 2 minutes of window close; no manual intervention required
Run log shows Collection Agent completion event followed by Analysis Agent start event; gap under 2 minutes; no duplicate trigger
T14
Agent handoff: submission window closes with partial responses; Analysis Agent still triggered
3 of 5 team leads submit; submission window expires
Collection Agent marks window as closed with 2 missing entries; Analysis Agent triggers; missing entries shown as blank in the Notion summary
Analysis Agent runs on partial data without error; Notion page notes 2 missing submissions; at-risk logic runs only on submitted values
T15
Data fidelity: values written by Collection Agent are read correctly by Analysis Agent
Team lead submits KR current value of 0.85 (decimal, e.g. proportion-based KR)
Analysis Agent reads 0.85, calculates progress correctly against the target (e.g. 1.0), assigns Green or Red status appropriately
No rounding or type-casting error; RAG status matches the expected threshold outcome for decimal inputs
T16
Notion to Slack link: Notion page URL correctly embedded in Slack digest
Notion page created successfully in T10-equivalent run
Slack digest contains a hyperlinked reference to the Notion page that resolves to the correct page
URL in Slack message matches the page ID returned by the Notion API; link opens the correct cycle summary page
T17
Ordering: Slack digest posted only after Notion page creation completes
Notion page creation takes 8 seconds (simulated delay)
Slack digest send is queued until Notion page URL is available; no digest posted with a missing or placeholder link
Run log confirms Slack send step starts only after Notion page URL is returned; Slack message contains valid URL
T18
Retry on partial failure: Notion fails on first attempt, succeeds on second retry
Notion API returns 503 on first call, 200 on second call (simulated)
Automation retries; Notion page created on second attempt; Slack digest posted with correct Notion URL
Run log shows one failed attempt and one successful attempt for Notion; final Slack digest is correct and complete
T19
End-of-cycle archiving: prior cycle data correctly preserved in the Google Sheet
Analysis Agent completes; new cycle tab should be created and prior cycle preserved
Current cycle data saved to a tab labelled with the cycle date; prior cycle tab remains unmodified
Sheet contains two tabs: current cycle (new) and prior cycle (unchanged); no data overwritten

Edge case tests cover abnormal inputs, missing data, tool outages, and human timeout scenarios. These cases ensure the automation fails gracefully and does not produce incorrect data silently.

ID
Scenario
Input
Expected Output
Pass Criteria
E01
Duplicate submission: team lead submits the same KR twice within the window
Two form submissions from the same user for the same KR within the open window
Second submission overwrites the first in the Google Sheet; no duplicate row created; a log note records the overwrite
Sheet contains exactly one row per KR per team lead per cycle; log shows overwrite event with both timestamps
E02
Missing required field: team lead submits form with the current-value field left blank
Form submission payload where the current_value field is null or empty string
Submission rejected with a Slack error message returned to the team lead asking them to resubmit; no blank row written to the sheet
No null row in Google Sheet; team lead receives a Slack prompt within 30 seconds; row only written on valid resubmission
E03
Non-numeric value submitted for a numeric KR field
Team lead types a text string (e.g. 'almost done') into a numeric current-value field
Submission rejected; team lead receives a Slack message specifying that a numeric value is required; field not written to sheet
Sheet unchanged; team lead prompt received; run log records validation failure with submitted value captured for review
E04
Slack unavailable during reminder window
24-hour reminder fires; Slack API returns 503
Reminder logged as failed; retry after 10 minutes; if retry fails, error logged and ops manager notified via email fallback (Google Workspace)
No silent failure; ops manager receives email fallback notification if Slack retry does not succeed within 10 minutes
E05
Team lead does not respond by end of 48-hour window (human timeout)
No submission after both 24-hour and 48-hour reminders
Collection Agent marks the team lead as non-responsive for this cycle; field left blank in the sheet with a 'No response' label; ops manager notified
Sheet row shows 'No response' in current-value column; ops manager test-channel notification lists the non-responding team lead by name; Analysis Agent still runs
E06
RAG threshold boundary: KR progress sits exactly at 50% (Amber/Red boundary)
Submitted current value produces exactly 50.0% progress against target
KR assigned Amber status (50% is the lower bound of Amber per configured thresholds); not flagged as Red
RAG status in sheet is Amber; KR does not appear in the at-risk Red list; boundary condition handled consistently with configured rules
Test and QA PlanPage 3 of 4
FS-DOC-06Quality

04Phase 3 — end-to-end production test

Important before running Phase 3. All Slack messages during this test must be directed to an internal test channel (e.g. #okr-uat-internal) — not to the live leadership channel or any real team lead. The Notion page created must be tagged 'TEST' in the title and removed from the workspace after sign-off. The Google Sheet test tab must be archived and clearly labelled 'TEST CYCLE — DO NOT USE' before the first live cycle overwrites the tab. The FullSpec team will coordinate cleanup with the process owner immediately after T23 is approved.

Phase 3 traces one complete OKR cycle from the scheduled trigger through to the leadership digest using live production credentials, live tool connections, and real (but test-designated) channels and pages. The process owner observes the outputs at each stage and records their approval at the conclusion of T23.

ID
Scenario
Steps Traced
Expected Output
Pass Criteria
T20
Full production run: trigger fires and complete collection cycle executes
Scheduled trigger fires; Slack forms sent to test team leads (internal accounts); responses submitted; reminders fire if needed; all responses written to the live Google Sheet test tab
Slack forms delivered to all designated test accounts; responses logged in the correct Sheet tab with correct column mapping; reminder fires for any delayed test response; run log clean with no errors
Run log shows all Collection Agent steps completed with green status; Sheet test tab contains one row per KR with all required columns populated; no errors or warnings in the automation platform log
T21
Full production run: analysis executes and RAG statuses correctly applied to live data
Analysis Agent reads from the live Sheet test tab; calculates progress percentages; applies RAG thresholds; identifies at-risk KRs
Each KR in the Sheet test tab has a calculated progress percentage and a correct RAG status; at-risk KRs (Red) listed in the flagged output; Amber KRs identified separately
All percentage values correct to one decimal place; RAG statuses match the agreed threshold rules (Green >= 70%, Amber 50-69%, Red < 50%); at-risk list matches expected Red KRs from the test data set
T22
Full production run: Notion page created and Slack digest posted to test channel
Notion page generated under the configured parent with test tag; Slack digest posted to #okr-uat-internal channel
Notion page exists with correct title (including cycle date and TEST label), progress table, and at-risk section; Slack digest in test channel contains overall OKR health, at-risk count, and working Notion link
Notion page title includes current cycle date; progress table row count matches KR count in Sheet test tab; Slack digest message visible in #okr-uat-internal; Notion URL in digest resolves to the correct page; no duplicate pages created
T23
Error log verification and process owner review and approval
FullSpec team presents the automation platform run log, the completed Sheet test tab, the Notion test page, and the Slack digest to the process owner for review
Run log shows zero unhandled errors across the full cycle; all outputs match expected results from T20 to T22; process owner confirms the submission experience, digest format, and RAG logic are correct and approves the system for go-live
Run log reviewed and confirmed clean by the FullSpec team; process owner explicitly approves all outputs in writing (email or message to support@gofullspec.com); approval recorded in the FullSpec confirmation log; test records cleaned up; system cleared for the first live cycle
The process owner's approval at T23 constitutes the formal sign-off for this automation. No separate signature block is required. The FullSpec team records the approval in the project confirmation log and retains a copy. Once T23 is marked as passed, the FullSpec team will activate the live schedule and hand over the runbook. For any questions before or after go-live, contact support@gofullspec.com.
Test and QA PlanPage 4 of 4

More documents for this process

Every document generated for OKR & Goal 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