Skip to Main Content
Back to blog

// GUIDE · BUYING SOFTWARE · TESTING & SCOPE

What does "testing" actually include in a software proposal?

"Testing" is one word covering several different jobs. A proposal that does not spell them out leaves the decision about what gets tested to whoever it is most convenient for: the vendor.

  • 11 min read
  • By The OneZero team

// THE SHORT ANSWER

In one paragraph

A good "testing" clause in a software project proposal specifies four things: which types of testing are done (manual, automated, regression, real devices, load, acceptance) and who owns each — the vendor or you; what counts as "passed" through written acceptance criteria derived from the requirements; and where testing happens, meaning a staging environment separate from the live system. When the clause only says "testing included", you cannot tell what is tested and cannot compare proposals. Most disputes over "bug or new feature" come from a clause that was never defined up front.

// TL;DR

The short version — what to confirm in the testing clause

TopicWhat to require in writingWarning sign
Types of testingA list: manual, automated, regression, devices, load, acceptance — what is included and what is not"Testing included" with no detail
ResponsibilityWho writes scenarios, who runs them, who signs off — vendor or clientFinal testing falls on you without being said
Acceptance criteriaFor every feature: what you do, what should happen, and in which states (empty, error, no permission)"The system will work as expected"
EnvironmentA separate staging environment with test data that you can accessTesting directly on the live system
After acceptanceWhat counts as a bug fix versus a new request, and for how long the vendor fixes without extra chargeThe definition is set only once there is a dispute

Every software development proposal has a line that says "testing" or "QA", and it usually looks the same from every vendor. But behind it can sit very different work: a developer clicking through a few screens before handing over, or an organised process with scenarios, devices and a separate environment. This guide is a scope guide for the buyer: how to break the word into parts, how to divide responsibility, and what to require in writing. It is not a guide for people building test automation, and it does not compare vendors.

If you want to understand how testing affects pricing in general, start with the app development cost guide — it breaks down the cost drivers, and testing is one of them. What it costs to build an app — the cost drivers

The six kinds of testing hiding behind the word

Not every kind of testing is needed in every project. What matters is that the proposal says which are included — and which are not, explicitly.

TypeWhat it checksQuestion to ask the vendor
Manual testingA person goes through the system as a user and checks it does what was defined, including unusual statesWho does it — someone who did not write the code? Against which scenarios?
Automated testsCode that checks code: it runs on every change and warns when something breaksWhich parts have automated tests, and are they delivered to you with the code
RegressionA check that a new feature did not break something that worked beforeHow is this verified in each release — manually, automatically, or not at all?
Real devices and browsersThat the system works on the devices, OS versions and browsers your audience actually usesWhat is the list of devices and browsers, and who set it
Load and performanceHow the system behaves when many users or a lot of data arrive at onceIs it included at all, and if so — against which load, defined in advance
Acceptance testing (UAT)You, or business representatives, confirm the system does what you ordered — against agreed criteriaHow long do you have to test, and what happens if defects are found
Go through the table row by row against the proposal you hold and mark: included, not included, not stated. The rows with nothing written are the questions for the next meeting.

To see how this looks on our side: the mobile app development page describes testing on real iPhones and Androids, across OS versions and resolutions, as part of the project scope — with the exact device matrix set by your audience. What is included in app development — including real-device testing

Who is responsible for what: vendor versus client

Testing is shared work, and most problems appear when each side assumes the other is doing a part. The following table is a starting point for a conversation — not a fixed split. What matters is that it is written down.

ActivityUsually on the vendorUsually on the client
Writing test scenariosTechnical scenarios and edge cases derived from the specificationReal business scenarios: what daily work looks like, and which problem cases happen at your company
Running during developmentInternal tests, automated tests and QA before each handoverTrying every build shown to you, on time, and giving written feedback
Environment and test dataSetting up and maintaining stagingRepresentative test data, without real personal data that is not approved for use
Logging defectsA tracking system, and handling by an agreed priority orderClear reports: what you did, what you expected, what happened, a screenshot
AcceptanceShowing what was done and what remains openThe decision: approve or return — in writing and by the agreed date
Note the last column: if you have no one able to carry out acceptance from the business side, that is work to plan for rather than be surprised by.

What goes in the testing clause — and what does not

A testing clause you can work with contains a clear list of what is included and a separate list of what is not. The second list matters just as much: it prevents the "we thought that was included" conversation after launch.

  • The types of testing included, per the first table, including what is explicitly excluded (for example: load testing).
  • The list of platforms: devices, OS versions and browsers the system is tested on.
  • The division of responsibility, as in the second table.
  • The acceptance criteria for every stage or feature, or a commitment on when they will be written and who approves them.
  • The environment: whether there is a staging environment, who can access it, and what data it holds.
  • The definition of a "defect" versus a "new request", and a defect-fixing period after handover — as a written agreement, not an oral understanding.

When comparing proposals, this clause is one reason a cheaper proposal is not necessarily cheaper: sometimes it simply includes less testing. How to align scope across proposals and what else to ask a vendor is in the guide to choosing a software house. How to choose a software house — and what to compare between proposals

Written acceptance criteria

An acceptance criterion is a sentence you can answer "yes" or "no" to after trying the system. It derives directly from the requirements — which is why a well-formed requirements document is a precondition for good criteria. If you are still before that document, the example in the requirements-document guide shows what a requirement at screen level looks like. An example of an app requirements document

Instead ofWriteWhy it is better
"Registration will work""A new user entering valid details receives a confirmation and lands on the home screen; a user entering an already registered email sees a message explaining it, not a generic error"It can be tried and answered yes/no, and includes an error state
"The system is fast""The list screen loads and shows results within a time agreed in advance, on the devices on the list, on a normal connection" — with the time set between the two parties, not copied from hereTurns a feeling into something measurable
"Appropriate permissions""A user in role X cannot see or open data belonging to a user in role Y; trying a direct link returns a no-permission message"Also checks the case where the user "tries to bypass"
These criteria are written before development, not after. A criterion written after the screen is built derives from what was built, not from what you wanted.

A staging environment: where testing happens

Staging is a copy of the system intended for testing: the same configuration as the live environment, but with test data and no real users. Without it, testing happens either on the developer's machine — where everything "works" — or on the live system, where a faulty test can send a message to a real customer or change real data.

QuestionWhy it matters
Is there a staging environment separate from the live one?Without separation, every test is a risk to the live system
Can you access it yourselves?Acceptance testing done only in the vendor's demo is a demo, not acceptance
What data does it hold?Representative test data allows real scenarios to be tested without exposing customer information
How does it connect to external services (payments, SMS, email)?Connecting a test environment to a real service may charge money or send messages. Ask the external provider whether it has a separate test mode
Who pays for the environment and who holds access to it after handover?An environment that stays with the vendor leaves you with nowhere to test future changes
Ask for a written answer to each question. If the answer to the last one is "we'll see", that is not an answer.

A marked example: a testing clause in a proposal

ItemExample wording
IncludedManual testing of every feature before each handover; automated tests for the core business logic; regression before each release; testing on the devices and browsers in the attached list
Not includedLoad testing (can be added as a separate stage based on expected user volume); external penetration testing
Vendor responsibilityTechnical scenarios, execution, defect logging and fixing, staging setup
Client responsibilityBusiness scenarios; acceptance testing of each build within ___ working days of delivery; approval or return in writing
Acceptance criteriaWritten for every feature before its development begins and approved in writing by the client
After acceptanceA defect found within ___ after handover that contradicts an approved criterion is fixed at no extra charge; a change to approved behaviour is a new request

What happens when testing missed something

Testing reduces risk; it does not remove it. Something will always be found after launch, so it is important to know in advance what happens then. A good agreement covers who receives the report and how, how severity is graded (a defect that blocks work versus a cosmetic one), and under which framework fixes are made — within a defined fix period or under a maintenance agreement. The software development page describes a bug after launch as not the end: someone handles it, within the scope and hours set in the maintenance agreement. How a software project is defined and delivered — including acceptance criteria per stage

What we do at this stage

Our service pages describe a defined scope delivered in stages with acceptance criteria for each stage, and testing on real devices in mobile projects. If you hold a proposal and are unsure what its testing clause includes — from another vendor or from us — you can bring it to a conversation and go through it using the tables in this guide. Custom software development — definition and delivery

// FAQ

Frequently asked questions

  • What is the difference between QA and testing?+
    In everyday conversation the two terms are used for the same thing, but QA (quality assurance) is broader: it includes the process that prevents defects — a clear specification, acceptance criteria, code review — and not only the checking done at the end. In a proposal, ask which of the two is meant and ask for a description of what is actually done.
  • Are automated tests required in every project?+
    Not in every project and not for every part. They pay off more in a system that will keep evolving, because they catch regressions on every change. In a short one-off product they are less essential. What matters is that the proposal says which parts have automated tests, and that they are delivered to you together with the code.
  • Who should carry out acceptance testing?+
    Someone who knows the business work the system is meant to serve — you or your representative, not the vendor. The vendor can guide and prepare scenarios, but the confirmation that the system does what you ordered should come from the side that ordered it. It is worth agreeing in advance how long you have to test and what happens afterwards.
  • What is the difference between a bug and a new request?+
    A bug is a state in which the system does not do what was defined and agreed. A new request is a change to what was defined. That is why written acceptance criteria are the central tool: without them there is no document to point to, and the dispute stays one memory against another. The definition and the period in which fixes are free of charge are worth agreeing in writing before work begins.
  • Do you need a staging environment even in a small project?+
    Almost always worth it. Even a small system can send a message, change a record or charge a card when tested on the live environment. A separate environment is how you test without risk and receive builds for approval before they go live. What decides it is not project size but what happens if a faulty test affects real data.
  • How do you ask for testing in a proposal without being technical?+
    Ask the four questions: which types of testing are included and which are not, who does what, against which criteria things are approved, and in which environment. A vendor who can answer right away in writing shows there is a process. A vendor who answers "everything is tested with us" without detail leaves you with no way to know what is tested.

Last reviewed:

By The OneZero team

// LET'S TALK

Building an MVP, SaaS, marketplace or AI-mobile product?

Make the architecture decision before you pick a framework by hype — it affects hiring, speed, burn, maintenance, scalability and future rewrites.