Skip to content

The Business Must Test the App, Not Merely Look at It

By Tomasz Lewandowski · 15 Jul 2026 · 8 min read

The Business Must Test the App, Not Merely Look at It
Working With App Developers — User Acceptance Testing

The demo went well. The screens looked clean, the colours matched the brand, and your developer walked through the main journey without a hitch. Everyone in the room nodded. You signed off on the build and booked the go-live date.

Three weeks after launch, your operations manager calls to say the system crashes every time someone enters a partial postcode. Your top sales rep can't approve a quote on her phone. And a customer received an invoice with a £0.00 total because the system didn't handle a discount applied at the line-item level.

None of those failures appeared in the demo because nobody tested them. The developer tested what the software was designed to do. Nobody tested whether the design reflected real work — the messy, exception-filled, human work your business actually does every day.

That gap is what User Acceptance Testing exists to close. And it's the business's job to close it.

Why visual approval is not testing

Looking at screens and confirming they appear correct is not testing. It is reviewing. There is an important difference.

A review answers: does this look right? A test answers: does this work correctly when real people use it under real conditions? Reviewing catches obvious errors in layout, wording, and navigation. It does not catch what happens when a user enters a customer name with an apostrophe, submits a form twice, leaves a required field empty, or tries to access a page they shouldn't.

Developers can test whether the software behaves as designed. Only the business can test whether the design reflects real work.

Developers are expert at testing the happy path — the sequence of actions that leads cleanly from start to finish when everything goes as planned. They are also good at unit tests, integration checks, and load testing. What they cannot reliably replicate is the full variety of human behaviour that your staff and customers bring to software on an ordinary Tuesday morning.

That is not a criticism of developers. It is simply a recognition that the people who know your business processes, your unusual customers, your edge cases, and your operational pressure points are on your side of the table.

How to write test scenarios from real business work

The most effective UAT scenarios are not invented — they are borrowed from last week's work.

Ask your team: what did you actually do in the old system (or in the spreadsheet, or on the phone) last Monday? Walk through those activities one by one. A test case has three parts: a starting condition, a sequence of steps, and a clear expected result.

For example: Starting condition — a new customer with no purchase history. Steps — create enquiry, add three line items, apply a 10% trade discount, convert to a quote, receive approval, convert to an invoice, mark as paid. Expected result — the invoice shows discounted totals, payment is recorded, account balance is zero.

You need five to ten scenarios covering your most common journeys, written in plain language. Google Sheets works perfectly: one row per scenario, columns for steps, expected outcome, actual outcome, and pass/fail. A useful prompt for your team: 'Tell me about a transaction last week that was slightly unusual.' Those stories become your most valuable test cases.

Testing exceptions, wrong inputs, permissions, and mobile use

Once you have your happy-path scenarios, introduce deliberate friction. Real users make mistakes; real data is imperfect; real workflows get interrupted. Focus on four areas:

  • Wrong inputs. Future date where a past date is required, letters in a number field, a very long name, a blank required field. The system should return a clear error — not a crash or a blank page.
  • Boundary conditions. Zero items in an order. A quantity of 10,000. A discount that takes the price below zero. An invoice date on a bank holiday.
  • Permissions and roles. Can a junior staff member see data they shouldn't, or approve above their limit? Can a customer reach another customer's records by tweaking a URL?
  • Mobile use. Test on an actual phone or tablet — not a resized browser window. Focus on dropdown menus, date pickers, and multi-step forms.

None of this requires technical knowledge — only curiosity, a willingness to be awkward on purpose, and authority to insist that exceptions matter.

Recording bugs clearly: what happened, what was expected, and evidence

Finding a problem is only half the work. Reporting it so that a developer can reproduce and fix it is the other half — and this is where many UAT sessions stall.

A bug report that says 'the discount didn't work' is almost useless. A bug report that says 'I applied a 10% discount to line item 3 of order #0042, and the invoice total showed £110 instead of the expected £99' gives a developer something to act on.

Every bug report should contain:

  • What you were doing. The exact steps, in order, from the starting point.
  • What you expected to happen. The correct outcome described in plain terms.
  • What actually happened. The incorrect outcome, including any error messages verbatim.
  • Evidence. A screenshot, or better, a short screen recording. Loom's free tier is ideal for this — you record your screen for up to five minutes, share a link, and the developer can watch exactly what you did and what went wrong.
  • Environment. The device, browser, and (if you know it) your user account or role.

Decide in advance how you will track bugs. A shared Google Sheet, a simple Trello board, or whatever project tool your developer uses all work. The important thing is a single, shared list — not a mixture of emails, Teams messages, and verbal conversations that are impossible to track to resolution.

Why testing protects customer experience

UAT is the last line of defence between your customers and a poor experience they will not easily forgive. Software failures visible to customers carry a different weight to internal inefficiencies. A staff member who encounters a confusing screen will grumble and find a workaround. A customer who receives a broken confirmation email, an incorrect invoice, or a booking that disappears overnight will lose confidence in your business — and may not return.

This is particularly acute if your software handles financial transactions, appointments, customer data, or communications on your behalf. In those contexts, the software is the customer experience. Testing it rigorously is not a technical obligation — it is a commercial one.

UAT should be run by the people who will actually use the system — your most experienced operators, not the person who commissioned it. Give them protected time: UAT squeezed between other work produces superficial results. Build it into the project plan early enough that what you find can actually be fixed before launch.

Practical steps to run a proper UAT session

  • Write scenarios before opening the system. Document five to ten test cases drawn from last week's real transactions — starting condition, step sequence, expected outcome. Borrow from actual work, not hypotheticals.
  • Use realistic data. Real customer names, actual product codes, genuine price points. Systems that pass with dummy data sometimes fail with real data because of character lengths or formatting edge cases.
  • Assign one bug-reporter. One person captures every issue in the agreed format and shared tool. Bugs that live in email threads or Teams messages get lost.
  • Spend a third of testing time on exceptions. Wrong inputs, boundary values, permission checks, interrupted workflows, mobile devices. The happy path is not enough.
  • Agree what 'done' means before you start. With your developer, classify bugs: critical (blocks core work — must fix before launch), major (painful workaround exists — fix or schedule), minor (cosmetic, rare — post-launch is fine). This prevents a very uncomfortable conversation on go-live eve.
  • Record short videos for complex bugs. A 90-second Loom beats a paragraph of description. It shows exactly what happened and under what conditions.
  • Sign off in writing. When critical issues are resolved, confirm acceptance in writing. It protects both parties and marks a clean milestone.

UAT is not a tick-box before launch. It is the moment when your business takes responsibility for whether the software reflects the work it was built to support.

Getting started this week

If you have a system in UAT right now, or approaching that stage, open a blank Google Sheet today and write five test scenarios based on real transactions from last week. Not invented ones — actual work your team did. For each scenario, walk through the system step by step, exactly as a real user would, and write down what happened versus what you expected.

If even one of those five scenarios reveals a gap between designed behaviour and real-world need, you will have justified the entire testing exercise before the week is out. And you will have found it before your customers did.

How to run a proper User Acceptance Testing session

  1. Write scenarios before opening the system. Document five to ten test cases drawn from last week's real transactions rather than hypotheticals. Each case needs a starting condition, a sequence of steps, and an expected outcome - for example, create an enquiry for a new customer, add three line items, apply a 10% trade discount, convert to a quote, get approval, convert to an invoice, and mark it paid, expecting discounted totals and a zero account balance.
  2. Use realistic data. Test with real customer names, actual product codes and genuine price points. Systems that pass with dummy data sometimes fail with real data because of character lengths or formatting edge cases.
  3. Assign one bug-reporter. Have a single person capture every issue in the agreed format and shared tool - a Google Sheet, a Trello board, or whatever project tool your developer uses. Bugs that live in email threads or Teams messages get lost and cannot be tracked to resolution.
  4. Spend a third of testing time on exceptions. Deliberately test wrong inputs, boundary values, permission and role checks, interrupted workflows, and mobile devices on an actual phone or tablet. The happy path alone is not enough; the system should return clear errors, not crashes or blank pages.
  5. Agree what 'done' means before you start. With your developer, classify bugs in advance: critical (blocks core work, must fix before launch), major (a painful workaround exists, fix or schedule), and minor (cosmetic or rare, post-launch is fine). This prevents an uncomfortable conversation on go-live eve.
  6. Record short videos for complex bugs. For anything hard to describe, capture a short screen recording - a 90-second Loom beats a paragraph of text because it shows exactly what happened and under what conditions. Loom's free tier records up to five minutes and shares a link the developer can watch.
  7. Sign off in writing. Once the critical issues are resolved, confirm acceptance in writing. It protects both parties and marks a clean milestone for the project.

Frequently asked questions

Is signing off on a software demo the same as testing it?

No. Watching a demo where the screens look clean and the main journey runs without a hitch is reviewing, not testing. A review only confirms that layout, wording and navigation look right; it does not reveal what happens when a user enters a name with an apostrophe, submits a form twice, leaves a required field empty, or enters a partial postcode. Those real-world failures are exactly what slips through visual sign-off and surfaces weeks after launch.

What is User Acceptance Testing and whose job is it?

User Acceptance Testing (UAT) is the stage where you check whether the software reflects the real, exception-filled work your business actually does, rather than just what it was designed to do. The article is clear that it is the business's job to close this gap, not the developer's. Developers test the happy path and run unit, integration and load tests, but only the people who know your processes, unusual customers and edge cases can judge whether the design fits real work.

How do I write good UAT test scenarios?

Don't invent scenarios - borrow them from last week's actual work. Ask your team what they really did in the old system, on the phone or in a spreadsheet last Monday, and turn each activity into a test case with three parts: a starting condition, a sequence of steps, and a clear expected result. Aim for five to ten scenarios covering your most common journeys, written in plain language. A Google Sheet with one row per scenario - columns for steps, expected outcome, actual outcome and pass/fail - works perfectly.

What should a bug report include so the developer can actually fix it?

Every bug report should contain five things: what you were doing (the exact steps in order), what you expected to happen, what actually happened (including any error messages verbatim), evidence such as a screenshot or a short Loom screen recording, and the environment - the device, browser and your user account or role. For example, 'I applied a 10% discount to line item 3 of order #0042, and the invoice total showed £110 instead of the expected £99' gives a developer something to act on, whereas 'the discount didn't work' is almost useless.

Beyond the normal flow, what should I deliberately test?

Once your happy-path scenarios pass, introduce deliberate friction across four areas. Test wrong inputs (a future date where a past one is needed, letters in a number field, a blank required field), boundary conditions (zero items, a quantity of 10,000, a discount taking the price below zero, an invoice date on a bank holiday), permissions and roles (can a junior approve above their limit, or a customer reach another's records by tweaking a URL), and mobile use on an actual phone or tablet rather than a resized browser window. The article suggests spending about a third of your testing time on these exceptions.

Why does testing matter so much for customer experience?

UAT is the last line of defence between your customers and a poor experience they will not easily forgive. A staff member who hits a confusing screen will grumble and find a workaround, but a customer who receives a broken confirmation email, an incorrect invoice, or a booking that disappears overnight loses confidence and may not return. This is especially acute when the software handles financial transactions, appointments, customer data or communications on your behalf, because in those cases the software is the customer experience.

Share Follow
Building Your Custom Warehouse Tool
The Warehouse Blueprint

Building Your Custom Warehouse Tool

A custom tool begins with a clear outcome, not code. Own the workflow, brief real exceptions, and use the Done Ladder.

3 Aug 2026 · 5 min read
Your App Needs a Handover Plan Before It Needs a Launch Party
Working With App Developers

Your App Needs a Handover Plan Before It Needs a Launch Party

Launch day is not the end of your project — it's the moment the business needs to take control. Here's how to plan a handover that actually protects you.

17 Jul 2026 · 8 min read
Cheap Development Can Become Expensive Maintenance
Working With App Developers

Cheap Development Can Become Expensive Maintenance

The build cost is only the visible part of the iceberg. Hosting, bug fixes, security patches and future changes can cost far more over three years. Here's how to think in total cost of ownership.

16 Jul 2026 · 7 min read