Skip to content
Walid Redwan

The buyer's playbook stages 05

Proving the requirements were delivered

How to check that you got what you specified: a traceability matrix, UAT run by the people who do the work, honest defect severities, and the one test that matters more than all the others.

After this stage: Evidence, requirement by requirement, of what was delivered and what was not.

“Is it finished?” is not a question anyone can answer honestly without a structure behind it. This stage is that structure.

It only works if your requirements were numbered. If they were not, go back and number them — everything below hangs off those IDs.

The traceability matrix

One row per requirement, carried from your BRD through to the end of the project. It is the document that turns opinion into evidence.

IDRequirementCriterionTest caseResultSigned
FIN-014No duplicate vendor billsBlocked with a message naming the existing billUAT-031Pass12 May, A. Hassan
SAL-003Orders over 500k approved by commercial managerCannot confirm before approval; approval visible afterUAT-012Pass12 May, A. Hassan
INV-011Stock per branchCounts per branch match a physical countUAT-044Fail — retest—
HR-007Shift feeds payroll and billing from one entryOne entry produces both linesUAT-050Pass with note14 May, M. Saleh

Rules that keep it honest:

  • Every requirement gets a row, including the ones marked Standard in the fit-gap. “Standard” is a claim until tested.
  • Every row gets a test case, written from the acceptance criterion, not from the screen.
  • Only Pass or Fail. Not “mostly working”. A conditional pass carries a written note saying what was accepted.
  • The partner does not sign it. You do.
Test case From the criterion Run by a real user Defect Logged with severity and steps Fix Partner corrects on staging Retest Same tester same script A defect is closed when the tester says so, never when the developer does

Run UAT properly

User acceptance testing goes wrong the same way everywhere: it is run by managers, on invented data, a week before go-live, as a demonstration.

Make it the opposite.

The people who do the work do the testing. The storekeeper tests receiving. The AP clerk tests vendor bills. Managers are the worst testers of their own departments, because they know how it is supposed to work rather than how it does.

Test on migrated data, not demo data. Half of all real defects only appear with your actual product names, your actual customers and your actual volumes.

Script it by role. Give each tester a numbered list of tasks in the order they would really do them, with the expected result written down. Testing without a script produces “it seems fine”, which is worth nothing.

Give it real time. Two to three weeks, with testers released from part of their normal duties. UAT squeezed into three days is a formality, and the defects it did not find will be found by your customers.

Classify defects honestly

Everyone argues about severity, so agree the definitions before testing starts.

SeverityMeaningEffect on go-live
CriticalBusiness cannot operate. Cannot invoice, cannot ship, wrong postings.Blocks go-live
HighA core process needs a manual workaround every time.Blocks go-live unless the workaround is written and accepted
MediumWorks, but awkward or slow.Fix after go-live, with a date
LowCosmetic, wording, layout.Backlog

Two things to watch. Partners under date pressure reclassify Criticals as Highs — check the reasoning yourself. And your own team will report unfamiliarity as defects; some “this is wrong” is really “this is different”, and that is a training matter, not a defect.

The test that matters most

Everything above is preparation for one thing: run your real month on staging.

For one full period, enter genuine transactions into the new system in parallel with the old one. Real sales, real purchases, real receipts, real payments, right through to closing the period.

Then compare:

  • Do the trial balances agree?
  • Does stock in the system match a physical count?
  • Do the margins look like the margins you know?
  • Did the close take a sensible amount of time?
  • What did people have to do outside the system to make it work?

The last question is the important one. Every workaround your team invented during the parallel run is a requirement that was missed, and finding it now costs a fraction of finding it in production.

No parallel run means no evidence. Whatever the pressure on the date, do not skip this.

Exit criteria

Agree these in writing before UAT starts, so nobody negotiates them under deadline pressure:

UAT IS COMPLETE WHEN

  All Must requirements ............ Pass
  Critical defects ................. zero open
  High defects ..................... zero open, or accepted in writing
                                     with a named workaround and a fix date
  Parallel run ..................... one full period closed and reconciled
  Trained users .................... every role, attendance recorded
  Medium and Low ................... listed, owned, with dates

  Signed ........... decision owner, date

If you are asked to go live without these met, that is a decision the sponsor makes deliberately and in writing — not a detail settled in a status call.

Stuck on something here?

These guides are free and always will be. If you are working through one and you hit something that does not make sense, write to me — I answer.

Send me a message