← Product Engineering

We find the bugs
before your users do.

Manual testing and automated testing, for web and mobile. We can test the app you already have, or write the test suite you never got round to.

How we test

Two kinds of testing. You usually need both.

People often ask which one to buy. The honest answer is that they do different jobs. A script will never think to try something odd. A person will never run the same 400 checks every night without missing one.

Manual testing

A tester uses your app the way a real person would, and writes down everything that goes wrong. This is where the strange bugs turn up, the ones nobody wrote a test for because nobody expected them.

  • Going through each feature to check it does what it should
  • Re-checking old features after new code lands
  • Poking around freely to see what breaks
  • Trying it on real phones, not just a simulator
  • Checking it works in Chrome, Safari, Firefox and Edge
  • Helping your team run their own sign-off before launch

Automated testing

We write code that uses your app for you. It runs on every change, takes minutes instead of days, and never gets bored on the four hundredth check. Best for the things you need to test again and again.

  • Checking the main paths still work after every change
  • Testing your API directly, without the screen
  • Running the whole suite automatically when code is pushed
  • Screenshots and video of anything that failed
  • Seeing how the app behaves under heavy traffic
  • Fixing a suite that already exists but keeps failing

Tools

What we test with.

We pick the tool that suits your stack, not the one we used last time. If your team already uses something on this list, we use that.

Web automationDriving a real browser
PlaywrightCypressSeleniumWebdriverIOPuppeteer
Mobile automationReal devices and emulators
AppiumDetoxEspressoXCUITestFlutter integration tests
API testingTesting the backend on its own
PostmanNewmanREST AssuredSupertestPytest
Load and performanceWhat happens when 5,000 people arrive
k6JMeterArtilleryLighthouse
Running it automaticallyTests on every push, no one pressing a button
GitHub ActionsGitLab CIBitbucket PipelinesJenkins
Writing tests in plain languageSo non-developers can read them
CucumberGherkinSpecFlow
Keeping trackWhere test cases and bugs live
JiraXrayTestRailZephyrAzure Test Plans

AI in our testing

We use AI to go faster. Not to think for us.

Testing is one of the places AI has genuinely changed the day-to-day work, and we use it properly. It has not made testers less important. It has moved them off the parts of the job that were never worth a person's time.

Writing the first draft of tests

Give it a feature and it writes a first set of test cases. A tester reads them, throws half away and adds the ones it missed. Faster than starting from a blank page.

Turning a written test into code

A manual test case becomes an automated one in minutes rather than an hour. Still read by a person before it is allowed to run.

Repairing tests when the app changes

A developer renames a button and fifty tests break. Most can now be repointed automatically. This is where most of the cost of automation used to sit.

Working out what actually broke

Two hundred failures are rarely two hundred bugs. Grouping them by likely cause means we chase one problem instead of the symptoms.

Making test data

Realistic customers, orders and addresses, in volume, without ever using your real data.

Finding the gaps

Reading the code and the tests together to point at the parts nothing covers. Uncomfortable reading, and useful.

Still a person's job

The half that has not changed

Everything above is speed. None of it is judgement, and testing is mostly judgement.

Deciding what is worth testing

A model will happily write four hundred tests. Knowing which twelve actually matter is judgement, and it comes from having seen things go wrong before.

Knowing what right looks like

Software can pass every check and still do the wrong thing. Somebody has to understand what your business actually needs from it.

Noticing that something is annoying

No script has ever reported that a screen is confusing or that a form asks for the same thing twice. A person using it will, in the first five minutes.

Saying it is ready

When we tell you it is ready to ship, that is a person putting their name to it. Not a pass rate.

What you get

Things you keep.

Not a slide deck. Files in your repository and a list you can act on.

Written test cases

Every check we run, written down. Your team can run them too, with or without us.

Bug reports that help

What broke, the exact steps to make it happen again, and a screenshot or video. No guessing.

The test suite itself

The automation code sits in your repository. It is yours, and it works after we leave.

A report each run

What passed, what failed, and what changed since last time. One page, plain English.

Where you can start

Four ways people come to us.

You have no tests at all

Common, and not a problem. We start with the handful of things that would hurt most if they broke, and grow from there.

You have tests, but nobody trusts them

They fail for no reason, so people stopped reading the results. We find out why and make them reliable again.

A big release is coming

A round of manual testing before you go live. We tell you what is broken while there is still time to fix it.

You want testing every sprint

A tester works alongside your developers, every sprint. Same standups, same board.

Straight answers

What we will do. What we won't.

We will

  • Test what somebody else built, with no blame attached
  • Work inside your Jira, your repo, your process
  • Start small and prove it works before you spend more
  • Automate only what is worth automating
  • Tell you plainly how bad a bug really is
  • Leave you a suite your own team can run

We won't

  • Promise your app will be free of bugs. Nobody can
  • Automate everything just to raise the number
  • Hand you a pass rate that hides what failed
  • Keep the test code on our machines
  • Log 200 tiny issues to look busy
  • Take the work if you only need a day of it

Your turn

Send us the app. We'll tell you what's wrong.

Tell us what you have and what worries you. We come back with what we would test first and what it costs.