WOMMWorks On My Machine · onmymachineitworks.comSample · fictional data

QA Health Check · Audit report

Acme Ledger · QA Health Check

14 findings · 4 high priority
Period
17 Aug 2026 – 28 Aug 2026 (2 weeks)
Scope
Web app and Public API; release process; Xray; CI; UAT; environments
Access
Read-only: Jira, Confluence, Xray, GitHub, Sentry, staging
Interviews
CTO, 2 engineering leads, product owner, Finance, Support
Data analysed
1,240 Xray cases, 12 releases, 488 E2E tests, 54 open bugs
Prepared by
Tomasz Kordiak (QA lead)
Report date
28 Aug 2026

Executive summary

Acme ships every two weeks with a capable team and a solid UI test suite, but nobody can say with confidence what was tested before a release. Tests exist; the process around them doesn't: no exit criteria, an outdated test management tool, UAT in Slack, no API tests and no release report. 8 of the last 12 releases needed a hotfix within a week (11 hotfixes in total).

The four changes with the best return are a release checklist with exit criteria, an API smoke suite in CI, recorded UAT, and a cleaned-up Xray linked to tickets. Together they take about 6 weeks with the current team plus part-time QA support.

Biggest risk found

Users with the read-only Accountant role can export every customer's contact details as CSV (F-01, ACME-471). That is personal data beyond what the role needs.

Snapshot

1,240Test cases in Xray
65%Not run in 6 months
65%Not linked to a ticket
488E2E tests (Playwright)
0API tests
8 / 12Releases with a hotfix

Scores by area

AreaScoreWhy
Release process 2/5No written exit criteria; go/no-go decided in a chat thread the evening before.
Requirements and acceptance criteria 2/531% of stories in the last 3 releases had no acceptance criteria.
Test management (Xray) 2/51,240 cases; 38% not run in 6 months; 41% not linked to any ticket.
Coverage of risky areas 3/5Payments and auth well covered; data retention, exports and roles barely.
Test automation (UI) 3/5488 Playwright tests, healthy; 6% of runs have flaky failures.
Test automation (API) 1/5No API tests; integrations rely on UI tests and customers.
CI and quality gates 3/5E2E runs on merge; failures don't block the release branch.
Environments and test data 2/5Staging shared by 3 teams; data reset by hand, about monthly.
Defect management 4/5Clear templates and priorities; 23 bugs older than 90 days with no owner.
UAT with the business 2/5Finance tests from screenshots in Slack; results not recorded.
Non-functional testing 1/5No load, security or accessibility testing in the last 12 months.
Reporting to management 1/5No release report; management asks engineers what was tested.

Average 2.2 / 5. Scale: 1 = missing, 3 = works but depends on individuals, 5 = documented, measured and routine.

Findings 14 findings

IDFindingPriorityAreaEffort
F-01Read-only role can export all customer contact dataHighSecurity / GDPRS
F-02No release exit criteria or release reportHighRelease processS
F-03UAT results are not recordedHighUATS
F-04No API tests; integrations untested before releaseHighAutomationM
F-05Test management has drifted from the productMediumXrayM
F-06Data retention and deletion untestedMediumCoverageS
F-07Shared staging with manual data resetsMediumEnvironmentsM
F-08E2E failures don't block the release branchMediumCIS
F-0931% of stories without acceptance criteriaMediumRequirementsS
F-10No load, security or accessibility testingMediumNon-functionalL
F-11Flaky E2E tests are retried, not fixedLowAutomationS
F-1223 bugs older than 90 days without an ownerLowDefectsS
F-13Bug reports from support lack reproduction stepsLowDefectsS
F-14Old test folders from 2024 teams still activeLowXrayS

Effort: S = under 2 days, M = up to 2 weeks, L = more. Details for the high-priority findings:

High F-01 Read-only role can export all customer contact data

Evidence
As Accountant, Customers → Export CSV downloads 312 customers with names, emails and phone numbers. The role description says 'invoices and reports only'.
Impact
Personal data available to more people than needed (GDPR data minimisation); easy to leak by email.
Recommendation
Restrict the export to Admin and Finance; add a role-permission matrix test.

High F-02 No release exit criteria or release report

Evidence
Last 12 releases: go/no-go discussed in Slack; no record of what was tested; 11 hotfixes within 7 days.
Recommendation
One-page checklist with exit criteria; a release report from Xray for each release.

High F-03 UAT results are not recorded

Evidence
Finance tests from screenshots posted in #release; 3 of the last 4 UATs have no record of which flows were checked.
Recommendation
Plain-English UAT cases in Xray, assigned per tester; a screenshot per result.

High F-04 No API tests

Evidence
69 documented API operations, 0 automated tests. 4 of the last 12 hotfixes were API regressions reported by customers.
Recommendation
Run the 126 smoke checks written during this audit in CI on every staging deploy, then extend to all resources.

Defects found during the audit 8 reported in Jira

KeySummarySeverityStatusComponentFound byOwnerCreated
ACME-471Accountant role can export every customer's contact details as CSVHighOpenRolesExploratoryBackend19 Aug
ACME-472Invoice PDF shows the old company address after a settings changeMediumOpenPDFExploratoryBackend19 Aug
ACME-473GET /customers?country=xx returns 500 instead of 400MediumOpenCustomers APIAPI smokeBackend20 Aug
ACME-474Webhook delivery log shows times in UTC without a labelLowOpenWebhooksExploratoryFrontend20 Aug
ACME-475Session not invalidated after password changeMediumOpenAuthExploratoryBackend21 Aug
ACME-476Report CSV uses comma decimal separator for English localeLowOpenReportsAPI smokeBackend21 Aug
ACME-477Portal payment page has no visible focus indicatorLowOpenCustomer portalExploratoryFrontend24 Aug
ACME-478OpenAPI spec lists DELETE /customers/{id} which returns 405LowOpenAPI docsAPI smokeBackend25 Aug

Observations

IDAreaObservationImpactSuggested action
OBS-01TeamDevelopers write good unit tests (78% line coverage on the backend).PositiveKeep; the gap is above unit level.
OBS-02AutomationThe Playwright suite is well structured and fast (11 min on 4 shards).PositiveBuild on it; no rewrite needed.
OBS-03ProcessHotfixes skip review on Fridays to 'get them out before the weekend'.RiskSame checklist for hotfixes; smoke test before deploy.
OBS-04ToolsXray and a Google Sheet are both used to track UAT; they disagree in 14 places.EffortXray only (finding F-03).
OBS-05MonitoringProduction errors are visible in Sentry but nobody reviews them before a release.RiskAdd 'new errors since last release' to the release checklist.
OBS-06SupportSupport files 6–10 bugs a month; 40% are duplicates or questions.EffortWeekly 20-minute triage with QA.
OBS-07DocsConfluence has a test strategy from 2023 that no one follows.LowReplace with the one-page checklist.

Risk map

Product areaBusiness impactChange frequencyTest coverageRisk
Webhooks and API43160
Data retention and deletion52150
Roles and permissions43248
Customer portal44348
Invoice totals and VAT54440
Reports and exports33236
Recurring invoices42232
Payments and refunds53430
Search22216
Settings22312

Each scored 1–5. Risk = impact × change frequency × (6 − coverage). Highest-risk areas get tests first.

Test management inventory

Xray folderCasesRun in 6 monthsLinked to ticketAutomatedLast run
Invoices2146158522026-08-12
Payments1687466412026-08-12
Customers965247302026-07-30
Credit notes54182092026-06-03
Recurring722125122026-05-21
Reminders483028142026-07-30
Reports883136182026-06-17
Users and roles644041242026-08-12
Customer portal927061382026-08-12
Settings58221982026-04-08
Integrations4191242026-02-25
Team A (2024)8201202025-11-19
Team B (2024)670902025-10-02
Old regression710402025-06-30
Misc / unsorted250202025-09-15
Total1240428440250

Highlighted folders belong to 2024 team structures and haven't been run since; archive candidates.

Automation inventory

SuiteTestsRuntimeFlaky runsRuns onOwner
Backend unit tests (Jest)2,9403 min0%Every PRBackend
Frontend unit tests (Vitest)1,2102 min0%Every PRFrontend
E2E (Playwright, Chromium + WebKit)48811 min6%Merge to mainFrontend
API tests0–––Nobody
Load tests0–––Nobody
Visual regression0–––Nobody

Release history

ReleaseDateTicketsHotfixes ≤ 7 daysCustomer-found defects
3.92026-03-043113
3.102026-03-1827–1
3.112026-04-013524
3.122026-04-1522–2
3.132026-04-292912
3.142026-05-134015
3.152026-05-2726–1
3.162026-06-103313
3.172026-06-243826
3.182026-07-0824–2
3.192026-07-223013
4.02026-08-054627

Over 12 releases: 11 hotfixes and 39 defects found by customers.

Defect backlog

Severity< 30 days30–90 days90–180 days> 180 daysTotal
Critical––––0
High211–4
Medium976830
Low1411121552

86 open bugs; 42 older than 90 days, 23 of them with no owner.

Interviews

WhoKey point
CTO“I find out what was tested when a customer tells me what wasn't.”
Engineering lead (backend)Wants API tests but nobody owns them; unit tests are strong.
Engineering lead (frontend)Playwright suite is trusted; flaky tests are annoying but known.
Product ownerAcceptance criteria are written 'when there's time'; UAT is the safety net.
Finance (UAT)Doesn't know which flows to test; uses last release's Slack thread as a checklist.
Support leadMost escalations are permissions and exports; bugs are hard to reproduce.

30 / 60 / 90-day plan 17 tasks

WhenTaskOwnerEffortDone when
Days 1–30Fix ACME-471 (export permission)Backend1 dFix released and tested for all 5 roles
Days 1–30One-page release checklist with exit criteriaQA + Eng lead1 dUsed for the next 2 releases
Days 1–30Release report per release from XrayQA2 dReport sent to management for 4.1 and 4.2
Days 1–30API smoke suite in CI (126 checks written in the audit)QA2 dRuns on every staging deploy
Days 1–30Triage the 23 old bugsPO + QA1 hEach closed, scheduled or owned
Days 1–30Acceptance criteria required in Jira workflowPO1 hNo story enters sprint without them
Days 31–60Restructure Xray by product area; archive 4 old foldersQA (with agent)3 dEvery 4.x ticket has linked cases
Days 31–60Plain-English UAT cases for Finance, Support, ControllingQA3 dUAT for 4.1 recorded in Xray
Days 31–60Seed script and nightly staging resetPlatform3 dData reset without manual work
Days 31–60E2E failures block the release branchEng lead1 hBranch protection rule active
Days 31–60Data retention tests (API + E2E)QA2 dTests in CI before retention ships
Days 31–60Extend API suite to all resourcesQA4 d≥ 250 checks, ≥ 90% of operations
Days 61–90Fix the 2 known flaky testsQA1 d< 1% flaky runs over 2 weeks
Days 61–90First load test at expected peakQA3 dCapacity known before January
Days 61–90Penetration test of web app and APIQA / security5 dReport and retest
Days 61–90Accessibility audit of key screensQA3 dWCAG 2.2 AA status known
Days 61–90Weekly support bug triageQA + Support20 min/weekDuplicate rate < 15%

KPIs to track

MetricTodayTarget in 90 days
Hotfixes within 7 days of release11 in 12 releases≤ 1 per release
Defects found by customers per release3.25 (average)≤ 1
Stories with acceptance criteria69%100%
Xray cases run in the last 6 months35%≥ 90%
Cases linked to a ticket35%≥ 95%
API operations covered by tests0%≥ 90%
Flaky E2E runs6%< 1%
Time to produce a release reportNot produced≤ 5 minutes

What you keep

This report and the raw data behind every number; 126 API smoke checks in your repository (/qa/api-smoke); a draft release checklist and UAT case template in Confluence; the risk map as a spreadsheet.

Sample report. Acme Ledger, its data, people and defects are fictional. Your report shows your product, your tickets and your tools.
More sample reports · Book a 15-minute call