Back to Multichannel Inventory Sync

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

Multichannel Inventory Sync

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

This document defines the complete testing strategy for the Multichannel Inventory Sync automation, covering all scripted test cases from isolated unit tests through to a supervised production run. It is written for the FullSpec build team and is structured so that the process owner can follow along during Phase 3. Testing is conducted in three sequential phases: no phase begins until the previous phase fully passes. FullSpec runs Phases 1 and 2 independently; the process owner joins Phase 3 to observe the live run and record approval.

01Testing approach

Testing is organised into three phases that run in strict sequence. Phase 1 validates each agent in isolation using sandbox credentials and synthetic data. Phase 2 validates the handoffs between agents and exercises edge cases including missing data, duplicate events, and tool unavailability. Phase 3 is a single supervised end-to-end run against live production credentials, observed by the process owner, whose sign-off closes the QA cycle. No phase begins until every test case in the preceding phase carries a Pass status.

1
Phase 1: Unit Testing
Each agent tested in isolation with synthetic sandbox data
Scope
Stock Level Sync Agent and Reorder Alert and Finance Sync Agent, each tested independently against mocked or sandbox API endpoints.
Environment
Sandbox only. Shopify development store, Linnworks sandbox org, Amazon Seller Central sandbox, Xero demo company, Slack test workspace, Google Sheets staging spreadsheet.
Credential rule
No production API keys may be loaded into the automation platform during Phase 1. Sandbox credentials only. Confirm via platform credential store before each run.
Pass condition
All test cases T01 through T12 return the expected output with no unhandled exceptions.
Who runs it
FullSpec team only. Process owner is not required for Phase 1.
2
Phase 2: Integration and Edge Case Testing
Agent handoffs and failure scenarios validated end-to-end in sandbox
Scope
Full agent chain from trigger through to Xero journal posting, including all handoff points. Separate edge-case suite covering duplicates, missing fields, tool downtime, and human timeout.
Environment
Sandbox only, same credential set as Phase 1. No production data introduced.
Credential rule
Sandbox credentials only. OAuth tokens scoped to sandbox organisations. Confirm token expiry and refresh behaviour before the session begins.
Pass condition
All integration test cases T13 through T20 and all edge cases E01 through E06 pass. Any case that surfaces an unhandled exception must be fixed and re-run before Phase 3 is opened.
Who runs it
FullSpec team only. Process owner is not required for Phase 2.
3
Phase 3: End-to-End Production Test
Single supervised live run with process owner present
Scope
One complete workflow run traced from a real triggering event through every agent, every API call, every notification, and every ledger entry, all against live production credentials.
Environment
Production. Live Shopify store, live Amazon Seller Central account, live Linnworks organisation, live Xero company, live Slack workspace, live Google Sheet.
Credential rule
Production credentials active. Use a designated internal test SKU and a test order placed from an internal account. Void or manually reverse all records created during the test run immediately after sign-off.
Pass condition
All test cases T21 through T24 pass, including process owner approval recorded as T24.
Who runs it
FullSpec team executes. Process owner (Fulfilment Coordinator) must be present and observing for T21 through T24. Process owner records approval at T24.
Test and QA PlanPage 1 of 4
FS-DOC-06Quality

02Phase 1 — unit test cases

Sandbox credentials only during Phase 1. Before running any test case in this section, confirm that every credential loaded into the automation platform points to a sandbox or development environment. No production keys, tokens, or organisation IDs may be present in the credential store. Verify this in the platform's secrets manager before the first run.

Stock Level Sync Agent — estimated build time: 28 hours, complexity: Complex. The following cases test the agent in isolation. Each run uses a synthetic event payload injected directly into the agent trigger without relying on a live channel webhook.

ID
Scenario
Input
Expected Output
Pass Criteria
T01
Happy path: new Shopify order, valid stock
Shopify order webhook payload, SKU: TEST-001, qty sold: 2, Linnworks on-hand: 50
Linnworks queried; new qty calculated as 48; Shopify inventory updated to 48; Amazon updated to 48; Google Sheets audit row appended
All four API calls return HTTP 200; Google Sheets row contains correct SKU, old qty (50), new qty (48), event type (order)
T02
Happy path: Amazon order, valid stock
Amazon Seller Central order event, SKU: TEST-002, qty sold: 1, Linnworks on-hand: 30
Linnworks queried; new qty: 29; Shopify updated to 29; Amazon Listings API updated to 29; audit row written
All API responses 200; audit row fields match expected values; no error logged
T03
Happy path: confirmed return, sellable stock
Linnworks return event, SKU: TEST-001, return qty: 1, Linnworks on-hand pre-return: 48
New qty calculated as 49; Shopify updated to 49; Amazon updated to 49; audit row appended with event type (return)
Qty increments correctly; both channel APIs return 200; audit row event_type field equals 'return'
T04
Happy path: purchase order receipt
Linnworks PO receipt event, SKU: TEST-003, received qty: 100, prior on-hand: 5
New qty: 105; Shopify updated to 105; Amazon updated to 105; audit row appended with event type (po_receipt)
Qty adds inbound units correctly; both channels at 105; audit row event_type equals 'po_receipt'
T05
Anomaly: calculated qty would be negative
Shopify order, SKU: TEST-004, qty sold: 10, Linnworks on-hand: 3
Agent halts channel update; anomaly flag written to Google Sheets; no Shopify or Amazon API call made
Zero channel API calls recorded; Google Sheets anomaly row present with flag_type 'negative_qty'; no unhandled exception
T06
Linnworks API returns 503 (unavailable)
Any trigger event for SKU: TEST-001
Agent catches error; workflow pauses; error logged to Google Sheets error tab; retry scheduled after 5 minutes
No channel update attempted; error row in Sheets contains timestamp, SKU, error code 503; retry logic initiates
T07
Shopify API returns 429 (rate limit)
Valid order event; Shopify returns 429 on inventory update call
Agent applies exponential backoff; retries up to 3 times; succeeds on retry or logs permanent failure after 3 attempts
Retry counter increments correctly; success logged on retry; if all retries fail, error row written and Amazon update still proceeds
T08
Amazon Listings API delay (eventual consistency)
Valid order event; Amazon API returns 200 but listing visibility delayed 90 seconds
Agent treats 200 as success; no additional retry triggered; audit row marked success
200 response accepted as pass; agent does not treat propagation delay as a failure; audit row status equals 'success'
T09
Multi-SKU order (three SKUs in one event)
Shopify order containing TEST-001 (qty 1), TEST-002 (qty 2), TEST-003 (qty 3)
All three SKUs processed sequentially; Linnworks queried per SKU; all three channels updated; three audit rows written
Three separate audit rows in Sheets; all six channel API calls (2 per SKU) return 200; no SKU skipped

Reorder Alert and Finance Sync Agent — estimated build time: 16 hours, complexity: Moderate. These cases test the agent in isolation. The agent receives the output of the Stock Level Sync Agent as its input. For unit testing, that output is injected as a synthetic payload.

ID
Scenario
Input
Expected Output
Pass Criteria
T10
Happy path: SKU at reorder threshold, Slack alert fires
Sync complete event, SKU: TEST-005, new qty: 10, reorder threshold: 10
Slack message posted to buying team channel listing SKU name, current qty (10), and reorder point (10); Xero journal entry posted
Slack API returns 200; message body contains SKU, qty, and threshold fields; Xero journal entry ID returned in response
T11
SKU below reorder threshold
Sync complete event, SKU: TEST-006, new qty: 4, reorder threshold: 10
Slack alert fires; Xero journal posted
Same pass criteria as T10; alert fires when qty is below (not only equal to) the threshold
T12
SKU above reorder threshold, no alert
Sync complete event, SKU: TEST-001, new qty: 48, reorder threshold: 10
No Slack message sent; Xero journal entry posted for the stock movement
Zero Slack API calls recorded for this run; Xero journal entry present; no error logged
Test and QA PlanPage 2 of 4
FS-DOC-06Quality

03Phase 2 — integration and edge case tests

Phase 2 validates that the two agents communicate correctly and that the complete chain from trigger to Xero posting produces the right outcome. IDs continue from the Phase 1 sequence. A separate edge-case table follows, using the E01 series, covering failure modes that span agent boundaries or involve missing and ambiguous data.

ID
Scenario
Input
Expected Output
Pass Criteria
T13
Full chain: order triggers sync and alert
Shopify order event, SKU: TEST-005, qty sold: 3, Linnworks on-hand: 13, reorder threshold: 10
Stock Level Sync Agent updates channels to 10; hands completion event to Reorder Alert Agent; Slack alert fires; Xero journal posted; four audit items in Sheets
All channel APIs return 200; Slack message present; Xero journal entry ID present; Google Sheets has sync audit row and no error rows
T14
Full chain: PO receipt raises qty above threshold, no alert
Linnworks PO receipt, SKU: TEST-006, received: 50, prior on-hand: 4, threshold: 10
Channels updated to 54; Reorder Agent evaluates 54 vs threshold 10; no Slack alert; Xero journal posted
No Slack API call recorded; Xero journal entry present; audit row shows event_type po_receipt and new_qty 54
T15
Full chain: return raises qty to exactly threshold, alert fires
Linnworks return event, SKU: TEST-007, return qty: 2, prior on-hand: 8, threshold: 10
Channels updated to 10; Slack alert fires (boundary condition at threshold); Xero journal posted
Slack fires on qty equal to threshold; channel APIs return 200; Xero journal present
T16
Handoff: Sync Agent completes successfully, Reorder Agent receives correct payload
Sync Agent completion event with payload containing sku_id, new_qty, event_type, timestamp
Reorder Agent parses all four fields without error; threshold lookup executes against correct SKU
No field parse errors; threshold comparison uses new_qty from handoff payload; no fallback or default value substituted
T17
Rapid sequential events: two orders on the same SKU within 10 seconds
Two Shopify order events for TEST-001, 30 seconds apart, qty 1 each, starting on-hand: 20
First event updates channels to 19 and completes audit row; second event re-queries Linnworks (now 19), updates to 18; two audit rows written
Final qty on both channels is 18; two distinct audit rows with sequential timestamps; no qty overwrite or race condition
T18
Xero posting after multi-SKU order
Three-SKU order event (TEST-001, TEST-002, TEST-003)
Three separate Xero journal lines posted, one per SKU movement, within the same journal batch
Xero API returns journal batch ID; three line items present in the journal; amounts correspond to stock movement per SKU
T19
Google Sheets audit log: row structure validation
Any completed sync event
Audit row contains: timestamp, sku_id, event_type, old_qty, new_qty, channels_updated, status
All seven columns populated; no blank cells; status field equals 'success' for a clean run or 'anomaly' for a flagged run
T20
Slack alert message format validation
SKU below threshold event, SKU: TEST-008, new qty: 3, threshold: 15
Slack message contains: SKU identifier, current quantity, reorder threshold, and a prompt to raise a purchase order
Message text includes all four elements; no raw variable tokens visible (e.g. no unfilled placeholders); delivered to correct channel

Edge case tests (E series) cover scenarios that sit outside the happy path but are realistic in a live multichannel environment. Each must be resolved before Phase 3 opens.

ID
Scenario
Input
Expected Output
Pass Criteria
E01
Duplicate trigger event (same order ID received twice)
Shopify order webhook fires twice for order ID SH-9981, SKU: TEST-001, qty: 1
Idempotency check matches order ID on second receipt; second event discarded without processing; one audit row written
Exactly one audit row for order SH-9981; channels updated once; no duplicate qty decrement; idempotency log entry present
E02
Missing SKU identifier in trigger payload
Shopify order webhook with null sku_id field
Agent catches missing field; workflow halts; error row written to Google Sheets error tab with payload excerpt; no channel API call made
Zero channel API calls; error row present with error_type 'missing_sku'; no unhandled exception thrown
E03
Reorder threshold not set for a SKU
Sync complete event, SKU: TEST-NOTHRESH, new qty: 5, threshold field: null
Reorder Agent skips threshold comparison for this SKU; logs a warning row to Sheets; Xero journal still posted
No Slack alert fired; warning row in Sheets with warning_type 'threshold_not_configured'; Xero journal entry present
E04
Linnworks API completely unavailable for more than 15 minutes
Trigger event received; all Linnworks API calls return 503 for 15 minutes
Agent retries with exponential backoff for three attempts; after final failure, error logged to Sheets; no channel update made; Slack error alert sent to ops channel
Three retry attempts logged with timestamps; error row in Sheets; ops channel Slack message present; no partial channel update recorded
E05
Return event for a SKU not currently listed on Amazon
Linnworks return event, SKU: TEST-AMZONLY, present in Shopify but not in Amazon Seller Central
Shopify updated correctly; Amazon API call returns 404 for unlisted SKU; error captured; audit row written with partial_success status; Xero journal posted
Shopify qty updated; audit row status equals 'partial_success'; Amazon 404 recorded in error detail field; Xero journal present
E06
Human anomaly flag not actioned within 24 hours
Negative qty anomaly flagged for SKU: TEST-004 at T+0; no human action taken for 24 hours
Automation platform sends a follow-up Slack reminder to the fulfilment coordinator at T+24h; audit row updated with reminder_sent timestamp
Reminder Slack message delivered at T+24h; audit row reminder_sent field populated; no automatic channel update made without human approval
Test and QA PlanPage 3 of 4
FS-DOC-06Quality

04Phase 3 — end-to-end production test

Important before running Phase 3: Use only a designated internal test SKU (agreed with the process owner before the session) and place the triggering order from an internal account, not a real customer account. All records created during Phase 3, including the Shopify order, the Amazon inventory update, the Xero journal entry, and the Google Sheets audit row, must be voided or manually reversed by the FullSpec team immediately after the process owner records approval at T24. Confirm the reversal plan with the Finance Manager before the session begins. Do not proceed with Phase 3 if any Phase 2 test case is still in a Fail or Blocked state.

Phase 3 consists of four test cases run in sequence as a single observed session. The process owner (Fulfilment Coordinator) must be present for the full session. FullSpec executes each step, narrates the outcome, and records the result. The session is considered complete only when T24 is signed off by the process owner and that approval is recorded in the FullSpec confirmation log.

ID
Scenario
Steps Observed
Expected Output
Pass Criteria
T21
Production run: Shopify order placed on internal test SKU
1. Place order on live Shopify store for internal test SKU (qty 1). 2. Observe trigger received in automation platform. 3. Observe Linnworks API call. 4. Observe Shopify and Amazon inventory API calls. 5. Observe Google Sheets audit row append.
All channel quantities updated within 2 minutes of order placement; audit row written with correct old and new quantities; no anomaly flag raised
Both Shopify and Amazon reflect reduced qty within 2 minutes; audit row present with status 'success'; FullSpec confirms all four API calls returned 200 in the platform execution log
T22
Production run: Reorder Agent fires correctly on low-stock SKU
1. Confirm test SKU qty is at or below its reorder threshold after T21 (or manually set threshold above current qty in Sheets). 2. Observe Reorder Agent evaluation. 3. Observe Slack message delivery. 4. Observe Xero journal posting.
Slack alert delivered to buying team channel within 60 seconds of sync completion; Xero journal entry visible in demo or live company with correct SKU movement amount
Slack message received and contains SKU identifier, current qty, and reorder threshold; Xero journal entry ID present in platform execution log; Finance Manager confirms journal line is correctly categorised
T23
Error log and execution trace verification
1. FullSpec opens the platform execution log for the T21 and T22 runs. 2. Process owner and FullSpec review each step node: trigger receipt, Linnworks pull, qty calculation, channel pushes, Sheets write, threshold check, Slack post, Xero post. 3. Confirm no unhandled errors in the log.
Execution log shows all eight workflow nodes completing with success status; timestamps confirm sub-2-minute end-to-end duration; no error or warning entries present
All eight nodes show success in the log; total execution time under 2 minutes; zero error entries; process owner verbally confirms the log view matches the expected workflow described in the Developer Handover Pack
T24
Process owner review and approval (final gate)
1. FullSpec presents the complete test session summary: all T21 to T23 results, audit row in Sheets, Slack message received, Xero entry visible, execution log clean. 2. Process owner reviews each outcome against expected behaviour. 3. Process owner confirms approval verbally and by completing the FullSpec confirmation form.
Process owner is satisfied that the automation behaves as specified: stock updates are accurate, alerts fire correctly, finance entries are posted, and the audit trail is complete. Process owner records approval in the FullSpec confirmation form.
Process owner approval recorded in the FullSpec confirmation log. QA cycle is closed. FullSpec schedules the post-go-live 48-hour monitoring window. Any remediation items noted by the process owner are logged as post-launch tasks in the FullSpec project tracker before the session closes.
After T24 approval is recorded, the FullSpec team immediately reverses all test records created during the Phase 3 session. This includes cancelling the Shopify test order, restoring the original inventory quantities on both channels and in Linnworks, deleting or voiding the Xero test journal entry, and removing the test audit row from the Google Sheet. The process owner and Finance Manager should confirm reversals are complete before the session closes. Contact FullSpec at support@gofullspec.com with any questions about the reversal procedure.
Test and QA PlanPage 4 of 4

More documents for this process

Every document generated for Multichannel Inventory Sync.

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